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.
  • tid is zero-padded to 8 characters as AuthKey2 in 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, and mcc are at the top level of the request, NOT inside var_sheet.
  • Confirm group_id is inside var_sheet and is 5-13 alphanumeric chars.
  • Verify processor_config_id is 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.