Boarding a Merchant with Fiserv
You can board a Fiserv merchant either through the Koard Merchant Management System (MMS) UI or programmatically via the API. Koard targets Fiserv's UMF Rapid Connect interface (spec UMF_RMY019_2026.02.16, v15.04.4) over the Datawire transport.
Per the UMF spec, a Fiserv merchant is identified at the integrator boundary by three merchant-supplied values — MID, TID, MCC — plus the TPPID that Koard owns and sets once per environment. Everything else needed to run an authorization is configured by Koard (TPPID, terminal-capability constants); a Datawire ID (DID) is used only when Datawire is enabled on the terminal.
Fiserv Flavors
Fiserv Rapid Connect fronts several acquiring platforms. Koard selects the right one per merchant via the processor config — you board with the same VAR-sheet shape shown on this page regardless of flavor; only the processor_config_id and the Fiserv-assigned GroupID differ.
| Flavor | Front-end | Group ID | Capture / settlement |
|---|---|---|---|
| Nashville (Classic) | Nashville (Envoy) | 10001 |
Host capture |
| Nashville North | Nashville front-end → North back-end | 10001 |
Terminal capture (North PTS) — pass settlement_mid |
| Cardnet North | Cardnet / North | 30001 |
Terminal capture (North PTS) — pass settlement_mid |
| Omaha | Omaha (FDR) | 40001 |
Hybrid-host capture |
The GroupID in the VAR packet tells you which front-end the merchant sits on. Use the processor_config_id for that flavor; everything else on this page is identical across flavors.
Before You Start
Fiserv provisions the merchant on their side; Koard never makes a "create merchant" call. Once a merchant is set up on Fiserv's platform, your VAR sheet packet contains:
| Provided by Fiserv | UMF tag | Format | What it is |
|---|---|---|---|
| Merchant ID (MID) | MerchID |
an ..16 |
Fiserv-assigned merchant identifier (UMF §3.1.11 — "A unique ID used to identify the Merchant. The merchant must use the value assigned by Fiserv.") |
| Terminal ID (TID) | TermID |
an ..8 |
Per-terminal identifier (UMF §3.1.10 — "A unique ID assigned by Fiserv to identify a terminal."). In certification, all transactions must run on TID 00000001. |
| Merchant Category Code | MerchCatCode |
N 4 |
ISO 18245 4-digit MCC (UMF §3.1.13) |
| Group ID (GID) | GroupID |
an 5..13 |
Assigned by Fiserv to identify the individual merchant or group of merchants (UMF §3.1.23). Spec defines no default. |
| Datawire ID (DID) | (Datawire transport, not a UMF body field) | — | Used only when the terminal has Datawire enabled (var_sheet.datawire_enabled: true, the default). With Datawire enabled: paste the Fiserv-issued DID, or omit it and Koard provisions one at boarding. With datawire_enabled: false, no DID is used — sending one is rejected. |
The UMF TPPID field (Rapid Connect ID assigned by Fiserv for a specific version of vendor/merchant software, UMF §3.1.9) is not on the merchant VAR sheet — it identifies the integrator's certified SDK build, not the merchant. Koard owns it and sends a fixed value (RMY019 for the current Koard build) on every transaction.
Via the MMS
After creating the merchant account, click New Terminal and select Fiserv as the processor. You'll be presented with the Fiserv VAR Sheet Information form.
Fill in all required fields (marked with *) using the values from the merchant's Fiserv VAR sheet:
| MMS Label | Required | Notes |
|---|---|---|
| Merchant ID | Yes | Fiserv-assigned MID, up to 16 alphanumeric |
| Terminal ID | Yes | Up to 8 alphanumeric. Zero-padded to 8 chars when used as Datawire AuthKey2. |
| Merchant Category Code | Yes | 4-digit MCC. UMF treats it as O|C (optional in request — the boarded MID record carries the default), but Koard requires it on the API for surcharge and reporting. |
| Group ID | Yes | 5-13 alphanumeric. No spec default; supply the value Fiserv assigned in your VAR packet. |
| Datawire Enabled | No | Whether the terminal routes over Datawire. Default on. When off, no Datawire ID is used. |
| Datawire ID | No | Only when Datawire is enabled. Paste from the VAR packet if provided; if left blank, Koard provisions one at boarding. |
Once saved, assign the terminal to a location and generate merchant credentials as usual.
Via the API
Send X-Koard-apikey: {API_KEY} with every request. Use https://api.uat.koard.com for sandbox and https://api.koard.com for production.
Create Terminal — POST /v2/terminals
Request body
| Field | Required | Description |
|---|---|---|
account_id |
Yes | Merchant account ID |
processor_config_id |
Yes | Fiserv processor configuration ID |
terminal_name |
Yes | Display name for the terminal |
terminal_description |
No | Optional description |
mid |
Yes | Fiserv MerchID (top-level on the request — not in var_sheet) |
tid |
Yes | Fiserv TermID (top-level) |
mcc |
Yes | 4-digit MCC (top-level) |
var_sheet.group_id |
Yes | Fiserv GroupID — assigned by Fiserv, no spec default |
var_sheet.datawire_enabled |
No | Bool, default true. true = route over Datawire (a DID is used). false = no DID (sending did alongside is rejected as contradictory). |
var_sheet.did |
No | Datawire ID. Only when datawire_enabled is true: send an already-issued DID, or omit it and Koard provisions one at boarding. |
Required vs conditional fields
Every Fiserv board — regardless of flavor — requires the top-level account_id, processor_config_id, terminal_name, mid, tid, mcc, plus the var_sheet address (merchant_street_address, merchant_city, merchant_state, merchant_postal_code), country_code, and industry. The rest is conditional on the flavor:
var_sheet field |
Conditional? | When |
|---|---|---|
group_id |
Resolved from the processor config | Don't send it unless you're overriding the config's Group ID. |
settlement_mid |
Conditional | North-settling flavors (Nashville North, Cardnet North). Optional — defaults to a copy of mid when omitted. |
equipment |
Optional | POS Solution Name (enum) — boarding metadata only; the wire identifies the build via TPPID. |
datawire_enabled |
Optional | Default true. false ⇒ no Datawire ID is used (and sending did is rejected as contradictory). |
did |
Optional | Only when datawire_enabled is true: supply an issued DID, or omit it to have Koard provision one at boarding. |
Example — DID already issued
curl https://api.uat.koard.com/v2/terminals \
-X POST \
-H "X-Koard-apikey: $KOARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account_id": "100200300001",
"processor_config_id": "prc_live_fiserv_us",
"terminal_name": "Front Counter iPhone",
"mid": "RCTST1000118756",
"tid": "00000003",
"mcc": "5812",
"var_sheet": {
"group_id": "40001",
"did": "00067045767186571068"
}
}'
Example — DID provisioned at boarding (Datawire enabled)
With datawire_enabled true (the default), omit did and Koard provisions a Datawire ID at boarding and persists it on the terminal.
curl https://api.uat.koard.com/v2/terminals \
-X POST \
-H "X-Koard-apikey: $KOARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account_id": "100200300001",
"processor_config_id": "prc_live_fiserv_us",
"terminal_name": "Front Counter iPhone",
"mid": "RCTST1000118756",
"tid": "00000099",
"mcc": "5812",
"var_sheet": {
"group_id": "40001"
}
}'
The response includes the persisted var_sheet.did so you can confirm registration succeeded.
Update Terminal — PUT /v2/terminals/{terminal_id}
To correct or update VAR sheet fields after creation, send a PUT with a var_sheet object containing only the fields you want to change.
curl https://api.uat.koard.com/v2/terminals/500600700001 \
-X PUT \
-H "X-Koard-apikey: $KOARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"var_sheet": {
"did": "00067045767186571068"
}
}'
Batch Management
Fiserv is host capture today — the host manages the batch and settles on its cutoff. There is no merchant-driven batch open/close model, and the MMS batch panel is read-only for Fiserv terminals.
Merchant-driven batch management (see Automated Batch Scheduling) is on the roadmap. Until then, leave batch management disabled in the MMS.
Gotchas
- Omaha settlement — for merchants on Fiserv DD / sponsor-bank funding via FDC, confirm the Omaha flavor is provisioned before boarding.
tidis zero-padded to 8 characters asAuthKey2in the Datawire envelope. Don't pad it yourself in the VAR packet — supply the raw value (Koard pads).TranFee(Merchant Surcharge) triggers full declines without enrollment. The UMF spec is explicit: "Failure to do this will cause all credit card transactions with the surcharge amount field populated to be declined." Don't enable surcharge until Fiserv confirms enrollment.
Troubleshooting
400 Bad Request on create
- Confirm
mid,tid, andmccare at the top level of the request, NOT insidevar_sheet. - Confirm
group_idis insidevar_sheetand is 5-13 alphanumeric chars. - Verify
processor_config_idis a valid Fiserv config ID for your environment.
Transactions erroring with INVALID MERCHANT
- The acquirer MID is platform-level. If your merchant requires a different acquirer relationship, contact Koard support — per-merchant acquirer routing is a future enhancement, not configurable on the VAR sheet today.
Need Omaha settlement
- Confirm the Omaha flavor is provisioned for the merchant before boarding.

