Skip to main content
A field map tells Matcher which raw column in a source carries each canonical transaction field. Every source names its columns differently: bank statements, ledger exports, gateway reports. 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. Exactly one source column populates each canonical field.

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. 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


Matcher uses a closed key space. 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. A column with any name, for example mdr_fee, can therefore 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


You create one field map 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. 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 Matcher rejects the map.
Matcher accepts only external_id, amount, currency, date, description, fee_amount, and fee_currency. Matcher rejects keys such as transaction_id, reference, counterparty, or type as unknown keys. The error names each offender.
Keys are case-sensitive lowercase tokens. Matcher treats External_Id, Amount, or CURRENCY 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. Matcher rejects null, numbers, objects, or "".
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 Matcher compares and groups the canonical fields.

Uploading files

Import transactions using your field maps.