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
midandtidare top-level fields on the request, NOT insidevar_sheet. This matches every other processor on Koard.tidis the 22-digit ElavonTerminal_ID— not a 3- or 4-digit lane number like TSYS or Worldpay. Build it from Bank Number + Terminal Number per the Howterminal_idis 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, not840). 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_numberis exactly 6 digits andterminal_numberis exactly 16 digits. - Or supply the full 22-digit
tiddirectly and omit thevar_sheetsplit.
Transactions erroring with INVALID TERMINAL
bank_number + terminal_numbermust 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.

