POST /sales

Prev Next

This API endpoint processes card-present sales transactions for a POS system. It accepts payment details, including terminal and operator information, and returns a response with the transaction ID, payment status, and card details.

Guide

  1. Enter the sale request

  2. Perform the transaction on the terminal: insert/swipe/tap the card to complete the transaction

  3. Based on the response from the terminal/external terminal simulator, the POS Cloud will send back the response

Step 1 - Request

POST /v1/card-present/sales HTTP/1.1                         
Host: api.blinkpayment.co.uk                     
Content-Type: application/json
Authorization: Basic ACCESS_TOKEN    # from Blink pos_api_key:pos_api_secret
User-Agent: AcmeApp/1.2.0 (ReactNative; Android 11+; POS2.0+; Build/123)

{
  "site_branch_id": "London",
  "pos_location": "POS-25",
  "terminal_id": "T650P-451-863-867-MADAN",
  "operator_id": "28465",
  "order_number": "2780576984",
  "metadata": {},
  "currency": "GBP",
  "requested_amount": "45.87",
  "request_timestamp": "2025-06-19T12:46:45+01:00",
  "is_receipt_required": true,
  "request_tips": false
}

Field Name

Type

Description

Nullable

Content-Type (header)

varchar(50)

application/json

NO

Authorization (header)

varchar(512)

Authorization header for authenticating the request made up of pos_api_key and pos_api_secret.
(e.g., Basic ZjdkNDcxNjYtMThhYy00????)

NO

User-Agent (header)

varchar(255)

A brief overview of the app or software, version and comments related to the software stack and minimum client specifications.
e.g. AcmeApp/1.2.0 (ReactNative; Android 11+; POS2.0+; Build/123)

NO

site_branch_id

varchar(16)

Site or branch ID
(e.g., London - Oxford Street)

NO

pos_location

varchar(16)

POS identifier
(e.g., POS 5)

NO

terminal_id

varchar(35)

Unique terminal ID made up of model and serial number.
(e.g., T650m-451-962-212)

NO

operator_id

varchar(255)

ID of the operator (e.g., user, staff member) who processed the payment. (e.g., 440010051-Mohsin, numeric (16))

YES

order_number

varchar(25)

Optional field that can be used by client to send a reference string value. (e.g,. 841754987AB)

YES

metadata

json(1024)

Optional field that can be used for debugging, filtering linking to other systems. It contains custom vendor, POS, customer or order details in JSON format. (e.g.
{"note": "Refund for overcharge"}, {"salesforce_id": "SF123456"}, {"server": "dev"}, {"partner": "Shopify", "order_id": "98765"})

YES

currency

varchar(3)

The currency must be a valid ISO 4217 code (e.g., GBP, USD, EUR).

NO

requested_amount

decimal(8,2)

Requested amount must be between 0.01 and 999,999.99

NO

request_timestamp

datetime

The request_timestamp must be a valid ISO 8601 datetime string (e.g., 2025-02-02T14:43:59+01:00)

NO

is_receipt_required

boolean

The is_receipt_required filed must be a boolean value either true or false

YES

request_tips

boolean

The request_tips filed must be a boolean value either true or false

NO

Step 2 - Response

The POST /sales endpoint can return different responses depending on whether the card is tapped, inserted, or swiped.

There are seven responses that can be handled.

Response 1 - Tap card

HTTP/1.1 201 Created
Content-Type: application/json

