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.
Type | Field | Key Options / Formula | Notes |
---|---|---|---|
Client Name | — | Primary display name. Keep it short for nicer concatenations in other tables. | |
— | Used by automations to send invoices / hour logs. | ||
Phone | — | Optional. International format recommended. | |
Address | — | "Street × City × Country" all in one line; feeds the AI-split fields below. | |
Hourly rate | Precision 0 | Default rate applied to new Billable hours entries via lookup. | |
Billable Hours Email Notification | — | When checked, daily automation emails a summary of new hours to the client. | |
Address line 1 | Prompt "Extract Address Line 1 from {Address} " | Auto-splits Address. Re-run if the master address changes. | |
Address line 2 | Prompt "Extract Address Line 2 from {Address} " | Returns empty if none. | |
City | Prompt "Extract City from {Address} " | Good for grouping/reporting by geography. | |
State | Prompt "Extract State from {Address} " | Blank for non-federal countries. | |
Country | Prompt "Extract Country from {Address} " | Good for grouping/reporting by geography. | |
Invoices | — | Links to Invoices; multiple links allowed. | |
Billable hours | — | Links to Billable hours; multiple links allowed. | |
Billed projects | — | Links to Billed projects; multiple links allowed. | |
Expenses | — | Links 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 table | Values 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. | |
Logo | — | Add client logo once; mail-merge uses it on invoice PDFs (aim for < 200 KB SVG/PNG). |
Relationships with Clients Table
Invoices
Central ledger of every invoice issued to clients.
Type | Field | Key Options / Formula | Notes |
---|---|---|---|
Invoice | DATESTR({Issue Date}) & ' – ' & {Client} | Primary field. Combines date + client name → stable human slug. | |
Client | Single link, inverse field Invoices | Choosing a client auto-pulls currency & hourly rate to linked records. | |
Issue Date | Format: local l | Drives payment terms & overdue flagging. | |
Status | ▫︎ Draft▫︎ Sent▫︎ Paid▫︎ Overdue | Use 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 hours | — | Attach any work-log entries to be billed on this invoice. | |
Billed projects | — | Attach 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 → Currency | For auditing: shows current value on the Client record. |
Relationships with Invoices Table
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.
Type | Field | Key Options / Formula | Notes |
---|---|---|---|
Task | — | Short description ("API integration", "Sprint planning meeting"). | |
Date | Format l | Defaults to today; drives weekly / monthly reporting. | |
Hours | Format h:mm | Airtable stores seconds under the hood. | |
Tags | ▫︎ Meeting▫︎ Development▫︎ Research | Categorise time for later analysis; add more tags freely. | |
Client | — | Must 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. | |
Invoice | — | Attach the entry once you raise an invoice. | |
Invoice Status | from Invoice → Status | Propagates Draft/Sent/Paid/Overdue. | |
Paid | IF({Invoice Status}='Paid', TRUE(), FALSE()) | Tick auto-updates when invoice is paid. | |
Details | — | Meeting notes / JIRA ticket link etc. | |
Cashflow items | — | Back-references for cash-flow roll-up. | |
Hourly rate (from Client) | Lookup from Client → Hourly rate | For auditing: shows current value on the Client record. | |
Currency (from Client) | Lookup from Client → Currency | For auditing: shows current value on the Client record. |
Relationships with Billed Hours Table
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.
Type | Field | Key Options / Formula | Notes |
---|---|---|---|
Name | — | Short project slug. Combine client + deliverable if helpful ("ACME – SEO audit"). | |
Delivery Date | Format l | Marks completion milestone; used for revenue recognition & cash-flow timing. | |
Price | Precision 0 | Enter in native currency below. | |
Price (USD) | IF({Currency}='EUR',{Price}*1.136,IF({Currency}='USD',{Price},BLANK())) | Converts into USD for consolidated reporting. | |
Client | — | Drives currency defaults via lookup; used for grouping dashboards. | |
Invoice | — | Attach once the project is billed. | |
Invoice Status | from Invoice → Status | Reflects billing state (Draft / Sent / Paid / Overdue). | |
Paid | IF(ARRAYJOIN({Invoice Status}, '')='Paid', TRUE(), FALSE()) | Auto-checks when linked invoice is paid. | |
Currency (from Client) | Lookup from Client → Currency | Shows the client's default currency for QA. | |
Cashflow items | — | Auto-generated via automation after invoice approval. |
Relationships with Billed Projects Table
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.