-
-
Home screen
-
Order loaded
-
Invoice generation wizard
-
Draft invoice generated
-
Edit payment schedule in square
-
Invoice created
-
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
Inspiration
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.
Main 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.
Highlighted features
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.
Main screen
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.
Invoice generation
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.
Main menu
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
We built it using the usual rapid development stack used at Eazyapps - react, antd, mobx, and nextjs.
Challenges we ran into
Nothing major.
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.
Once demand for app is established, publish app into the airtable apps marketplace and publish a sample base that uses the app to the airtable universe.
Submitted by
Eazyapps LLC
Log in or sign up for Devpost to join the conversation.