{
    "result": "SUCCESS",
    "transaction_id": "BL-6XMMWGY4G12PYR4X",
    "card_type": "MasterCard",
    "card_number": "54609784****4213",
    "card_mode": "tap",
    "receipt_text": "\nVerifone\nTest Address\nTest City\nUnited Kingdom\nhelpdesk@verifone.com\nMERCHANT COPY\nMASTERCARD\nCAP1 MASTERCARD\n************4213\nSALE\nContactless\nPlease debit my account\nTotal Amount\nGBP 49.30\nApproved\nNO CARDHOLDER VERIFICATION\nPLEASE RETAIN RECEIPT\nDID\n0200373650010652\nMID\n12345678\nTID\n37622781\nDATE\n07/08/2025\nTIME\n16:43:27\nEFTSN\n3240\nAuth Code\n789DE\nRef\n071643003240\nMerchant Ref\nBL-6XMMWGY4G12PYR4X\nAID\nA0000000041010\nApp Eff01/24\nApp Seq01@#Verifone\nTest AddressTest CityUnited Kingdomhelpdesk@verifone.com\nCARDHOLDER COPY\nMASTERCARD\nCAP1 MASTERCARD\n************4213\nSALE\nContactless\nPlease debit my account\nTotal Amount                   GBP 49.30\nApproved\nNO CARDHOLDER VERIFICATION\nPLEASE RETAIN RECEIPT\nDID                     0200373650010652\nMID                             ****5678\nTID                             ****2781\nDATE                          07/08/2025\nTIME                            16:43:27\nAuth Code                          789DE\nRef                         071643003240\nAID                       A0000000041010\nApp Seq                               01\n",
    "data": {
        "site_branch_id": "London",
        "pos_location": "POS-25",
        "terminal_id": "T650M-451-962-212-MOHSIN",
        "operator_id": "753231",
        "order_number": "3037180886",
        "metadata": {},
        "currency": "GBP",
        "requested_amount": "49.30",
        "request_timestamp": "2025-08-07T15:43:20+01:00",
        "is_receipt_required": true,
        "request_tips": false
    }
}

Field Name

Type

Description

result

varchar(10)

SUCCESS

transaction_id

varchar(50)

Unique identifier for the pre-auth transaction.

card_type

varchar(10)

Type of card used for the transaction.

card_number

varchar(20)

Masked card number for security.

card_mode

varchar(15)

Mode of transaction (e.g., chip, contactless).

receipt_text

text

Provide receipt text (This parameter is only returned in the response if in the request body is_receipt_required is set to True)

data

json

Return the payload from the request.

Response 2a - Insert card - valid pin

HTTP/1.1 201 Created
Content-Type: application/json

{
    "result": "SUCCESS",
    "transaction_id": "BL-YX8JG43LRMJKKZQX",
    "card_type": "VISA",
    "card_number": "41654903****9725",
    "card_mode": "insert",
    "receipt_text": "\nVerifone\nTest Address\nTest City\nUnited Kingdom\nhelpdesk@verifone.com\nMERCHANT COPY\nVISA\nRevolut\n************9725\nSALE\nICC\nPlease debit my account\nTotal Amount\nGBP 5.02\nApproved\nPIN VERIFIED\nPLEASE RETAIN RECEIPT\nDID\n0200373650010652\nMID\n12345678\nTID\n37622781\nDATE\n07/08/2025\nTIME\n17:00:38\nEFTSN\n3245\nAuth Code\n789DE\nRef\n071700003245\nMerchant Ref\nBL-YX8JG43LRMJKKZQX\nAID\nA0000000031010\nApp Eff10/24\nApp Seq00@#Verifone\nTest AddressTest CityUnited Kingdomhelpdesk@verifone.com\nCARDHOLDER COPY\nVISA\nRevolut\n************9725\nSALE\nICC\nPlease debit my account\nTotal Amount                    GBP 5.02\nApproved\nPIN VERIFIED\nPLEASE RETAIN RECEIPT\nDID                     0200373650010652\nMID                             ****5678\nTID                             ****2781\nDATE                          07/08/2025\nTIME                            17:00:38\nAuth Code                          789DE\nRef                         071700003245\nAID                       A0000000031010\nApp Seq                               00\n",
    "data": {
        "site_branch_id": "London",
        "pos_location": "POS-25",
        "terminal_id": "T650M-451-962-212-MOHSIN",
        "operator_id": "734745",
        "order_number": "2299441030",
        "metadata": {},
        "currency": "GBP",
        "requested_amount": "5.01",
        "request_timestamp": "2025-08-07T16:00:37+01:00",
        "is_receipt_required": true,
        "request_tips": false
    }
}

