Boarding a Merchant with TSYS

You can board a TSYS merchant either through the Koard Merchant Management System (MMS) UI or programmatically via the API. Both paths require the same VAR sheet information provided by TSYS.

Via the MMS

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

TSYS VAR Sheet Information form

Fill in all required fields (marked with *) using the values from the merchant's TSYS VAR sheet:

MMS Label Required Notes
Acquirer BIN Yes 6-digit BIN from TSYS
Merchant Number / MID Yes 12-digit TSYS merchant number
Store Number Yes 4 digits — use 0001 for single-location merchants
Terminal Number Yes 4 digits — use 0001 for the first terminal
Merchant Name Yes DBA name as it should appear on cardholder statements
Merchant Location Yes Merchant city
Merchant State Yes Select from dropdown
Merchant Category Code Yes 4-digit MCC
Industry Code Yes See Industry Codes below
City Code / ZIP Yes 5-digit ZIP code
Language Indicator Yes See Language Indicators below
Time Zone Diff Yes See Time Zone Codes below
Acceptor Street Address Yes Physical street address
Acceptor Customer Service Phone Yes 10 digits, no formatting
Acceptor Phone Yes 10 digits, no formatting
Authentication Code No UAT only — submit to TSYS to authenticate a terminal and receive a gen_key
Gen Key No Pass this if you have previously authenticated a terminal with authentication_code
Currency Code No Defaults to 840 (USD)
Country Code No Defaults to 840 (US)

Once saved, assign the terminal to a location and generate merchant credentials as usual.

Via the API

Send Authorization: Bearer {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 TSYS processor configuration ID
terminal_name Yes Display name for the terminal
terminal_description No Optional description
var_sheet Yes TSYS VAR sheet object — see fields below

Example

curl https://api.uat.koard.com/v2/terminals \
  -X POST \
  -H "Authorization: Bearer $KOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "100200300001",
    "processor_config_id": "prc_live_tsys_us",
    "terminal_name": "Front Counter iPhone",
    "var_sheet": {
      "acquirer_bin": "123456",
      "merchant_number": "123456789012",
      "store_number": "0001",
      "terminal_number": "0001",
      "merchant_category_code": "5812",
      "merchant_name": "Bluebird Coffee Roasters",
      "merchant_location": "San Francisco",
      "merchant_state": "CA",
      "city_code": "94105",
      "acceptor_street_address": "123 Market Street",
      "industry_code": "R",
      "acceptor_phone": "4155551234",
      "acceptor_customer_service_phone": "4155551234"
    }
  }'

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. All VAR sheet fields are optional on update.

Example

curl https://api.uat.koard.com/v2/terminals/500600700001 \
  -X PUT \
  -H "Authorization: Bearer $KOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "var_sheet": {
      "merchant_name": "Bluebird Coffee — Mission",
      "acceptor_street_address": "456 Valencia Street"
    }
  }'

VAR Sheet Fields

Required

Field Format Description
acquirer_bin 6 digits TSYS acquirer BIN — provided by TSYS for your VAR sheet
merchant_number 12 digits TSYS merchant number — unique identifier for the merchant at the acquirer
store_number 4 digits Store number — typically 0001 if the merchant has a single location
terminal_number 4 digits Terminal number — typically 0001 for the first terminal at a store
merchant_category_code 4 digits MCC for the merchant's business type (e.g. 5812 for restaurants)
merchant_name string Merchant DBA name as it should appear on cardholder statements
merchant_location string Merchant city
merchant_state 2 letters US state abbreviation (e.g. CA)
city_code 5 digits ZIP code (e.g. 94105)
acceptor_street_address string Physical street address of the merchant location
industry_code string See Industry Codes below
acceptor_phone 10 digits Merchant phone number — digits only, no formatting
acceptor_customer_service_phone 10 digits Customer-facing service phone number — digits only, no formatting
time_zone_diff 3 digits TSYS time zone code — see Time Zone Codes below

Optional

Field Default Description
currency_code 840 ISO 4217 numeric currency code — 840 for USD
country_code 840 ISO 3166 numeric country code — 840 for US
language_indicator 00 2-digit language indicator — see Language Indicators below
authentication_code UAT only. Submit this code to TSYS to authenticate a terminal and receive a gen_key in return
gen_key The key returned after authenticating with authentication_code. Pass this on subsequent requests if you have previously authenticated a terminal
surcharge_rate Surcharge percentage to apply automatically (e.g. 3.5 for 3.5%). Set to null to disable automatic surcharge logic. Set to 0 to never surcharge. Configured via PUT /v2/terminals/{terminal_id}

Industry Codes

Code Industry Type
A Auto Rental
B Bank / Financial Institution
D Direct Marketing
H Hotel
L Limited Amount Terminal
O Oil Company / Automated Fueling System
P Passenger Transport
R Retail / Restaurant / Grocery

Use R for most mPOS use cases.

Language Indicators

Indicator Language
00 English
01 Spanish
02 Portuguese
03 Reserved for Irish
04 Reserved for French
05 Reserved for German
06 Reserved for Italian
07 Reserved for Dutch

Time Zone Codes

Code Time Zone
705 Eastern (EST)
706 Central (CST)
707 Mountain (MST)
708 Pacific (PST)

Gotchas

  • merchant_number must be exactly 12 digits. TSYS will reject shorter values. Left-pad with zeros if your MID is fewer than 12 digits.
  • store_number and terminal_number must be exactly 4 digits. Use 0001, not 1.
  • city_code must be exactly 5 digits. Left-pad with a zero for ZIP codes starting with 0 (e.g. 02101 for Boston).
  • Phone numbers must be exactly 10 digits. No dashes, spaces, or country codes — strip all formatting before submitting.
  • merchant_name appears on cardholder statements. Make sure it matches the merchant's registered DBA name — discrepancies can trigger disputes.
  • industry_code affects transaction routing. Using the wrong code can cause authorization failures or incorrect interchange rates.
  • acquirer_bin is VAR sheet-level, not per-merchant. All merchants under the same TSYS VAR sheet share the same BIN. Do not confuse this with the merchant number.

Troubleshooting

400 Bad Request on create

  • Check that all required VAR sheet fields are present.
  • Verify merchant_number is 12 digits, store_number / terminal_number are 4 digits, city_code is 5 digits, and phone numbers are 10 digits.
  • Confirm processor_config_id is a valid TSYS config ID for your environment.

Transactions erroring after boarding

  • A VAR sheet field is likely incorrect. The most common culprits are acquirer_bin, merchant_number, store_number, and terminal_number — verify each matches exactly what TSYS has on file, including leading zeros.
  • Check industry_code is appropriate for the merchant's transaction type — an incorrect code can cause authorization failures.
  • If there is no open batch in our system for the terminal, transactions will error. Ensure a batch has been opened before processing payments.

Wrong merchant name on statements

  • Use PUT /v2/terminals/{terminal_id} to update merchant_name in the var_sheet. Changes take effect on the next transaction.