Airwallex logo
Airwallex logoAirwallex logo

Terminal Simulation

Copy for LLMView as Markdown

A Terminal represents a virtual point-of-sale (POS) device registered in the sandbox environment for testing in-person payment flows.

Endpoints
POST /api/v1/simulation/pa/pos/terminals/generate_activation_code
POST /api/v1/simulation/pa/pos/terminals/turn_on
POST /api/v1/simulation/pa/pos/terminals/turn_off
GET /api/v1/simulation/pa/pos/terminals/payment_scenarios
POST /api/v1/simulation/pa/pos/terminals/confirm_payment_intent

Generate an activation code

POST /api/v1/simulation/pa/pos/terminals/generate_activation_code

Generates an activation code for the terminal owner to enter in the Airwallex web app to activate the terminal device.

Request body
request_idrequiredstring

UUID of the request

Response body - 201 Created
activation_codestring

The activation code read from the terminal

expires_atinteger

Expiration time of the activation code

Errors
Error statusDescription
400

invalid_argument

401

credentials_invalid

500

service_unavailable

POST /api/v1/simulation/pa/pos/terminals/generate_activation_code
$curl --request POST \
> --url 'https://api-demo.airwallex.com/api/v1/simulation/pa/pos/terminals/generate_activation_code' \
> --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
> --header 'Content-Type: application/json' \
> --data '{
> "request_id": "123e4567-e89b-12d3-a456-426614174000"
>}'
Response (201 Created)
1{
2 "activation_code": "5W0D3E8L",
3 "expires_at": 1761031320416
4}
Was this section helpful?

Turn on a terminal

POST /api/v1/simulation/pa/pos/terminals/turn_on

Turns on the terminal device.

Request body
terminal_idrequiredstring

Terminal unique identifier

Response body - 200 OK
connection_statusstring

Terminal device connection status. One of: CONNECTED, DISCONNECTED

terminal_idstring

Terminal unique identifier

Errors
Error statusDescription
400

invalid_argument

401

credentials_invalid

404

not_found

500

service_unavailable

POST /api/v1/simulation/pa/pos/terminals/turn_on
$curl --request POST \
> --url 'https://api-demo.airwallex.com/api/v1/simulation/pa/pos/terminals/turn_on' \
> --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
> --header 'Content-Type: application/json' \
> --data '{
> "terminal_id": "ter_stnck59hc8ej0qujy"
>}'
Response (200 OK)
1{
2 "connection_status": "CONNECTED",
3 "terminal_id": "ter_stnck59hc8ej0qujy"
4}
Was this section helpful?

Turn off a terminal

POST /api/v1/simulation/pa/pos/terminals/turn_off

Turns off the terminal device.

Request body
terminal_idrequiredstring

Terminal unique identifier

Response body - 200 OK
connection_statusstring

Terminal device connection status. One of: CONNECTED, DISCONNECTED

terminal_idstring

Terminal unique identifier

Errors
Error statusDescription
400

invalid_argument

401

credentials_invalid

404

not_found

500

service_unavailable

POST /api/v1/simulation/pa/pos/terminals/turn_off
$curl --request POST \
> --url 'https://api-demo.airwallex.com/api/v1/simulation/pa/pos/terminals/turn_off' \
> --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
> --header 'Content-Type: application/json' \
> --data '{
> "terminal_id": "ter_stnck59hc8ej0qujy"
>}'
Response (200 OK)
1{
2 "connection_status": "CONNECTED",
3 "terminal_id": "ter_stnck59hc8ej0qujy"
4}
Was this section helpful?

Get available payment scenarios

GET /api/v1/simulation/pa/pos/terminals/payment_scenarios

Retrieves all payment scenarios supported by the sandbox environment for in-person payment flows.

Response body - 200 OK
itemsarray

All available payment scenarios

items.descriptionstring

The description of the payment scenario

items.namestring

The name of the payment scenario

Errors
Error statusDescription
400

invalid_argument

401

credentials_invalid

500

service_unavailable

GET /api/v1/simulation/pa/pos/terminals/payment_scenarios
$curl --request GET \
> --url 'https://api-demo.airwallex.com/api/v1/simulation/pa/pos/terminals/payment_scenarios' \
> --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
> --header 'Content-Type: application/json'
Response (200 OK)
1{
2 "items": [
3 {
4 "description": "Mastercard chip card without PIN verification",
5 "name": "mastercard_chip_no_pin"
6 }
7 ]
8}
Was this section helpful?

Confirm payment using a scenario

POST /api/v1/simulation/pa/pos/terminals/confirm_payment_intent

Confirm the current terminal's linked payment using a specific scenario.

Request body
payment_scenario_namerequiredstring

Payment scenario name. You can retrieve supported values using the List payment scenarios API (/api/v1/simulation/pa/pos/terminals/payment_scenarios).

terminal_idrequiredstring

Terminal unique identifier

Response body - 200 OK
payment_intentobject

The payment intent that has been confirmed

payment_intent.idstring

The unique identifier of the payment intent

payment_intent.statusstring

The status of the payment intent

terminal_idstring

Terminal unique identifier

Errors
Error statusDescription
400

invalid_argument

401

credentials_invalid

500

service_unavailable

POST /api/v1/simulation/pa/pos/terminals/confirm_payment_intent
$curl --request POST \
> --url 'https://api-demo.airwallex.com/api/v1/simulation/pa/pos/terminals/confirm_payment_intent' \
> --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \
> --header 'Content-Type: application/json' \
> --data '{
> "payment_scenario_name": "visa_chip_with_pin",
> "terminal_id": "ter_stnck59hc8ej0qujy"
>}'
Response (200 OK)
1{
2 "payment_intent": {
3 "id": "int_hkstfc294hc8ff7p1nn",
4 "status": "REQUIRES_CAPTURE"
5 },
6 "terminal_id": "ter_stnck59hc8ej0qujy"
7}
Was this section helpful?