Field Name

Type

Description

result

varchar(10)

SUCCESS

transaction_id

varchar(50)

Unique identifier for the pre-auth transaction.

card_type

varchar(10)

Type of card used for the transaction.

card_number

varchar(20)

Masked card number for security.

card_mode

varchar(15)

Mode of transaction (e.g., chip, contactless).

receipt_text

text

Provide receipt text(This paramter is only returned in the response if in the request body is_receipt_required is set to True)

data

json

Return the payload from the request.

Response 2b - Insert card - invalid pin

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Transaction cancelled."
    "transaction_id": "2780576984",
    "card_type": "MasterCard",
    "card_number": "52993074****5859",
    "card_mode": "insert",
    "receipt_text": "\nVerifone\nTest Address\nTest City\nUnited Kingdom\nhelpdesk@verifone.com\nMERCHANT COPY\nVISA\nRevolut\n************9725\nSALE\nICC\nPlease debit my account\nTotal Amount\nGBP 1,003.00\nApproved\nPIN VERIFIED\nPLEASE RETAIN RECEIPT\nDID\n0200373650010652\nMID\n12345678\nTID\n37622781\nDATE\n07/08/2025\nTIME\n17:03:38\nEFTSN\n3250\nAuth Code\n789DE\nRef\n071703003250\nMerchant Ref\nBL-WX6N7ERZM2NE8L6X\nAID\nA0000000031010\nApp Eff10/24\nApp Seq00@#Verifone\nTest AddressTest CityUnited Kingdomhelpdesk@verifone.com\nCARDHOLDER COPY\nVISA\nRevolut\n************9725\nSALE\nICC\nPlease debit my account\nTotal Amount                GBP 1,003.00\nApproved\nPIN VERIFIED\nPLEASE RETAIN RECEIPT\nDID                     0200373650010652\nMID                             ****5678\nTID                             ****2781\nDATE                          07/08/2025\nTIME                            17:03:38\nAuth Code                          789DE\nRef                         071703003250\nAID                       A0000000031010\nApp Seq                               00\n",
    "data": {
        "site_branch_id": "London",
        "pos_location": "POS-25",
        "terminal_id": "T650M-451-962-212-MOHSIN",
        "operator_id": "946220",
        "order_number": "1720155334",
        "metadata": {},
        "currency": "GBP",
        "requested_amount": "1003.00",
        "request_timestamp": "2025-08-07T16:03:37+01:00",
        "is_receipt_required": true,
        "request_tips": false
    }
}

Field Name

Type

Description

result

varchar(10)

FAILURE

transaction_id

varchar(50)

Unique identifier for the pre-auth transaction.

card_type

varchar(10)

Type of card used for the transaction.

card_number

varchar(20)

Masked card number for security.

card_mode

varchar(15)

Mode of transaction (e.g., chip, contactless).

receipt_text

text

Provide receipt text(This paramter is only returned in the response if in the request body is_receipt_required is set to True)

data

json

Return the payload from the request.

Response 2c - Insert card - pin not entered

