Supported formats
Matcher accepts transaction files in three formats:
- CSV: Comma-separated values with headers. Most common for bank exports.
- JSON: Array of transaction objects. Best for API integrations.
- XML: Structured elements. Common for enterprise systems.
File structure requirements
Each file must contain transaction records with fields that can be mapped to Matcher’s internal schema.
Required fields
Every transaction must have these fields (or mappable equivalents):| Field | Type | Description |
|---|---|---|
transaction_id | String | Unique identifier within the source |
amount | Decimal | Transaction amount (positive or negative) |
currency | String | ISO 4217 currency code |
date | Date/DateTime | Transaction date |
Optional fields
| Field | Type | Description |
|---|---|---|
reference | String | External reference or description |
counterparty | String | Other party in the transaction |
type | String | Transaction type (credit, debit, etc.) |
metadata | Object | Additional custom fields |
Format examples
CSV
CSV Requirements:- First row must be column headers
- UTF-8 encoding
- Comma delimiter (configurable)
- Quote fields containing commas or newlines
JSON
JSON Requirements:- Root element must be an array
- Consistent field names across objects
- UTF-8 encoding
XML
XML Requirements:- Valid XML with declaration
- Root element containing transaction elements
- UTF-8 encoding
Upload via API
Use the import endpoint to upload transaction files.
Single file upload
cURL
Response
Check import status
cURL
Response (Processing)
Response (Completed)
Import job status values
| Status | Description |
|---|---|
QUEUED | Job received, waiting to start |
PROCESSING | File is being parsed and validated |
COMPLETED | Import finished successfully |
FAILED | Import failed (check errors) |
CANCELLED | Import was cancelled |
Validation and error handling
Matcher validates uploaded files at multiple stages.
Validation stages
Data Type Validation
Validates amounts are valid decimals, dates are parseable, currencies are valid ISO codes.
Common validation errors
| Error | Cause | Solution |
|---|---|---|
INVALID_FORMAT | File cannot be parsed | Check file encoding and structure |
MISSING_REQUIRED_FIELD | Required field not found | Verify field mapping configuration |
INVALID_AMOUNT | Amount not a valid number | Check for currency symbols or commas in numbers |
INVALID_DATE | Date cannot be parsed | Use ISO 8601 format (YYYY-MM-DD) |
UNKNOWN_CURRENCY | Currency code not recognized | Use ISO 4217 codes (USD, EUR, BRL) |
DATE_OUT_OF_RANGE | Date before/after allowed range | Check context date boundaries |
Handling errors
By default, valid rows are imported even if some rows have errors. You can change this behavior:Duplicate detection
Matcher automatically detects and handles duplicate transactions to prevent double-counting.
How duplicates are detected
Duplicates are identified by computing a hash of key fields:transaction_idsource_idamountcurrencydate
Duplicate handling options
| Option | Behavior |
|---|---|
skip (default) | Duplicate rows are skipped, existing data unchanged |
replace | Duplicate rows replace existing transactions |
error | Import fails if duplicates are found |
Viewing duplicate details
The import summary shows how many duplicates were found:Batch uploads
For large reconciliation jobs, you can upload multiple files in sequence.
Upload multiple files
Wait for all imports
Before running matching, ensure all imports are complete:Best practices
Validate files before upload
Validate files before upload
Check file format and encoding locally before uploading. This catches obvious errors faster.
Use consistent date formats
Use consistent date formats
Standardize on ISO 8601 format (
YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ) across all sources to avoid parsing issues.Include transaction IDs
Include transaction IDs
Always include unique transaction IDs from the source system. This enables proper duplicate detection and audit trails.
Handle negative amounts consistently
Handle negative amounts consistently
Decide on a convention (negative for debits, positive for credits) and apply it consistently. Document this in your field mapping.
Upload incrementally for large files
Upload incrementally for large files
For very large files (>50MB), consider splitting into smaller chunks by date range. This improves reliability and allows partial retries.
Set up automated uploads
Set up automated uploads
For recurring reconciliation, automate file uploads using scheduled jobs or webhooks from source systems.

