# Send Paige invoices to QuickBooks Online with Zapier or Make

Build the Zap or Make scenario that watches Paige's SFTP export folder, finds or creates the vendor, creates the bill in QuickBooks Online from Paige's extracted fields, and attaches the PDF — so every invoice Paige finishes becomes a bill on its own.

Product: paige · Audience: user · Time: 1 hour · Last verified: 2026-09-05

Canonical: https://help.ademero.com/paige/integrations/send-paige-invoices-to-quickbooks-online-with-zapier-or-make

**At the end of this guide, every invoice Paige finishes becomes a bill in QuickBooks Online within minutes — vendor matched, dates and total filled, invoice number recorded, and the PDF attached to the bill — with no data entry.**

The automation is: *SFTP trigger → keep only the data file → read the values → find or create the vendor → create the bill → attach the PDF.* Paige uploads the PDF before the data file, so the PDF is always there when the automation fires.

## Step 1 — Point Paige at your SFTP server

1. In Paige, open **Settings** (the gear at the bottom of the left menu — administrators only), pick the scan job, and choose **Export**.
2. Click the **FTP** card. Enter the **FTP Address**, **Port** `22`, **Username**, **Password**, and in **FTP Folder Path** a folder for this scan job, such as `/paige/invoices`.
3. Click **Test Connection**. **What you should see:** `FTP connection successful!` Connect — `Connected to FTP Server!` and a green **Connected** label.
4. Turn on **Enable Auto Export**. Under **Auto Export Settings**, pick your invoice type under **Document Types**, set **Auto Field Entry Complete** to **Yes**, and set **Human Reviewed** to **Reviewed** — a bill created from a misread total is a bill someone has to fix, so let a person glance at each invoice in Paige first. Click **Save**.

Open port 22 on your firewall to Paige's address ranges — [Outbound IP ranges for firewall allow-lists](/paige/document-processing/outbound-ip-ranges-for-firewall-allow-lists).

## Step 2 — Make sure Paige's fields match what a bill needs

A QuickBooks bill needs a vendor, a date, and at least one line with an account and an amount. Check the invoice document type in Paige has fields for:

| Bill needs | Paige field (name it whatever you like) |
| --- | --- |
| Vendor | `Vendor Name` — the name as it appears in QuickBooks' vendor list, or the automation will create a new vendor with the spelling on the invoice |
| Transaction date | `Invoice Date` |
| Due date | `Due Date` (optional; QuickBooks applies the vendor's terms if absent) |
| Bill number | `Invoice Number` |
| Amount | `Total` |
| Line items | Optional — a line-item field with description, quantity, and amount columns if you want itemized bills |

Values export as text exactly as they appear on the page. The automation converts dates and strips currency symbols.

## Step 3 — Build the automation

### Zapier

1. **Trigger:** **SFTP by Zapier → New or Updated File** (connection: **Host**, **Username**, **Port Number** 22, **Password**), folder = the scan job's folder.
2. **Filter by Zapier:** *File Name* **(Text) Ends with** `.json`.
3. **Code by Zapier → Run Javascript**, `file` mapped to the trigger's file:
   
   ```javascript
   const doc = await (await fetch(inputData.file)).json();
   const f = doc.fields;
   return {
     pdf_file: doc.metadata.pdf_file,
     vendor: f["Vendor Name"],
     invoice_number: f["Invoice Number"],
     invoice_date: f["Invoice Date"],
     due_date: f["Due Date"] || "",
     total: (f["Total"] || "").replace(/[^0-9.\-]/g, "")
   };
   ```

4. **QuickBooks Online → Find Vendor**, searching by **Name** = `vendor` from step 3. Turn on **Create QuickBooks Online Vendor if it doesn't exist yet?** so unknown vendors are created instead of failing the Zap.
5. **QuickBooks Online → Create Bill (Account Based).** Map **vendor** to the found vendor, **Transaction Date** to `invoice_date`, **due_date** to `due_date`, **Bill Number** to `invoice_number`, and one line with **account** set to the expense account you post invoices to and **amount** = `total`. Put the invoice number in **memo** too; it's handy in reports.
6. **SFTP by Zapier → Download File**, path = the folder plus `pdf_file`.
7. **QuickBooks Online → Attach File(s) or Note.** **Attachment Type** *File*; the record is the bill from step 5; the file is the download from step 6.
8. Turn the Zap on.

> **NOTE:** Zapier's **Find Vendor** matches on the exact name. If your invoices spell vendors inconsistently, keep **Human Reviewed** on in Paige and have the reviewer correct the vendor field to the QuickBooks spelling — one edit in Paige beats a duplicate vendor in QuickBooks.

### Make

1. **SFTP → Watch files in a folder** (connection: **Host**, **Port** 22, **Auth Type** *Username and Password*), pointed at the scan job's folder.
2. Filter: *File name* **Ends with** `.json`.
3. **SFTP → Get a file**, then **JSON → Parse JSON** on its data. Run once with a real file so Make learns the fields.
4. **QuickBooks → Search Vendors** by name; add a router so that if none is found, **QuickBooks → Create a Vendor** runs first.
5. **QuickBooks → Create a Bill.** Map the vendor, `parseDate()` of the invoice date and due date, the invoice number as the document number, and one line with your expense account and `parseNumber()` of the total.
6. **SFTP → Get a file** with path = folder plus parsed `metadata.pdf_file`, then **QuickBooks → Upload a File** (attachment) linked to the bill from module 5.
7. Set the schedule and turn the scenario on.

## Step 4 — Test it

1. Process one invoice through the scan job in Paige, review it, and wait for the export.
2. Check the automation's run history: one run, every step green.
3. In QuickBooks Online, open **Expenses > Bills** (or **Vendors > Bills**). **What you should see:** the new bill with the vendor, dates, bill number, and total from the invoice, and the PDF under **Attachments** on the bill. Open the attachment — the text is selectable.

Then point the real invoices at it.

## When it doesn't work

| Symptom | Where to look |
| --- | --- |
| The automation never runs | Wrong folder, or files landed in a subfolder. |
| Runs four times per invoice | The `.json` filter is missing. |
| Create Bill fails on the date | Paige's date text isn't in a form QuickBooks accepts. Convert it (Zapier **Formatter → Date/Time → Format**, Make `parseDate()`) to `YYYY-MM-DD`. |
| Create Bill fails on the amount | A currency symbol or thousands separator slipped through. The Code step above strips them; check the field name matches your Paige field exactly. |
| Duplicate vendors appear | The invoice spells the vendor differently from QuickBooks. Fix the spelling in Paige during review; merge the duplicates in QuickBooks. |
| Bill created but no attachment | The PDF path is wrong — it must be the folder plus `pdf_file` from the data, not the trigger file's name. |
| Nothing arrives from Paige | Auto-export criteria aren't met (review, field values, document type), or the invoice was processed before you enabled auto export. Export once from the **Documents** page with **Export** and tick **FTP**. |

If the Paige side is the problem, contact Ademero support with the scan job name and the message from **Test Connection**.

## What's next

- [Connect Paige to QuickBooks Online](https://help.ademero.com/paige/integrations/connect-paige-to-quickbooks-online)
- [Write extraction guidance the AI can follow](https://help.ademero.com/paige/document-processing/write-extraction-guidance-the-ai-can-follow)