HTTP/1.1 408 Request Timeout
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Transaction cancelled. Operation Timeout."
    "transaction_id": "2780576984",
    "card_type": "MasterCard",
    "card_number": "52993074****5859",
    "card_mode": "insert",
    "receipt_text": "\nVerifone\nTest Address\nTest City\nUnited Kingdom\nhelpdesk@verifone.com\nMERCHANT COPY\nVISA\nRevolut\n************9725\nSALE\nICC\nPlease debit my account\nTotal Amount\nGBP 1,003.00\nApproved\nPIN VERIFIED\nPLEASE RETAIN RECEIPT\nDID\n0200373650010652\nMID\n12345678\nTID\n37622781\nDATE\n07/08/2025\nTIME\n17:03:38\nEFTSN\n3250\nAuth Code\n789DE\nRef\n071703003250\nMerchant Ref\nBL-WX6N7ERZM2NE8L6X\nAID\nA0000000031010\nApp Eff10/24\nApp Seq00@#Verifone\nTest AddressTest CityUnited Kingdomhelpdesk@verifone.com\nCARDHOLDER COPY\nVISA\nRevolut\n************9725\nSALE\nICC\nPlease debit my account\nTotal Amount                GBP 1,003.00\nApproved\nPIN VERIFIED\nPLEASE RETAIN RECEIPT\nDID                     0200373650010652\nMID                             ****5678\nTID                             ****2781\nDATE                          07/08/2025\nTIME                            17:03:38\nAuth Code                          789DE\nRef                         071703003250\nAID                       A0000000031010\nApp Seq                               00\n",
    "data": {
        "site_branch_id": "London",
        "pos_location": "POS-25",
        "terminal_id": "T650M-451-962-212-MOHSIN",
        "operator_id": "946220",
        "order_number": "1720155334",
        "metadata": {},
        "currency": "GBP",
        "requested_amount": "1003.00",
        "request_timestamp": "2025-08-07T16:03:37+01:00",
        "is_receipt_required": true,
        "request_tips": false
    }
}

Field Name

Type

Description

result

varchar(10)

FAILURE

transaction_id

varchar(50)

Unique identifier for the pre-auth transaction.

card_type

varchar(10)

Type of card used for the transaction.

card_number

varchar(20)

Masked card number for security.

card_mode

varchar(15)

Mode of transaction (e.g., chip, contactless).

receipt_text

text

Provide receipt text(This paramter is only returned in the response if in the request body is_receipt_required is set to True)

data

json

Return the payload from the request.

Response 3a: Swipe card - valid signature

HTTP/1.1 201 Created
Content-Type: application/json

{
    "result": "SUCCESS",
    "is_signature_approved": true,
    "transaction_id": "BL-YX8JG43LPEP32P1X",
    "card_type": "MasterCard",
    "card_number": "54609784****4213",
    "card_mode": "swipe",
    "receipt_text": "\nVerifone\nTest Address\nTest City\nUnited Kingdom\nhelpdesk@verifone.com\nMERCHANT COPY\nMASTERCARD\nMASTERCARD\n************4213\nSALE\nSwipe Card\nPlease debit my account\nTotal Amount\nGBP 110.00\nApproved\nCARDHOLDER'S SIGNATURE\nSIGNATURE VERIFIED\nPLEASE RETAIN RECEIPT\nDID\n0200373650010652\nMID\n12345678\nTID\n37622781\nDATE\n07/08/2025\nTIME\n17:16:09\nEFTSN\n3255\nAuth Code\n789DE\nRef\n071716003255\nMerchant Ref\nBL-YX8JG43LPEP32P1X@#Verifone\nTest AddressTest CityUnited Kingdomhelpdesk@verifone.com\nCARDHOLDER COPY\nMASTERCARD\nMASTERCARD\n************4213\nSALE\nSwipe Card\nPlease debit my account\nTotal Amount                  GBP 110.00\nApproved\nSIGNATURE VERIFIED\nPLEASE RETAIN RECEIPT\nDID                     0200373650010652\nMID                             ****5678\nTID                             ****2781\nDATE                          07/08/2025\nTIME                            17:16:09\nAuth Code                          789DE\nRef                         071716003255\n",
    "data": {
        "site_branch_id": "London",
        "pos_location": "POS-25",
        "terminal_id": "T650M-451-962-212-MOHSIN",
        "operator_id": "321263",
        "order_number": "2060691475",
        "metadata": {},
        "currency": "GBP",
        "requested_amount": "110.00",
        "request_timestamp": "2025-08-07T16:16:06+01:00",
        "is_receipt_required": true,
        "request_tips": false
    }
}

Field Name

Type

Description

result

varchar(10)

SUCCESS

is_signature_approved

