Typeflow.us In-depth Guide for Invoicing Airtable Base

This Airtable base simplifies client billing, invoicing, expense tracking in one place:

  • Automatic Sync of hourly rates, currencies, and clients links across tables.
  • One‑click invoicing that gathers unbilled hours and projects into a draft invoice.

Use this setup to cut repetitive data entry, avoid mistakes, and instantly see your income and costs by client.

Download the Airtable base here.

Tables and their relationships

Clients

Single source of truth for every customer our consultancy serves. Stores contact details, default billing settings (hourly rate & currency), and high-level financial roll-ups (lifetime revenue, unpaid balance). Child records such as billable hours, invoices and projects all link here.

TypeFieldKey Options / FormulaNotes
A
Client NamePrimary display name. Keep it short for nicer concatenations in other tables.
EmailUsed by automations to send invoices / hour logs.
PhoneOptional. International format recommended.
A
Address"Street × City × Country" all in one line; feeds the AI-split fields below.
Hourly ratePrecision 0Default rate applied to new Billable hours entries via lookup.
Billable Hours Email NotificationWhen checked, daily automation emails a summary of new hours to the client.
Address line 1Prompt "Extract Address Line 1 from {Address}"Auto-splits Address. Re-run if the master address changes.
Address line 2Prompt "Extract Address Line 2 from {Address}"Returns empty if none.
CityPrompt "Extract City from {Address}"Good for grouping/reporting by geography.
StatePrompt "Extract State from {Address}"Blank for non-federal countries.
CountryPrompt "Extract Country from {Address}"Good for grouping/reporting by geography.
InvoicesLinks to Invoices; multiple links allowed.
Billable hoursLinks to Billable hours; multiple links allowed.
Billed projectsLinks to Billed projects; multiple links allowed.
ExpensesLinks to Expenses; multiple links allowed.
Billable hours (total)Aggregation: SUM(values) on the Hours field
Billable hours (unpaid)Filter: link not tied to a Paid invoice
Projects (revenue) (total) (USD)Rollup of Price (USD) in child tableValues already converted to USD in the child table.
Revenue (total) (USD){Billable hours (revenue) (total) (USD)} + {Projects (revenue) (total) (USD)}Lifetime gross billings.
To be paid (USD){Billable hours (unpaid) (USD)} + {Projects (unpaid) (USD)}Outstanding balance visible to the AM team.
LogoAdd client logo once; mail-merge uses it on invoice PDFs (aim for < 200 KB SVG/PNG).

Relationships with Clients Table

Table Relationships Diagram

Invoices

Central ledger of every invoice issued to clients.

TypeFieldKey Options / FormulaNotes
InvoiceDATESTR({Issue Date}) & ' – ' & {Client}Primary field. Combines date + client name → stable human slug.
ClientSingle link, inverse field InvoicesChoosing a client auto-pulls currency & hourly rate to linked records.
Issue DateFormat: local lDrives payment terms & overdue flagging.
Status▫︎ Draft▫︎ Sent▫︎ Paid▫︎ OverdueUse automations to set Overdue when Sent > 30 days and not Paid; controls invoice lifecycle.
Total{Billable hours (total)} + {Projects (total)}Sum of rolled-up subtotals; currency shown separately.
Billable hoursAttach any work-log entries to be billed on this invoice.
Billed projectsAttach fixed-price deliverables.
Billable hours (total)Rollup → Hours field, aggregation SUM(values)Aggregates total billable amount from linked hours.
Projects (total)Rollup → Price field, aggregation SUM(values)Aggregates total amount from linked projects.
Currency (from Client)Lookup from Client → CurrencyFor auditing: shows current value on the Client record.

Relationships with Invoices Table

Table Relationships Diagram

Billable hours

Granular work‑log ledger. Each record captures what task was done, for whom, when, how long, and the monetary value to be billed. These entries roll up into invoices.

