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

info@eazyapps.dev

Contact us

Built With

Share this project:

Updates