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:| Card | Value |
|---|---|
| Formats | The accepted file extensions: .csv, .json, .xlsx, .tsv |
| Profiles | The number of active import profiles |
| Failed rows | The number of current row-level validation issues |
| Flow | A reminder of the pipeline: RawRecords -> Cases |
Tabs
The page has three tabs, gated by permission:- Import history (
imports_view) — everyImportBatchfor 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 oneImportBatch, loaded from List import batches (GET /v1/import-batches?limit=100):
| Column | Source |
|---|---|
| File name | originalFileName |
| Source type | sourceType |
| Provider | provider |
| Profile | the linked import profile’s name |
| Mapping status | whether the batch resolved to a mapped profile |
| Status | status, mapped to one of pending, processing, completed, failed |
| Rows | validRows / warningRows / failedRows out of totalRows |
| Output | payment intents created / flow legs created |
| Linked cases | number of cases linked from this batch |
| Created | createdAt |
| Actions | ”View” link to the batch summary |
status values from the API (uploaded, mapping_required, parsing, validating, processing, completed, failed) are collapsed into four UI states:
| API status | UI status |
|---|---|
uploaded, mapping_required | Pending |
parsing, validating, processing | Processing |
completed | Completed |
failed | Failed |
Failed rows
Each entry shows:- A badge —
failedormatched_with_exceptiondepending onvalidationStatus - The row number and
sourceRef - The list of
validationErrorsfor that row - The raw payload as pretty-printed JSON
- A “RawRecord validation” badge
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:| Template | Columns |
|---|---|
| Client ledger | ref_id, send_amount, send_currency, receive_amount, receive_currency, payment_date |
| PSP report (Bridge) | transfer_id, amount, currency, status, created_at |
| Bank statement | statement_ref, credit_amount, currency, posted_at, beneficiary_account |
| On-chain report | tx_hash, chain_id, token_address, amount, occurred_at |
Uploading a file
Selecting Upload file (requiresimports_upload) opens a four-step modal:
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):| Source type | Output |
|---|---|
client_internal_ledger | Creates PaymentIntent + ReconciliationCase |
bank_statement | Creates FlowLeg evidence |
psp_report | Creates FlowLeg evidence |
onchain_report | Creates FlowLeg evidence |
client_transfer_report | Creates FlowLeg evidence |
manual | Creates FlowLeg or PaymentIntent |
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.
Upload the file
Files up to 50 MB are accepted. For live processing, only CSV and TSV are currently supported.
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.