Convert API
Turn transaction data into QuickBooks .QBO, Quicken .QFX or generic .OFX files from your own scripts, integrations, or AI agents. Built for bookkeepers, accounting firms and developers who convert in volume.
/validate endpoint is free and open.Base URL and authentication
Base URL: https://api.qbomaker.com. Authenticate /convert with your Pro key as a Bearer token. Validation is public.
Authorization: Bearer QBOM-PLUS-XXXX-XXXX-XXXX
Endpoints
| Method | Path | Auth | Purpose |
|---|---|---|---|
| POST | /convert | Pro key | Transactions to .QBO/.QFX/.OFX/CSV |
| POST | /validate | Public | Check a file before importing |
| POST | /mcp | Key for convert | MCP JSON-RPC (tools/list, tools/call) |
Full machine spec: OpenAPI · MCP server card.
Convert
Send an array of transactions. Amounts are signed (negative for debits, positive for credits). Dates accept any common format.
curl -X POST https://api.qbomaker.com/convert \
-H "Authorization: Bearer QBOM-PLUS-XXXX-XXXX-XXXX" \
-H "Content-Type: application/json" \
-d '{
"format": "qbo",
"accountType": "CHECKING",
"bankId": "021000021",
"transactions": [
{ "date": "01/05/2024", "amount": -42.50, "description": "Coffee Shop" },
{ "date": "01/06/2024", "amount": 2000.00, "description": "Payroll" }
]
}'
The response includes the generated file plus a validation summary. transactions is the number of rows emitted; skipped counts rows dropped for an unreadable date or amount, and inputCount is the total you sent (so you can detect silent data loss):
{
"format": "qbo",
"transactions": 2,
"skipped": 0,
"inputCount": 2,
"valid": true,
"issues": [],
"file": "OFXHEADER:100\nDATA:OFXSGML\n..."
}
Pass "responseType": "file" to receive the raw .QBO as a downloadable attachment instead of JSON (skipped rows are then reported in the X-Skipped-Transactions response header).
Errors return a JSON body { "error": "..." } with status 400 (bad request, e.g. invalid format/accountType or a non-object transaction), 401 (missing/invalid Pro key), or 413 (more than 100000 transactions).
Request fields
| Field | Type | Notes |
|---|---|---|
transactions | array | Required. Each item: date, amount, description, optional memo, checkNumber. Max 100000. |
format | string | qbo (default), qfx, ofx, or csv (QuickBooks 3-column CSV). |
currency | string | 3-letter ISO code (e.g. USD, GBP, EUR). Default USD. |
accountType | string | CHECKING, SAVINGS, CREDITCARD, MONEYMRKT. |
bankId | string | Routing number, improves QuickBooks Desktop matching. |
accountId | string | Tags the statement to an account. |
responseType | string | json (default) returns a JSON wrapper with the file plus a validation summary; file returns the raw document as an attachment. |
Validate
Free and open. Posts a file's text, returns structural checks, transaction count, and duplicate-ID detection.
curl -X POST https://api.qbomaker.com/validate \
-H "Content-Type: application/json" \
-d '{ "content": "OFXHEADER:100\nDATA:OFXSGML\n..." }'
MCP server
The API is also an MCP (Model Context Protocol) server, so AI assistants can call it as a tool. Point your MCP client at https://api.qbomaker.com/mcp. It exposes convert_transactions_to_qbo and validate_ofx (see the server card).
curl -X POST https://api.qbomaker.com/mcp \
-H "Content-Type: application/json" \
-d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }'