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.

Plans. The browser converter is free and runs client-side. The hosted Convert API is part of Pro ($29/mo). The /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

MethodPathAuthPurpose
POST/convertPro keyTransactions to .QBO/.QFX/.OFX/CSV
POST/validatePublicCheck a file before importing
POST/mcpKey for convertMCP 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

FieldTypeNotes
transactionsarrayRequired. Each item: date, amount, description, optional memo, checkNumber. Max 100000.
formatstringqbo (default), qfx, ofx, or csv (QuickBooks 3-column CSV).
currencystring3-letter ISO code (e.g. USD, GBP, EUR). Default USD.
accountTypestringCHECKING, SAVINGS, CREDITCARD, MONEYMRKT.
bankIdstringRouting number, improves QuickBooks Desktop matching.
accountIdstringTags the statement to an account.
responseTypestringjson (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" }'

Convert in volume

Get an API key with Pro and automate your monthly close.

Get Pro

Related