Push and pull accounting data from external systems. Authenticate with a per-company API key, then send standard HTTP requests to the function endpoint.
Every request must include an x-api-key header. Generate a key from Settings → API Access inside your Flint Books account. The key is scoped to a single company — it can only read and modify that company's records.
curl -H "x-api-key: <YOUR_API_KEY>" "<YOUR_FUNCTION_URL>?resource=transactions"
All requests go to a single endpoint — the deployed URL of the ledgerflowApi backend function. Find it under Dashboard → Code → Functions → ledgerflowApi. The desired resource is selected via a resource query param (GET / DELETE) or in the JSON body (POST / PUT).
transactionsTransactionBank feed and manual ledger entries
invoicesInvoiceSales and purchase invoices
clientsClientCustomer / client contacts
suppliersSupplierSupplier contacts
expensesExpenseEmployee-submitted expenses
vat_returnsVatReturnPeriod VAT returns
bank_accountsBankAccountConnected and manual bank accounts
| Method | Purpose | Where to specify |
|---|---|---|
| GET | List records or get one by id | ?resource=&id=&limit=&cursor=&filters |
| POST | Create a new record | body: { resource, data } |
| PUT | Update an existing record | body: { resource, id, data } |
| DELETE | Delete a record | ?resource=&id= |
List responses return up to limit records (max 500) and a cursor:
{
"data": [ /* records */ ],
"count": 50,
"has_more": true,
"next_cursor": "REC_ID_STR"
}When has_more is true, request the next page by addingcursor=<next_cursor> to the URL.
# List transactions (with pagination) curl -H "x-api-key: <YOUR_API_KEY>" \ "<YOUR_FUNCTION_URL>?resource=transactions&limit=50" # Filter by status / type curl -H "x-api-key: <YOUR_API_KEY>" \ "<YOUR_FUNCTION_URL>?resource=transactions&status=uncategorised&transaction_type=debit"
# Get a single transaction curl -H "x-api-key: <YOUR_API_KEY>" \ "<YOUR_FUNCTION_URL>?resource=transactions&id=<ID>"
# Create a transaction
curl -X POST -H "x-api-key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"resource": "transactions",
"data": {
"date": "2026-07-29",
"description": "Office supplies",
"amount_pence": 5000,
"transaction_type": "debit",
"status": "uncategorised"
}
}' \
"<YOUR_FUNCTION_URL>"# Update an invoice to paid
curl -X PUT -H "x-api-key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"resource": "invoices",
"id": "<INVOICE_ID>",
"data": { "status": "paid" }
}' \
"<YOUR_FUNCTION_URL>"# Delete a client curl -X DELETE -H "x-api-key: <YOUR_API_KEY>" \ "<YOUR_FUNCTION_URL>?resource=clients&id=<CLIENT_ID>"
# Pagination — pass next_cursor to fetch the next page curl -H "x-api-key: <YOUR_API_KEY>" \ "<YOUR_FUNCTION_URL>?resource=transactions&limit=100&cursor=<next_cursor>"
| Status | Meaning |
|---|---|
| 400 | Malformed body or missing resource |
| 401 | Missing or invalid API key |
| 404 | Record not found, or belongs to another company |
| 405 | Method not allowed |
| 500 | Internal error |
Flint Books API · provided by Flint Digital