Invoice generation wizard
Draft invoice generated
Edit payment schedule in square
Invoice payment page with links to product images
Add external wire transfer payment in square
Fully paid invoice in app
Invoice with discounts due to payments made in a cancelled invoice
Initially built for an Eazyapps customer that was looking for a way to easily create invoices from their Airtable data that can be paid online or via wire transfers and where payments made are saved back to Airtable.
One of the requirements was to support invoices that can be split into multiple payments. Square are the only ones we found that properly support that with their payment schedule feature.
What it does
See Project Media bellow for app screenshots demonstrating the app's screens and features.
Create invoices from airtable data that exist in the Sales and LineItems tables.
Using square webhooks, all payments made against the invoice, including online payments as well as payments added manually via the square dashboard are saved back to the Transactions table.
Partially paid invoices can be cancelled and a new invoice generated for the same order will detail and discount the payments already made.
Shortened url links to product images are appended to the line item description, if they exist in the LineItems table.
The main screen displays the order ID, Status, PO#, Invoice#, total, total paid to date, and the square invoice status.
It also displays:
The square payment schedule and the status of each payment.
The square payments made against the invoice and their source.
During invoice generation, the user can:
Set a square customer - a contact from the Contacts table that will be the invoice's square customer. The square customer will be either created or updated, if an invoice was previously generated for them.
Set an optional billing address from the Addresses table that will become the square customer's address.
Set an optional shipping address from the Addresses table that will be displayed in the invoice's ShipTo custom field.
Set an optional tax rate and tax name to add to the invoice. The user can also check within the app each line item's Taxable field to add taxes for that line item.
Add new line items to the order from within the app.
The invoice description will also include the airtable order # as well as an optional PO (Purchase Order), if received from the customer.
The main app menu includes the following options, depending on square invoice status:
- Generate invoice
- Edit invoice in the square dashboard, to add a payment schedule, for example.
- Create invoice
- Add payment in the square dashboard, to record a wire transfer payment accepted externally, for example.
- View invoice payment page
- Delete draft invoice
- Cancel invoice
- View fully paid invoice in the square dashboard.
How we built it
Challenges we ran into
Accomplishments that we're proud of
That we were able to develop a very mature and advanced invoicing software solution within just a few months.
What we learned
A lot of the nitty gritty details of the square developer platform and api.
What's next for Eazysquare for Airtable
Add an option to send invoices, in addition to sharing them manually.
Once square supports requesting a shipping address via the api, allow selecting this option during invoice generation and save the shipping address back to Airtable.
Once tax related issues are resolved with discounts, add taxes as OrderLineItemTax.
Add app settings that include airtable table and field mappings to support airtable bases with different structures and names.
Market app to airtable and square customers as well as to customers that are looking to move away from current invoicing software to a much more flexible solution based on airtable and square.