Skip to main content
A field map tells Matcher which raw column in a source carries each canonical transaction field. Because every source (bank statements, ledger exports, gateway reports) names its columns differently, the field map normalizes those column names into one fixed vocabulary before matching runs.
A field map only renames columns. It does not parse, compute, transform, or combine values. Each canonical field is populated from exactly one source column.

What a field map is


A field map belongs to a single source inside a context. A context reconciles two sides — a LEFT source and a RIGHT source — and each source has its own field map. Matcher compares the canonical fields produced by both maps, so both sides must resolve to the same vocabulary even when their raw files look nothing alike. The mapping is a JSON object in the form:
  • The key is a canonical field. Keys come from a closed, case-sensitive vocabulary — Matcher rejects any key outside it.
  • The value is the name of the column in the raw source that carries that field. Values are free text (whatever your file calls the column) and must be non-empty strings.

Canonical vocabulary


The key space is closed. These are the only keys Matcher accepts.

Required keys

Every field map must declare all four:

Optional keys

Declare these only when the source carries them:
fee_amount and fee_currency are the optional fee slot. When present, the mapped column’s value is copied into the transaction metadata that fee verification reads, so a column named anything (for example mdr_fee) can carry fees end to end without hand-built metadata. Omit them and behavior is identical to a map without a fee slot.

Creating a field map


Field maps are created per source. Send the mapping object to the source’s field-map endpoint:
cURL
Response
API Reference: Create field map

Updating a field map


Each source has one field map. To change a mapping, PATCH it by its own ID (not the source ID). Send the full mapping — it replaces the previous one and increments version.
cURL
API Reference: Update field map
Other operations:

Example: both sides of a context


A context reconciles a bank feed against an internal ledger export. The two files use different column names, so each source declares its own map — but both resolve to the same canonical keys.

LEFT source — bank statement (CSV)

Raw columns:
Field map:

RIGHT source — ledger export (CSV)

Raw columns:
Field map:
Both sources now expose external_id, amount, currency, and date in the canonical vocabulary, so match rules can compare them directly — even though one file called the amount Amount and the other called it value.

Common mistakes


The key is the canonical field and the value is your column — {"external_id": "BankRef"}, not {"BankRef": "external_id"}. Writing it backwards puts an unknown key (BankRef) on the left and is rejected.
Only external_id, amount, currency, date, description, fee_amount, and fee_currency are accepted. Keys such as transaction_id, reference, counterparty, or type are rejected as unknown keys, and the error names each offender.
Keys are case-sensitive lowercase tokens. External_Id, Amount, or CURRENCY are treated as unknown keys.
All of external_id, amount, currency, and date must be present. A map missing any of them fails validation with a “missing required keys” message.
Every value must be a non-empty string naming a source column. null, numbers, objects, or "" are rejected.
Field maps do not parse dates, divide amounts, concatenate columns, or apply conditionals. Deliver values already in the expected shape from the source file, or normalize upstream before upload.

Next steps


Match rules

Define how the canonical fields are compared and grouped.

Uploading files

Import transactions using your field maps.