boolean

true

transaction_id

varchar(50)

Unique identifier for the pre-auth transaction.

card_type

varchar(10)

Type of card used for the transaction.

card_number

varchar(20)

Masked card number for security.

card_mode

varchar(15)

Mode of transaction (e.g., chip, contactless).

receipt_text

text

Provide receipt text(This paramter is only returned in the response if in the request body is_receipt_required is set to True)

data

json

Return the payload from the request.

Response 3b: Swipe card - invalid signature

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
    "result": "FAILURE",
    "is_signature_approved": false,
    "message": "Transaction declined. Signature Mismatch.",
    "transaction_id": "BL-6XMMWGY4J9G77MLX",
    "card_type": "MasterCard",
    "card_number": "54609784****4213",
    "card_mode": "swipe",
    "receipt_text": "\nVerifone\nTest Address\nTest City\nUnited Kingdom\nhelpdesk@verifone.com\nMERCHANT COPY\nMASTERCARD\nMASTERCARD\n************4213\nSALE\nSwipe Card\nPlease debit my account\nTotal Amount\nGBP 115.00\nDeclined\nPLEASE RETAIN RECEIPT\nDID\n0200373650010652\nMID\n12345678\nTID\n37622781\nDATE\n07/08/2025\nTIME\n17:17:17\nEFTSN\n3256\nRef\n071717003256\nMerchant Ref\nBL-6XMMWGY4J9G77MLX@#Verifone\nTest AddressTest CityUnited Kingdomhelpdesk@verifone.com\nCARDHOLDER COPY\nMASTERCARD\nMASTERCARD\n************4213\nSALE\nSwipe Card\nPlease debit my account\nTotal Amount                  GBP 115.00\nDeclined\nPLEASE RETAIN RECEIPT\nDID                     0200373650010652\nMID                             ****5678\nTID                             ****2781\nDATE                          07/08/2025\nTIME                            17:17:17\nRef                         071717003256\n",
    "data": {
        "site_branch_id": "London",
        "pos_location": "POS-25",
        "terminal_id": "T650M-451-962-212-MOHSIN",
        "operator_id": "228269",
        "order_number": "9358526126",
        "metadata": {},
        "currency": "GBP",
        "requested_amount": "115.00",
        "request_timestamp": "2025-08-07T16:17:16+01:00",
        "is_receipt_required": true,
        "request_tips": false
    }
}

Field Name

Type

Description

result

varchar(10)

FAILURE

is_signature_approved

boolean

false

transaction_id

varchar(50)

Unique identifier for the pre-auth transaction.

card_type

varchar(10)

Type of card used for the transaction.

card_number

varchar(20)

Masked card number for security.

card_mode

varchar(15)

Mode of transaction (e.g., chip, contactless).

data

json

Return the payload from the request.

Response 4: Abort

HTTP/1.1 202 Accepted
Content-Type: application/json
{
    "result": "ABORTED",
    "message": "Aborted by POS",
    "data": {
        "site_branch_id": "London",
        "pos_location": "POS-25",
        "terminal_id": "T650M-451-962-212-MOHSIN",
        "operator_id": "851579",
        "order_number": "1194574331",
        "metadata": {},
        "currency": "GBP",
        "requested_amount": "56.08",
        "request_timestamp": "2025-08-07T16:18:26+01:00",
        "is_receipt_required": true,
        "request_tips": false
    }
}

Field Name

Type

Description

result

varchar(10)

ABORTED

message

varchar(50)

Abort message

data

json

Return the payload from the request.

d

Response 5: TipAmount

HTTP/1.1 201 Created
Content-Type: application/json

