Developer
Bank feeds
Push statement lines for reconciliation.
Statement lines pushed here enter the same store the statement importer uses — reference data for reconciliation, never a ledger entry. From there the business matches, classifies or posts them exactly as with an uploaded statement.
bash
# which account?
curl https://api.trabalance.com/api/v1/bank-feeds/accounts -H "Authorization: Bearer tk_live_…"
# push lines
curl -X POST https://api.trabalance.com/api/v1/bank-feeds/<accountId>/lines \
-H "Authorization: Bearer tk_live_…" -H "Content-Type: application/json" \
-d '{ "lines": [
{ "date": "2026-08-25", "description": "POS 1234 ACME", "amount": 40.00, "direction": "in", "running_balance": 10240.00 },
{ "date": "2026-08-25", "description": "BANK FEE", "amount": 2.50, "direction": "out" }
], "ending_balance": 10237.50 }'| Field | Required | Notes |
|---|---|---|
| lines[].date | Yes | YYYY-MM-DD |
| lines[].description | Yes | ≤ 512 characters |
| lines[].amount | Yes | Positive magnitude |
| lines[].direction | Yes | `in` (money in) or `out` |
| lines[].running_balance | No | |
| ending_balance | No |
Response 201: { import_id, stored, attempted, skipped, refused: [{ index, reason }] }. Lines are deduplicated per account by date, amount, direction and description — a re-push returns them under refused with the reason, never as silent drops.
ℹ️Scope
finance_banking:create to push, finance_banking:read to list accounts. Up to 5,000 lines per call.