TypeFieldKey Options / FormulaNotes
A
TaskShort description ("API integration", "Sprint planning meeting").
DateFormat lDefaults to today; drives weekly / monthly reporting.
HoursFormat h:mmAirtable stores seconds under the hood.
Tags▫︎ Meeting▫︎ Development▫︎ ResearchCategorise time for later analysis; add more tags freely.
ClientMust be set first – triggers default rate & currency lookups.
Hourly rate (snapshot)Copied once from Client on record creation; changing the Client's rate later won't update old logs.
Billable{Hourly rate} * ({Hours}/3600)Shows value in native currency.
Billable (USD)IF({Currency}='EUR',{Billable}*1.136,IF({Currency}='USD',{Billable},BLANK()))Quick FX conversion for consolidated P&L.
InvoiceAttach the entry once you raise an invoice.
Invoice Statusfrom Invoice → StatusPropagates Draft/Sent/Paid/Overdue.
PaidIF({Invoice Status}='Paid', TRUE(), FALSE())Tick auto-updates when invoice is paid.
DetailsMeeting notes / JIRA ticket link etc.
Cashflow itemsBack-references for cash-flow roll-up.
Hourly rate (from Client)Lookup from Client → Hourly rateFor auditing: shows current value on the Client record.
Currency (from Client)Lookup from Client → CurrencyFor auditing: shows current value on the Client record.

Relationships with Billed Hours Table

Table Relationships Diagram

Billed projects

Tracks fixed‑scope deliverables (websites, audits, research reports) that are billed at a lump‑sum price rather than hourly. Projects can be attached to invoices, and analysed alongside time‑based work.

TypeFieldKey Options / FormulaNotes
A
NameShort project slug. Combine client + deliverable if helpful ("ACME – SEO audit").
Delivery DateFormat lMarks completion milestone; used for revenue recognition & cash-flow timing.
PricePrecision 0Enter in native currency below.
Price (USD)IF({Currency}='EUR',{Price}*1.136,IF({Currency}='USD',{Price},BLANK()))Converts into USD for consolidated reporting.
ClientDrives currency defaults via lookup; used for grouping dashboards.
InvoiceAttach once the project is billed.
Invoice Statusfrom Invoice → StatusReflects billing state (Draft / Sent / Paid / Overdue).
PaidIF(ARRAYJOIN({Invoice Status}, '')='Paid', TRUE(), FALSE())Auto-checks when linked invoice is paid.
Currency (from Client)Lookup from Client → CurrencyShows the client's default currency for QA.
Cashflow itemsAuto-generated via automation after invoice approval.

Relationships with Billed Projects Table

Table Relationships Diagram

Invoice Automation

We won't share in details how to automate the PDF generation. The goal of this tutorial is to learn you how to implement correctly your Airtable base to generate invoices properly. But we have two main methods to generate PDFs with Typeflow.us. Of course, first you need to create a flow in Typeflow.us. You can follow this tutorial here dedicated to this topic: How to create an invoice with Typeflow.us, or a general tutorial here.

Classic implementation

With the classic implementation you can generate a PDF from a button. You need to use the URL given by your Typeflow.us flow and import it in a button. It's the easiest way to generate PDFs. But of course, it still requires human intervention to generate the PDF.

Airtable Automation

This time you can use the Airtable Automation. It's better if you want to fully automate the process of generating PDFs. For example, you can trigger the PDF generation if the invoice status is set to "Sent". It's also possible to trigger action post-generation, for example, to send the PDF to the client.

Airtable Extension

We have an airtable Extension. This one is particularly helpful to generate multiple PDFs at once. Directly from Airtable, you can pick the records you want to generate PDFs for and trigger the PDF generation. You can find our tutorial here.

API - Perfect for Zapier / Make

We have our own API for generating PDF based on Airtable data. You can use it to generate PDFs. Please find our API documentation here.

Was this page helpful?