Skip to content

List the processor connections' reconciliation

The reconciliation.connections.list operation: GET /api/v1/reconciliation/connections in the REST API and the reconciliation_connections_list tool in the MCP server.

GET/api/v1/reconciliation/connections

Lists the legal entity's processor connections in the mode of the request with where their reconciliation stands: the cursor (the latest balance transaction read), the last run (scheduled daily or asked for, what it read, matched, posted and queued, or why it failed), a run asked for and not finished yet, and the open items.

At a glance

  • REST: GET /api/v1/reconciliation/connections
  • MCP tool: reconciliation_connections_list
  • Operation ID: reconciliation.connections.list
  • Scope: Legal entity
  • Permission: ledger:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Authentication: API key with the ledger:read scope
  • Since: M8

Request

Query parameters

This operation takes no query parameters.

Response

200 OK with a JSON object:

FieldTypeDescription
object"list"
dataarray of object
data[].object"reconciliation_connection"
data[].processorConnectionIdpcon_… ID
data[].livemodeboolean
data[].processorone of stripe, mollie, fake
data[].labelstring
data[].statusone of active, degraded, disconnectedThe connection's status: disconnected ones aren't read.
data[].cursordate-time or nullThe creation time of the latest balance transaction read; the next run reads from an hour before it.
data[].lastRunobject or null
data[].lastSucceededAtdate-time or null
data[].runRequestedAtdate-time or nullA run asked for that hasn't finished yet (the job runs it within a minute).
data[].openItemsintegerOpen items of this connection in the queue.

Examples

One Stripe connection, reconciled this morning

HTTP
GET /api/v1/reconciliation/connections
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "object": "reconciliation_connection",
      "processorConnectionId": "pcon_01m4vyt4mxe0s9zzk90373z6p6",
      "livemode": false,
      "processor": "stripe",
      "label": "Stripe (test)",
      "status": "active",
      "cursor": "2026-11-05T00:10:00.000Z",
      "lastRun": {
        "trigger": "schedule",
        "startedAt": "2026-11-05T04:00:00.000Z",
        "finishedAt": "2026-11-05T04:00:12.000Z",
        "status": "succeeded",
        "readFrom": "2026-11-03T23:59:00.000Z",
        "counts": {
          "read": 42,
          "recorded": 40,
          "matched": 39,
          "opened": 1,
          "posted": 35,
          "rechecked": 0,
          "bankConfirmed": 1
        },
        "error": null
      },
      "lastSucceededAt": "2026-11-05T04:00:12.000Z",
      "runRequestedAt": null,
      "openItems": 1
    }
  ]
}

Errors

CodeHTTP statusWhenWhat to do
scope_required400The request names no legal entity (an org key without Ownrecord-Entity, or a brand key: reconciliation belongs to the entity).Call the operation with credentials or a target at its level: an organization, a legal entity, a brand or the platform (details.required_scope).
permission_denied403You can't read this entity's ledger (ledger:read; brand-scoped members never see it).Ask an organization owner or admin for a role or scope that allows this action.
livemode_not_allowed403You have no live-mode access, so you can't use live reconciliation.Use test mode, or credentials for the target's mode. Developers need live access granted by an organization owner or admin.

It can also return these common errors: validation_failed, api_version_unsupported, authentication_required, api_key_invalid, resource_not_found, dry_run_not_supported, rate_limited, internal_error.