ReconbankerReconbanker
API Reference

Accounts

Endpoints to manage your accounts, their settings, bank movements, and on-demand scrapes.

Accounts

Use these endpoints to manage the bank accounts you have enrolled in Reconbanker, change their settings, inspect their movements, and trigger scrapes on demand. All endpoints require Authorization: Bearer <jwt>.

List accounts

Use this endpoint to list every account you have enrolled.

GET /accounts

Response 200 OK:

[
  {
    "id": "uuid",
    "bank": "itau",
    "name": "Operating account",
    "status": "active",
    "mode": "reconcile"
  }
]

mode falls back to "reconcile" for accounts that have no settings saved yet.

Create an account

Use this endpoint to enroll a new bank account.

POST /accounts
Content-Type: application/json

Request body:

{
  "bankId": "uuid",
  "name": "Operating account"
}
  • bankId - required.
  • name - required.

Responses:

  • 201 Created - returns the new account.
  • 400 Bad Request - { "error": "bankId and name are required" }

Get one account

Use this endpoint to fetch a single account by id.

GET /accounts/:accountId

Response 200 OK:

{
  "id": "uuid",
  "bank": "itau",
  "name": "Operating account",
  "status": "active"
}

404 Not Found when the account does not exist.

Delete an account

Use this endpoint to remove an account. You must repeat the account's current name in the request body. This is a safety check so you do not delete the wrong one by mistake.

DELETE /accounts/:accountId
Content-Type: application/json

Request body:

{ "confirmation_name": "Operating account" }

Responses:

  • 204 No Content - deleted.
  • 400 Bad Request - { "error": "confirmation_name is required" }

Get account settings

Use this endpoint to read every setting on an account.

GET /accounts/:accountId/config

Response 200 OK:

{
  "id": "uuid",
  "account_id": "uuid",
  "mode": "reconcile",
  "pending_orders_endpoint": "https://customer.example/pending",
  "webhook_url": "https://customer.example/webhook",
  "retry_limit": 3,
  "polling_method": "GET",
  "polling_body": null,
  "auth_type": "bearer",
  "auth_token": "<token>",
  "webhook_auth_type": "bearer",
  "webhook_auth_token": "<token>",
  "notify_on_expired": false,
  "webhook_extra_fields": null,
  "silent_ingestion": false,
  "bank_username": "user@bank"
}

Returns null when no settings have been saved yet.

Update account settings

Use this endpoint to save or update every setting on an account in one call. The request body replaces the current settings.

PUT /accounts/:accountId/config
Content-Type: application/json

Request body:

{
  "pending_orders_endpoint": "https://customer.example/pending",
  "webhook_url": "https://customer.example/webhook",
  "webhook_auth_type": "bearer",
  "webhook_auth_token": "<token>",
  "retry_limit": 3,
  "polling_method": "GET",
  "polling_body": null,
  "auth_type": "bearer",
  "auth_token": "<token>",
  "bank_username": "user@bank",
  "bank_password": "<password>",
  "notify_on_expired": false,
  "webhook_extra_fields": { "tenant": "acme" },
  "mode": "reconcile",
  "silent_ingestion": false
}

Field notes:

  • mode - "reconcile" (default) or "passthrough".
  • pending_orders_endpoint - required when mode is "reconcile". Ignored in passthrough.
  • webhook_url - always required.
  • webhook_auth_type / webhook_auth_token - credentials Reconbanker uses to call your webhook.
  • retry_limit - how many times Reconbanker re-attempts a match before giving up. Default 3.
  • polling_method - "GET" (default) or "POST".
  • polling_body - sent as the JSON body when polling_method is "POST". Ignored otherwise.
  • auth_type / auth_token - credentials Reconbanker uses to call your pending orders endpoint. Also act as fallback for the webhook auth.
  • bank_username / bank_password - your online banking credentials. Stored encrypted. Leave both off to keep existing credentials unchanged.
  • notify_on_expired - when true, fires a webhook with status: "expired" for stale requests.
  • webhook_extra_fields - JSON object merged into every webhook payload. These keys are reserved and cannot be overridden: external_id, status, amount, currency, name, id, received_at.
  • silent_ingestion - passthrough only. When true, Reconbanker marks transactions as notified but does not actually call the webhook (useful for backfills).

Responses:

  • 200 OK - returns the same shape as the read endpoint.
  • 400 Bad Request - one of the validation messages (webhook_url is required, pending_orders_endpoint is required when mode is reconcile, etc.).

List account movements

Use this endpoint to list bank transactions Reconbanker has read for an account.

GET /accounts/:accountId/movements?limit=100&offset=0

Query parameters:

  • limit - defaults to 100, maximum 500.
  • offset - defaults to 0.

Response 200 OK:

[
  {
    "id": "uuid",
    "external_id": "string",
    "amount": "1500.00",
    "currency": "UYU",
    "sender_name": "ACME SA",
    "received_at": "2026-05-13T10:15:00Z",
    "notified_at": null,
    "excluded_at": null
  }
]

Newest movements first.

Resend a movement webhook

Use this endpoint to replay a passthrough webhook for a specific bank transaction (for example, when your receiver was down).

POST /accounts/:accountId/movements/:movementId/notify

Responses:

  • 202 Accepted - { "queued": true }
  • 404 Not Found - { "error": "Movement not found for this account" }

Trigger a bank scrape

Use this endpoint to make Reconbanker log in to your bank right now instead of waiting for the next scheduled run.

POST /accounts/:accountId/scrape

Response 202 Accepted:

{ "jobId": "string" }

See Conciliation for the matching endpoints and Banks for the bank catalog.