Skip to main content
The Import center is where operators turn batch files — bank statements, PSP reports, on-chain exports, and internal ledgers — into data the reconciliation engine can use. The page header reads “Import center” with the description “Track uploads, validate mappings, inspect failed rows, and explain how file data enters reconciliation.”
Every import on this page is an ImportBatch created through POST /v1/import-batches. The dashboard is a convenience layer over the same ingestion pipeline available to your own systems.

KPI strip

At the top of the page, four cards summarize the import surface:
The live ingestion path currently parses CSV and TSV files only. .json and .xlsx are listed as accepted formats but uploading them through the live upload flow will be rejected with an error until that part of the pipeline is completed.

Tabs

The page has three tabs, gated by permission:
  • Import history (imports_view) — every ImportBatch for the organization
  • Failed rows (imports_review) — row-level validation failures across batches
  • File templates — reference column layouts for each source type

Import history

Each row in the history table represents one ImportBatch, loaded from List import batches (GET /v1/import-batches?limit=100): The underlying status values from the API (uploaded, mapping_required, parsing, validating, processing, completed, failed) are collapsed into four UI states:

Failed rows

Each entry shows:
  • A badge — failed or matched_with_exception depending on validationStatus
  • The row number and sourceRef
  • The list of validationErrors for that row
  • The raw payload as pretty-printed JSON
  • A “RawRecord validation” badge
This is the row-level detail behind the failedRows and warningRows counts on the history table and on the Overview page’s Recent Import Failures widget. Each failing row corresponds to a RawRecord with validationStatus = failed, which can be retrieved via List import batch raw records.

File templates

Reference cards showing the expected columns for each source type, used as a starting point when preparing a file: These map onto the canonical fields configured for each import profile.

Uploading a file

Selecting Upload file (requires imports_upload) opens a four-step modal:
1

Choose a source type

Pick the ImportSourceType for the file. This determines whether the import is expectation-first (creates PaymentIntent records) or evidence-first (creates FlowLeg records):
2

Choose an import profile

Select the import profile that maps this file’s columns to canonical fields. Profiles are filtered to ones matching the chosen source type.
3

Upload the file

Files up to 50 MB are accepted. For live processing, only CSV and TSV are currently supported.
4

Preview and confirm

Review a preview of the parsed rows before submitting. Confirming calls Create an import batch:
with the import profile ID, original file name, file contents, and content type.
Live uploads are archived to Cloudflare R2 and hashed for deduplication. If you upload the same file content twice for the same organization, the API recognizes the existing ImportBatch by its file hash rather than creating a duplicate.

Batch summary

Selecting “View” on a batch opens its summary, which presents the batch’s row metrics — total, valid, warning, and failed row counts — alongside the batch’s mapping status and file name, with a button to copy the batch ID. The same data is available directly from Get import batch detail (GET /v1/import-batches/{batchId}) and the underlying rows from List import batch raw records (GET /v1/import-batches/{batchId}/raw-records).

From here

List import batches

Query batch history directly, including status and row counts.

Create an import batch

Submit a file programmatically instead of through the dashboard.

Configuration

Manage the import profiles and canonical fields that govern how files are mapped.

Cases

See the PaymentIntent and ReconciliationCase records produced by a successful import.