{
    "result": "SUCCESS",
    "transaction_id": "BL-ZX9ZKM7NV2J66785",
    "card_type": "MasterCard",
    "card_number": "52993074****5859",
    "card_mode": "tap",
    "authorized_amount": "42.16",
    "tip_amount": "2.01",
    "receipt_text": "\nBlink Payments\n123 Pentonville Rd\nLondon\nGreater London\nUnited Kingdom\nN1 9LG\n+442036685761\na.eder@blinkpayment.co.uk\nMERCHANT COPY\nMASTERCARD\nMASTERCARD\n************5859\nSALE\nContactless\nPlease debit my account\nAmount\nGBP 40.15\nGratuity\nGBP 2.01\nTotal Amount\nGBP 42.16\nApproved\nNO CARDHOLDER VERIFICATION\nPLEASE RETAIN RECEIPT\nDID\n0200373650010647\nMID\n12345678\nTID\n37622782\nDATE\n14/10/2025\nTIME\n11:13:03\nEFTSN\n0756\nAuth Code\n789DE\nRef\n141113000756\nMerchant Ref\nBL-ZX9ZKM7NV2J66785\nAID\nA0000000041010\nApp Eff03/24\nApp Seq01@#Blink Payments\n123 Pentonville RdLondonGreater LondonUnited KingdomN1 9LG+442036685761a.eder@blinkpayment.co.uk\nCARDHOLDER COPY\nMASTERCARD\nMASTERCARD\n************5859\nSALE\nContactless\nPlease debit my account\nAmount                         GBP 40.15\nGratuity                        GBP 2.01\nTotal Amount                   GBP 42.16\nApproved\nNO CARDHOLDER VERIFICATION\nPLEASE RETAIN RECEIPT\nDID                     0200373650010647\nMID                             ****5678\nTID                             ****2782\nDATE                          14/10/2025\nTIME                            11:13:03\nAuth Code                          789DE\nRef                         141113000756\nAID                       A0000000041010\nApp Seq                               01\n",
    "data": {
        "site_branch_id": "London",
        "pos_location": "POS-25",
        "terminal_id": "T650P-451-863-867-MADAN",
        "operator_id": "12345",
        "order_number": "6639492636",
        "metadata": {},
        "currency": "GBP",
        "requested_amount": "40.15",
        "request_timestamp": "2025-10-14T10:13:01+01:00",
        "is_receipt_required": true,
        "request_tips": true
    }
}

Field Name

Type

Description

result

varchar(10)

SUCCESS

transaction_id

varchar(50)

Unique identifier for the pre-auth transaction.

card_type

varchar(10)

Type of card used for the transaction.

card_number

varchar(20)

Masked card number for security.

card_mode

varchar(15)

Mode of transaction (e.g., chip, contactless, tap).

tip_amount

varchar

TipAmount will be present when the terminal/processor reports a tip ("0.00" when none collected).

receipt_text

text

Provide receipt text(This paramter is only returned in the response if in the request body is_receipt_required is set to True)

data

json

Return the payload from the request.

Errors

400 Bad Request

Missing authorization header

HTTP/1.1 400 Bad Request  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "Authorization": "The Authorization header is required and must be provided in the format: Basic <encoded_api_key:secret_key>."
    }
}

Missing currency

HTTP/1.1 400 Bad Request  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "currency": "The currency field is required and cannot be empty."
    }
}

Missing POS_location

HTTP/1.1 400 Bad Request  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "pos_location": "The pos_location field is required and cannot be empty."
    }
}

Missing request_timestamp

HTTP/1.1 400 Bad Request  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "request_timestamp": "The request_timestamp field is required and cannot be empty."
    }
}

Missing requested_amount

HTTP/1.1 400 Bad Request  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "requested_amount": "The requested_amount field is required and cannot be empty."
    }
}

Missing site_branch_id

HTTP/1.1 400 Bad Request  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "site_branch_id": "The site_branch_id field is required and cannot be empty."
    }
}

Missing terminal_id

HTTP/1.1 400 Bad Request  
Content-Type: application/json  
{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "terminal_id": "The terminal_id field is required and cannot be empty."
    }
}

Missing request_tips

HTTP/1.1 400 Bad Request  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "request_tips": "The request_tips field is required and cannot be empty."
    }
}

