Send bank transactions from an automation

The import API takes bank transactions from n8n, Zapier or your own script instead of a file. It runs the same import as a statement upload: the lines land in Bank transactions and a line already sent is skipped.

Instead of uploading a file, let n8n, Zapier or a script send bank transactions straight to your books with a token.

Before you start

Steps

  1. Open Settings, Import API, and create a token named after the automation.

    Open in the app

  2. Copy the token now: it is shown once. Your automation sends it as a Bearer token.

  3. Post the account ID and its transactions to the endpoint. Lines already sent are skipped.

  4. Review the new lines in Bank transactions and post each to an account.

    Open in the app

What to send

Post JSON to the endpoint shown on the Import API page, with the header Authorization: Bearer <token>. The body names one bank or credit-card account by its ID and lists its transactions:

{
  "account_id": 12,
  "transactions": [
    { "date": "2026-09-01", "description": "Stripe payout", "amount": "1250.40", "reference": "po_1" },
    { "date": "2026-09-02", "description": "Coffee", "amount": "-4.50" }
  ]
}

Dates are YYYY-MM-DD. Amounts are signed decimals in your base currency: money in is positive, money out negative. reference is optional. One request takes up to 5,000 transactions.

Check it worked

A successful request answers 202 with the import run's ID, and the lines appear in Bank transactions once the run finishes. A malformed line is named in a 422 answer, for example transactions.3.amount, and nothing from that request is imported. A revoked or unknown token gets 401. More than 60 requests a minute from one token gets 429; wait and send again.