QuickBooks is the expense management backbone for millions of small businesses. The problem: getting receipts into QuickBooks is still largely manual — photograph, open app, type amount, pick vendor, select account, save.
With the ReceiptConverter API, you can skip every one of those steps.
How it works
- You scan a receipt (or it arrives as an email attachment, a Drive upload, etc.)
- ReceiptConverter parses it into structured JSON — vendor, amount, date, line items
- QuickBooks Online API (or a no-code connector) creates the expense automatically
The result: receipts flow from your phone → accounting software without you touching a keyboard.
Option 1: Make (fastest setup, ~10 minutes)
Make has a native QuickBooks Online module that maps cleanly to ReceiptConverter's response schema.
Scenario: New file in Google Drive /Receipts → parse → create QuickBooks expense
-
Trigger: Google Drive → Watch Files
Monitor your/Receiptsfolder for new files -
Module: HTTP → Make a request
- Method:
POST - URL:
https://receiptconverter.com/api/v1/convert - Header:
Authorization: Bearer sk_live_your_key - Body type:
multipart/form-data - Field:
file=[1. File Binary Content]
- Method:
-
Module: QuickBooks Online → Create Expense
- Payee:
{{2.data.vendor}} - Amount:
{{2.data.total}} - Date:
{{2.data.date}} - Payment account: your business checking or card
- Memo:
Auto-imported by ReceiptConverter
- Payee:
That's the complete workflow. Make will run it whenever a new file appears in the folder.
Option 2: Zapier
Scenario: Gmail receipt email → parse → create QuickBooks Online expense
-
Trigger: Gmail → New Attachment
Filter for emails with a "receipts" label -
Action: Webhooks by Zapier → POST
- URL:
https://receiptconverter.com/api/v1/convert - Header:
Authorization→Bearer sk_live_your_key - Payload type:
form - File:
[Attachment from step 1]
- URL:
-
Action: QuickBooks Online → Create Expense
- Payee:
data__vendor - Total amount:
data__total - Transaction date:
data__date
- Payee:
Note: Zapier uses double underscores to represent nested JSON paths.
data.vendorbecomesdata__vendorin the field picker.
Option 3: Direct API integration (Node.js)
For developers building custom bookkeeping tools or internal expense systems:
import { readFileSync } from "node:fs";
const RC_KEY = process.env.RECEIPTCONVERTER_API_KEY;
const QBO_TOKEN = process.env.QUICKBOOKS_ACCESS_TOKEN; // OAuth 2.0
const COMPANY_ID = process.env.QUICKBOOKS_COMPANY_ID;
async function parseReceipt(filePath) {
const file = new File([readFileSync(filePath)], "receipt.jpg");
const form = new FormData();
form.append("file", file);
const res = await fetch("https://receiptconverter.com/api/v1/convert", {
method: "POST",
headers: { Authorization: `Bearer ${RC_KEY}` },
body: form,
});
if (!res.ok) throw new Error(`RC: ${res.status}`);
return (await res.json()).data;
}
async function createQBOExpense(receipt) {
const body = {
TotalAmt: receipt.total,
PaymentType: "Cash",
TxnDate: receipt.date,
EntityRef: { name: receipt.vendor },
Line: [{
Amount: receipt.total,
DetailType: "AccountBasedExpenseLineDetail",
AccountBasedExpenseLineDetail: {
AccountRef: { name: mapCategory(receipt.category) },
},
}],
};
const res = await fetch(
`https://quickbooks.api.intuit.com/v3/company/${COMPANY_ID}/purchase`,
{
method: "POST",
headers: {
Authorization: `Bearer ${QBO_TOKEN}`,
"Content-Type": "application/json",
Accept: "application/json",
},
body: JSON.stringify(body),
}
);
if (!res.ok) throw new Error(`QBO: ${res.status}`);
return res.json();
}
// Map ReceiptConverter categories → QuickBooks account names
function mapCategory(category) {
const map = {
"Food & Drink": "Meals & Entertainment",
"Travel": "Travel",
"Office": "Office Supplies & Software",
"Software": "Office Supplies & Software",
"Gas": "Auto",
};
return map[category] ?? "Other Business Expenses";
}
// Main
const receipt = await parseReceipt("./lunch.jpg");
const expense = await createQBOExpense(receipt);
console.log("Created QBO expense:", expense.Purchase.Id);
See the full QuickBooks integration guide for more, including bulk imports and OAuth setup.
What gets mapped
| ReceiptConverter field | QuickBooks field |
|-----------------------|------------------|
| data.vendor | Payee / Vendor name |
| data.total | Amount |
| data.date | Transaction Date |
| data.category | Account (mapped) |
| data.taxes[0].amount | Tax amount |
| data.payment_method | Payment account (if parsed) |
Frequently asked questions
Does QuickBooks Online have receipt scanning built in?
Yes — the mobile app has basic OCR. But it struggles with non-standard layouts, multilingual receipts, faded thermal paper, and PDFs. ReceiptConverter's GPT-4o Vision engine handles these significantly better.
What about QuickBooks Desktop?
QuickBooks Desktop doesn't have a public REST API like QBO. You can export ReceiptConverter data to CSV and import it using QuickBooks' IIF import feature.
Can I import months of old receipts at once?
Yes — use the batch processing guide to process a folder of receipts in bulk, then import the resulting CSV into QuickBooks.
Get your API key → · QuickBooks docs guide · All integrations