The Scenario
It's month-end close and your finance manager has just handed you a sheet with 60 vendor invoices that need to go into Quaderno as expenses before the books close tonight. The sheet has been sitting in their inbox for three days. Column A has the vendor contact ID, column B has the expense description, column C has the amount in USD, column D has the expense date. The month closes in four hours.
The bad version:
- Open Quaderno, click New Expense, paste the contact ID from column A, enter the description from column B, type the amount from column C, set the date from column D, click save, copy the returned expense ID, switch back to the sheet, paste it into column E
- Do this 59 more times while watching the clock
- Notice at row 40 that three dates in column D are formatted as MM/DD/YYYY but Quaderno expects YYYY-MM-DD, which means those three expenses silently dated to the wrong period before you caught it
The books close regardless of whether the data entry is finished. An incomplete expense record means your P&L for the month is wrong.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent inside your Google Sheet that reads your vendor data and pushes expenses into Quaderno for you.
Create a Quaderno expense for each row in this sheet — column A is contact ID, B is description, C is amount in USD, D is expense date — write the returned expense ID to column E
What You Get
- One Quaderno expense is created per row using the contact ID, description, amount, and date from each row
- The returned expense ID writes to column E as each expense completes
- Date format inconsistencies are normalized before the API call — MM/DD/YYYY and DD/MM/YYYY both resolve correctly
- Rows where the contact ID doesn't match a known Quaderno contact are flagged in column F so you can fix and re-run just those rows
What If the Data Is Not Quite Ready
The amounts are in mixed currencies — some USD, some GBP, some EUR
Create a Quaderno expense for each row — contact ID in A, description in B, amount in C, currency code in D, expense date in E — write the expense ID to column F
Some rows are missing contact IDs — the vendor name is in column G instead
For rows where column A is blank, look up the Quaderno contact ID by searching for the vendor name in column G, fill column A with the result, then create the expense and write the expense ID to column E; flag any vendors not found in column F
I only want to push rows where the amount is over 500 USD
Create Quaderno expenses only for rows where column C is greater than 500 — use contact ID in A, description in B, amount in C, date in D — write the expense ID to column E and skip the rest
Normalize dates, create all expenses, and flag missing contacts in one shot
For each row: convert the date in column D to YYYY-MM-DD format and update column D; then if column A has a valid contact ID, create a Quaderno expense using columns A through D and write the expense ID to column E; if column A is blank, write Missing Vendor to column F
Try It
Get the 7-day free trial of SheetXAI and open the Google Sheet where your vendor invoices are staged for month-end close, then ask it to push them all to Quaderno as expenses. Also see: bulk creating invoices from a sheet, and the hub overview of all Quaderno connection methods.
