Export jobs
Exports are asynchronous. You create a job scoped to a context, poll its status by ID, and download the file once it reaches
SUCCEEDED. Statuses are QUEUED, RUNNING, SUCCEEDED, FAILED, EXPIRED, and CANCELED.
Create an export job
POST to the context’s export-jobs collection. Responds 202 Accepted with the job ID and a poll URL.
reportType: one ofMATCHED,UNMATCHED,VARIANCE,EXCEPTIONS(the aliasesMATCHESandUNMATCHED_TRANSACTIONSnormalize to these values).format:CSV,JSON, orXML(normalized to uppercase).dateFrom/dateTo: optionalYYYY-MM-DD.dateFromdefaults to 30 days beforedateTo, anddateTodefaults to tomorrow (UTC).sourceId: optional source filter.
Async export jobs do not support
SUMMARY and PDF. A request for either returns 400. The date window also has a maximum span. An over-range request returns an error rather than a silently clamped window.Poll job status
Read the top-level job route (thestatusUrl from creation).
error is present only when status is FAILED. downloadUrl appears only once the job has SUCCEEDED and the file is still available. You can list a context’s jobs with GET /v1/contexts/{contextId}/export-jobs, list all jobs with GET /v1/export-jobs, and cancel a queued/running job with POST /v1/export-jobs/{jobId}/cancel.
Download the file
Returns a presigned URL, the original file name, a SHA-256 checksum, and the URL’s remaining lifetime in seconds.Disputes
You open a dispute against a specific exception when you need to contest a reconciliation discrepancy. Its lifecycle starts at
DRAFT → OPEN. From OPEN a dispute can move to PENDING_EVIDENCE (and back to OPEN) or close directly as WON / LOST. Only WON is terminal. You can reopen a LOST dispute to OPEN.
Open a dispute
POST to the exception’s disputes collection.
category is one of BANK_FEE_ERROR, UNRECOGNIZED_CHARGE, DUPLICATE_TRANSACTION, or OTHER. The openedBy field records the opening principal.
Submit evidence by URL
Attach a reference to an already-hosted evidence file plus a describing comment.Upload an evidence file
Stream the raw file bytes directly to tenant-scoped object storage. The comment travels as a query parameter and the file as the request body. Responds201 Created with the updated dispute. Allowed content types are application/pdf, image/png, image/jpeg, and text/csv. The body has a 10 MiB limit.
evidence array lists each stored evidence item:
The upload endpoint fails closed with
503 when you do not configure object storage. It rejects oversize bodies with 413 and content types outside the allowlist with 415. The tenant always comes from the JWT and the dispute from the path, never from the body.Close a dispute
Record the outcome.won sets the state to WON (terminal) or LOST (reopenable), with a required resolution note.
GET /v1/disputes and fetch one with GET /v1/disputes/{disputeId}. The list endpoint filters by state, category, and date range, and it supports sorting and cursor pagination.