401 Unauthorized

Acquirer token not found

HTTP/1.1 401 Unauthorized  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "acquirer_token": "The acquirers_token was not found in our system. Please contact the support team."
    }
}

Invalid acquirer token

HTTP/1.1 401 Unauthorized  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "acquirer_token": "The acquirers_token provided is invalid in our system. Please contact the support team."
    }
}

Invalid authorization header

HTTP/1.1 401 Unauthorized  
Content-Type: application/json  

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "Authorization": "The provided Authorization header is invalid. Ensure it follows the correct format: Basic <encoded api_key:secret_key>."
    }
}

403 Forbidden

API key or secret key is invalid

HTTP/1.1 403 Forbidden  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "Authorization": "The provided api_key or secret_key is invalid. Please ensure the credentials are correct and try again."
    }
}

404 Not Found

Invalid terminal_id

HTTP/1.1 404 Not Found
Content-Type: application/json  
{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "terminal_id": "The terminal_id provided is invalid in our system. Please contact the support team."
    }
}

422 Unprocessable Entity

Invalid currency

HTTP/1.1 422 Unprocessable Entity  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "currency": "The currency must be a valid ISO 4217 code (e.g., GBP, USD, EUR)."
    }
}

Invalid metadata

HTTP/1.1 422 Unprocessable Entity  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "metadata": "The metadata must be a valid JSON-formatted string with a maximum length of 1024 characters."
    }
}

Invalid operator_id

HTTP/1.1 422 Unprocessable Entity  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "operator_id": "The operator_id must be a valid string with a maximum length of 255 characters."
    }
}

Invalid POS_location

HTTP/1.1 422 Unprocessable Entity  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "pos_location": "The pos_location must be a valid string with a maximum length of 16 characters."
    }
}

Invalid request_timestamp

HTTP/1.1 422 Unprocessable Entity  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "request_timestamp": "The request_timestamp must be a valid ISO 8601 date (e.g., '2024-02-18T12:34:56')."
    }
}

Invalid requested_amount

HTTP/1.1 422 Unprocessable Entity  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "requested_amount": "The requested_amount must be between 0.01 and 999999.99."
    }
}

Invalid site_branch_id

HTTP/1.1 422 Unprocessable Entity  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "site_branch_id": "The site_branch_id must be a valid string with a maximum length of 16 characters."
    }
}

Invalid terminal_id

HTTP/1.1 422 Unprocessable Entity  
Content-Type: application/json
{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "terminal_id": "The terminal_id must be a valid string with a maximum length of 35 characters."
    }
}

Invalid request_tips

HTTP/1.1 422 Unprocessable Entity  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Field validation failed",
    "errors": {
        "request_tips": "The request_tips must be true or false."
    }
}

429 Too Many Request

Terminal busy

HTTP/1.1 429 Too Many Requests 
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Terminal is busy",
    "errors": {
        "terminal_id": "The terminal is busy processing another request. Please try again later."
    }
}

500 Internal Server Error

Generic error

HTTP/1.1 500 Internal Server Error  
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Something went wrong on our end.",
    "errors": {
        "We're experiencing an issue with our server, but rest assured our team is already working to resolve it. Please try again, and we apologize for the inconvenience."
    }
}

503 Service Unavailable

Lost connection to the terminal

HTTP/1.1 503 Service Unavailable
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Lost connection",
    "errors": {
        "terminal_id": "The connection to the terminal was lost. Please try again."
    }
}

Transaction cancelled - operation timeout

HTTP/1.1 503 Service Unavailable
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Transaction cancelled - operation timeout",
    "errors": {
        "terminal_id": "The transaction was cancelled due to operation timeout. Please try again."
    }
}

Terminal disconnected

HTTP/1.1 503 Service Unavailable
Content-Type: application/json

{
    "result": "FAILURE",
    "message": "Terminal unreachable",
    "errors": {
        "terminal_id": "The terminal is currently offline or unreachable. Please try again."
    }
}