| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Submit Terminal
Stages and boards a terminal to TSYS for a specific merchant in Netevia HQ. The request requires the merchant profile ID and a terminal object containing the terminalType — selected from a comprehensive enum of supported terminal hardware and gateway types (PAX, Dejavoo, ValorPOS, Verifone, Ingenico, Hypercom, Clover, and various gateway integrations). An optional terminalId can be provided to update an existing terminal record. On success, the response includes the terminal ID and its new status.
Endpoint
POST /api/v1/merchant/terminal
Authentication
Basic HTTP Authentication required.
Encode username:password in Base64 and pass in the Authorization header:
Authorization: Basic {base64(username:password)}
When to use
Use this endpoint to perform the full terminal boarding workflow — both staging and TSYS submission — in a single call. It is the primary endpoint for completing terminal setup after a merchant has been approved and their equipment has been assigned. If you only need to pre-stage a terminal without immediate TSYS boarding (e.g., to generate a VAR sheet), use POST /api/v1/merchant/stageOnlyTerminal instead.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | Merchant profile ID for which the terminal is being submitted |
| terminal | object | Yes | Terminal configuration object containing the terminal type |
| terminal.terminalType | string (enum) | Yes | The terminal hardware or gateway type. See supported values below |
| terminalId | integer (int32) | No | Existing terminal ID to update; omit to create a new terminal record |
Supported terminalType values:
HYPERCOM_M4230_SPOSDCC, HYPERCOM_T4230_SPOSDCC, INGENICO_ICT220_INGEMV4, INGENICO_ICT220CTL_INGEMV4, INGENICO_ICT250_INGEMV4, INGENICO_IWL220_INGEMV4, INGENICO_IWL250_INGEMV4, INGENICO_IPP320_INGEMV4, VERIFONE_VX520_XEVA440, VERIFONE_VX680_XEVA440, CLSBPLUS_PAX, MULTIPASS, HCSTAGE, DIAL_PAY, NETEVIA_GATEWAY, AUTH_NET_GATEWAY, NMI_Unified_Gateway, USAePay_Gateway, Aldelo_EDC, Cardflight_mPOS, Dejavoo_Z8, Dejavoo_Z9, Dejavoo_Z11, Pax_S80, Pax_S300, Poynt, EHopper, Freedom_POS, Netevia_Light_POS, STGENCR, HCSTGEN, ValorVP100, ValorVP300, DejavooQD2, DejavooQD4, DejavooQD3, DejavooQD5, DejavooP1, DejavooP3, DejavooP5, ValorVL100, ValorVL300, ValorVL110, ValorVP550, ValorVP800, ValorRCKT, ValorVirtualTerminal
{
"id": 78234,
"terminal": {
"terminalType": "Dejavoo_Z11"
},
"terminalId": null
}Response
200 OK
| Field | Type | Description |
|---|---|---|
| data | object | Terminal result object |
| data.terminalId | integer | ID of the created or updated terminal |
| data.status | string (enum) | Current terminal status: New, Submitted, Changed, Closed, CloseTemporary, or NotSubmitted |
| data.requestId | integer | Unique request ID |
| data.success | boolean | True if boarding was successful |
| data.error | string | Error message on failure; null on success |
| data.validationErrors | array | Field-level validation errors, if any |
| status | string | HTTP status string (e.g., OK) |
| error | string | API-level error message, if any |
| warning | string | Non-fatal warning message, if any |
| validationResults | array | Validation result objects, if any |
| requestId | integer | Outer request ID for tracking |
{
"data": {
"terminalId": 4822,
"status": "Submitted",
"requestId": 78335,
"success": true,
"error": null,
"validationErrors": []
},
"status": "OK",
"error": null,
"warning": null,
"validationResults": [],
"requestId": 78335
}Error Codes
| Code | When it happens |
|---|---|
| 400 | id or terminal.terminalType is missing; terminalType is not a valid enum value; malformed request body |
| 401 | Invalid or missing Basic Auth credentials |
| 403 | User does not have permission for this operation |
| 404 | Merchant profile not found for the given id |
| 500 | Internal server error during terminal boarding or TSYS submission |
Common Mistakes
- Providing a
terminalTypestring that does not exactly match one of the enum values — the field is case-sensitive and must be an exact match - Omitting the
terminalobject entirely — the nested object is required even if onlyterminalTypeis being set - Using this endpoint when only staging is needed — if TSYS boarding is not yet desired, use
POST /api/v1/merchant/stageOnlyTerminalinstead - Not saving the returned
terminalIdfromdata.terminalId— this ID is needed for all future terminal operations and status checks
Related Endpoints
POST /api/v1/merchant/stageOnlyTerminal— stage a terminal without immediately boarding to TSYSGET /api/v1/merchant/equipment— view all equipment assigned to a merchant, including terminal recordsPOST /api/v1/equipment/equipmentpos— add POS equipment to the merchant before terminal boardingGET /api/v1/equipment/pos— retrieve the POS equipment catalog
Example
curl -X POST "https://hq.staging.netevia.dev/api/v1/merchant/terminal" \
-H "Authorization: Basic $(echo -n 'username:password' | base64)" \
-H "Content-Type: application/json" \
-d '{
"id": 78234,
"terminal": {
"terminalType": "Dejavoo_Z11"
}
}'