Boarding a Merchant with Elavon

You can board an Elavon merchant either through the Koard Merchant Management System (MMS) UI or programmatically via the API. Elavon assigns the merchant a Bank Number and Terminal Number out-of-band. Those two values plus the standard top-level fields (mid, tid, mcc) are everything Koard needs from the merchant to board a terminal.

Before You Start

Elavon provisions merchants and terminals on their side; Koard never makes a "create merchant" call. Once provisioning is complete, the merchant's packet contains:

Provided by Elavon What it is
Bank Number 6 digits — assigned by Elavon per merchant (viaConex v4.090 §11.9, p.144)
Terminal Number 16 digits — assigned by Elavon per POS device (viaConex v4.090 §11.9, p.144)

That's it. Everything else (Application ID, Vendor ID, Registration Key) is configured by Koard once per environment and never appears on a merchant VAR sheet.

How terminal_id is built

Elavon's wire format uses a single 22-digit Terminal_ID on every request. The spec is explicit (viaConex v4.090 §11.9 p.144):

Digits 1–6 = Bank Number (6 digits, fixed length, assigned by Elavon) Digits 7–22 = Terminal Number (16 digits, fixed length, assigned by Elavon)

The 22-digit Terminal_ID is pure concatenation — no padding, no spacing. You can supply either form:

Format Example Koard does
bank_number + terminal_number separately bank_number="001734", terminal_number="0008025708085490" Concatenates to 0017340008025708085490
Pre-built 22-digit tid tid="0017340008025708085490" Uses as-is, splits into bank + terminal internally

Pick whichever your merchant's paperwork makes easier. Both end up with identical persisted state.

Via the MMS

After creating the merchant account, click New Terminal and select Elavon as the processor. You'll be presented with the Elavon VAR Sheet Information form.

MMS Label Required Notes
Merchant ID Yes 12-digit MID from Elavon
Bank Number Either this or the 22-digit Terminal ID 6 digits
Terminal Number Either this or the 22-digit Terminal ID 16 digits
22-digit Terminal ID Either this or Bank Number + Terminal Number Pre-concatenated single value
Merchant Category Code Yes 4-digit MCC

Optional fields are accepted (see VAR Sheet Fields → Optional) but not required to onboard. Address, phone, DBA name and similar fields are only used when the merchant joins Elavon's Dynamic Merchant Data program, which is restricted-access and explicitly approved per merchant (viaConex §3 Block 03, p.22552–22557).

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 Elavon processor configuration ID
terminal_name Yes Display name for the terminal
terminal_description No Optional description
mid Yes Elavon-assigned 12-digit Merchant ID
tid Yes — either the 22-digit form OR omit and use var_sheet.bank_number + var_sheet.terminal_number If you supply the 22-digit form, Koard splits it; if you supply Bank + Terminal in var_sheet, Koard concatenates them.
mcc Yes 4-digit MCC
var_sheet Conditional Required only if you split Bank Number from Terminal Number, or want to set any optional fields.

Example — pre-built 22-digit Terminal ID

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_elavon_us",
    "terminal_name": "Front Counter iPhone",
    "mid": "123456789012",
    "tid": "0017340008025708085490",
    "mcc": "5812"
  }'

Example — split Bank + Terminal Number

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_elavon_us",
    "terminal_name": "Front Counter iPhone",
    "mid": "123456789012",
    "mcc": "5812",
    "var_sheet": {
      "bank_number": "001734",
      "terminal_number": "0008025708085490"
    }
  }'

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.

VAR Sheet Fields

Required

Field Format Description
bank_number 6 digits First 6 digits of the Elavon Terminal_ID. Assigned by Elavon per merchant. Required only if tid was not supplied as the full 22-digit form.
terminal_number 16 digits Last 16 digits of the Elavon Terminal_ID. Assigned by Elavon per POS device. Required only if tid was not supplied as the full 22-digit form.

Optional

Field Default Description
merchant_dba_name Restricted-access. Only honored if your merchant is enrolled in Elavon's Dynamic Merchant Data program (viaConex v4.090 §3 Block 03). Otherwise ignored at auth; supply at clearing time instead.
merchant_city Same restriction as merchant_dba_name.
merchant_state Same restriction.
merchant_zip Same restriction.
merchant_country USA 3-letter alpha country code per ISO 3166-1 alpha-3. Allowed values include USA, CAN, MEX, GBR, etc. — see Elavon's clearing currency/country table. Same restriction at auth; required (mandatory) on the clearing BHR per Elavon Clearing Format §3.
acceptor_phone Restricted-access. Only carried via the optional Merchant Address Addendum (MAA) record on the clearing file.
currency_code USD 3-letter alpha currency code per ISO 4217 (e.g. USD, CAD, EUR, GBP). Auth and clearing paths both expect alpha; only the EMV TLV tag 5F2A uses ISO 4217 numeric (e.g. 840).
surcharge_rate Surcharge percentage. Set to null to disable, 0 to never surcharge. Configured via PUT /v2/terminals/{terminal_id}.

Batch Management

Elavon merchants in production use clearing files (the .txt flat-file format defined by Elavon Clearing Format v4.69) for daily settlement. Koard handles this on the merchant's behalf — there is no merchant-driven batch open/close model in the live auth flow for Elavon.

If your merchant requires manual or automated batch scheduling via PUT /v2/terminals/{terminal_id} with a batch_schedule, see Automated Batch Scheduling.

Country & Currency — Cheat Sheet

Where used Format Examples
Auth (viaConex Block 03 Dynamic_Country_Code) 3-letter alpha USA, CAN, MEX
Auth EMV TLV tag 9F1A 3-digit numeric 840 (US), 124 (CA), 826 (GB)
Clearing BHR Merchant Country 3-letter alpha USA, CAN
Auth currency 3-letter alpha USD, CAD, EUR, GBP
EMV TLV tag 5F2A 3-digit numeric 840 (USD), 124 (CAD)

The Koard API exposes the alpha forms (USD, USA) on the VAR sheet — the numeric EMV tags are constructed internally during the auth message build.

Gotchas

  • mid and tid are top-level fields on the request, NOT inside var_sheet. This matches every other processor on Koard.
  • tid is the 22-digit Elavon Terminal_ID — not a 3- or 4-digit lane number like TSYS or Worldpay. Build it from Bank Number + Terminal Number per the How terminal_id is built section, or paste the pre-concatenated form.
  • Merchant DBA name / city / state / zip / phone are optional at auth and restricted to Elavon's Dynamic Merchant Data program. Don't add them unless your merchant is explicitly enrolled — Elavon silently ignores them otherwise (viaConex §3 Block 03).
  • Country code is alpha-3 at the API level (USA, not 840). The numeric form only appears inside EMV TLV tags, which Koard builds internally.

Troubleshooting

400 Bad Request on create with bank_number / terminal_number errors

  • Verify bank_number is exactly 6 digits and terminal_number is exactly 16 digits.
  • Or supply the full 22-digit tid directly and omit the var_sheet split.

Transactions erroring with INVALID TERMINAL

  • bank_number + terminal_number must match what Elavon has on file character-for-character, including leading zeros.

Wrong merchant name on statements

  • Auth-path dynamic merchant fields are restricted. The DBA name on statements is set in the clearing file (BHR record), not on the auth. Update the merchant's DBA at Elavon directly or via the clearing pipeline.