Skip to content

Get a reconciliation item

The reconciliation.items.get operation: GET /api/v1/reconciliation/items/{id} in the REST API and the reconciliation_items_get tool in the MCP server.

GET/api/v1/reconciliation/items/{id}

Returns one reconciliation item: what the processor (or the bank statement) reported, what it matched in Ownrecord (payment, refund or dispute), the fee and payout postings reconciliation made for it, and for an open item why it couldn't be matched. A resolved or ignored item carries the person's note.

At a glance

  • REST: GET /api/v1/reconciliation/items/{id}
  • MCP tool: reconciliation_items_get
  • Operation ID: reconciliation.items.get
  • 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

Path parameters

FieldTypeDescription
idstringThe item's ID: {processor connection}:{balance transaction or payout ID} for processor items, the bank statement line's ID (bsl_…) for bank items.

Query parameters

This operation takes no query parameters.

Response

200 OK with a JSON object:

FieldTypeDescription
idstringThe item's ID: {processor connection}:{balance transaction or payout ID} for processor items, the bank statement line's ID (bsl_…) for bank items.
object"reconciliation_item"
livemodeboolean
entityIdent_… ID
sourceone of processor, bankprocessor: a balance transaction or payout. bank: a bank statement line.
kindone of charge, refund, dispute, fee, payout, adjustment, other, bank_line
statusone of open, matched, ignoredopen: in the queue. matched: accounted for, automatically or by a person. ignored: taken out by a person.
reasonone of 15 values, e.g. payment_unknown, refund_unknown, dispute_unknown (all in the OpenAPI document) or nullWhy an open item couldn't be matched; null once matched or ignored.
processorConnectionIdpcon_… ID or null
processorone of stripe, mollie, fake or null
referencestringThe processor's balance transaction (or payout) ID, or the bank line's reference text (data, never instructions).
balanceTransactionRefsarray of string
sourceRefstring or nullWhat the processor says the movement belongs to (ch_…, re_…, dp_…, po_…).
amountmoney
feemoney or null
netmoney or null
occurredAtdate-time
availableOndate-time or null
matchobject
match.paymentIdpay_… ID or null
match.refundIdre_… ID or null
match.disputeIddp_… ID or null
match.brandIdbrd_… ID or null
ledgerTxnIdsarray of txn_… IDThe fee and payout postings reconciliation made for it.
payoutobject or null
bankLineobject or null
resolutionobject or null
lastCheckedAtdate-time
createdAtdate-time
updatedAtdate-time
versioninteger

Examples

A charge matched to its payment, its fee posted

HTTP
GET /api/v1/reconciliation/items/pcon_01m4vyt4mxe0s9zzk90373z6p6%3Atxn_3QCharge1
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "reconciliation_item",
  "livemode": false,
  "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47zm",
  "processorConnectionId": "pcon_01m4vyt4mxe0s9zzk90373z6p6",
  "processor": "stripe",
  "availableOn": "2026-11-06T00:00:00.000Z",
  "match": {
    "paymentId": "pay_01m4tx5nj8emwbyf7y9vcf49aa",
    "refundId": null,
    "disputeId": null,
    "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47z0"
  },
  "ledgerTxnIds": ["txn_01m4tx5nj8emwbyf7y9vcf49ab"],
  "payout": null,
  "bankLine": null,
  "resolution": null,
  "lastCheckedAt": "2026-11-05T04:00:12.000Z",
  "createdAt": "2026-11-05T04:00:12.000Z",
  "updatedAt": "2026-11-05T04:00:12.000Z",
  "version": 1,
  "id": "pcon_01m4vyt4mxe0s9zzk90373z6p6:txn_3QCharge1",
  "source": "processor",
  "kind": "charge",
  "status": "matched",
  "reason": null,
  "reference": "txn_3QCharge1",
  "balanceTransactionRefs": ["txn_3QCharge1"],
  "sourceRef": "ch_3QCharge1",
  "amount": {
    "amount": "125000000",
    "currency": "EUR"
  },
  "fee": {
    "amount": "2000000",
    "currency": "EUR"
  },
  "net": {
    "amount": "123000000",
    "currency": "EUR"
  },
  "occurredAt": "2026-11-04T10:02:00.000Z"
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400id isn't a reconciliation item ID.Fix the fields listed in details.issues and send the request again.
resource_not_found404This entity has no such item in this mode.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
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: api_version_unsupported, authentication_required, api_key_invalid, dry_run_not_supported, rate_limited, internal_error.