Skip to content

Create reconciliation

POST/api/v1/reconciliations

Create a new bank reconciliation (with S3 key).

Use this endpoint if you've already uploaded the statement to S3. For direct file upload, use POST /reconciliations/upload instead.

Request Body:

  • ledger_id: UUID of ledger to reconcile against (required)
  • statement_s3_key: S3 key of uploaded bank statement (required)
  • start_date: Statement period start date in ISO 8601 format (required)
  • end_date: Statement period end date in ISO 8601 format (required)
  • statement_filename: Original filename (optional)
  • opening_balance: Opening balance in cents (optional)
  • closing_balance: Closing balance in cents (optional)
  • auto_start: Auto-start processing workflow (optional, defaults to true)

Note: The workflow will:

  1. Parse the bank statement (PDF, CSV, Excel supported)
  2. Fetch ledger transactions for the period
  3. Run AI matching to suggest matches
  4. Store results for review

Returns: Created reconciliation with status and task ID.

Operation ID: create_reconciliation·View as markdown·OpenAPI slice

Authentication

Bearer token authentication. Pass your DayZero API token in the Authorization header and the target business UUID in x-business-id.

Request body

ledger_idstringrequired

ID of ledger to reconcile against

source_typestring

Reconciliation source: 'plaid' (synced transactions) or 'manual' (uploaded statement)

statement_s3_keystring

S3 key of uploaded bank statement (required for manual source)

start_datestring · date-timerequired

Statement period start date

end_datestring · date-timerequired

Statement period end date

statement_filenamestring

Original filename

opening_balanceinteger

Opening balance in cents

closing_balanceinteger

Closing balance in cents

auto_startboolean

Auto-start processing workflow

Responses

201Successful Response

successboolean
messagestring
codestring
dataCreateReconciliationResponse

401Unauthorized - Missing or expired token, an MCP OAuth token used against the REST API, or no access to this business

errorstringrequired

Error category: validation_error, unauthorized, forbidden, not_found, conflict, rate_limited, server_error, or service_unavailable.

messagestringrequired

Human-readable explanation, safe to show to end users.

codestringrequired

Stable machine-readable code in CATEGORY_NNN form (e.g. NOT_FOUND_006, AUTH_010, GEN_002).

request_idstring

Correlation id for support requests. Echoes the x-request-id request header when one was supplied.

errorsobject

Field-level validation messages keyed by field name. Present on 400/422 validation failures only.

403Forbidden - Insufficient permissions

errorstringrequired

Error category: validation_error, unauthorized, forbidden, not_found, conflict, rate_limited, server_error, or service_unavailable.

messagestringrequired

Human-readable explanation, safe to show to end users.

codestringrequired

Stable machine-readable code in CATEGORY_NNN form (e.g. NOT_FOUND_006, AUTH_010, GEN_002).

request_idstring

Correlation id for support requests. Echoes the x-request-id request header when one was supplied.

errorsobject

Field-level validation messages keyed by field name. Present on 400/422 validation failures only.

422Validation Error

errorstringrequired

Error category: validation_error, unauthorized, forbidden, not_found, conflict, rate_limited, server_error, or service_unavailable.

messagestringrequired

Human-readable explanation, safe to show to end users.

codestringrequired

Stable machine-readable code in CATEGORY_NNN form (e.g. NOT_FOUND_006, AUTH_010, GEN_002).

request_idstring

Correlation id for support requests. Echoes the x-request-id request header when one was supplied.

errorsobject

Field-level validation messages keyed by field name. Present on 400/422 validation failures only.