Skip to main content

Payment Request

A payment request starts a payment on the terminal. The shopper taps or inserts their card, and you get the result back in the same call.

Flow​

  1. Your POS sends a payment request to Adyen.
  2. Adyen forwards it to the terminal, which asks the shopper for their card.
  3. The terminal processes the payment.
  4. Your POS gets the result in the response.

Test URL​

POST https://terminal-api-test.adyen.com/sync

Add your API key to the header:

  • X-API-Key: [your-api-key]
warning

The connection stays open until the shopper finishes. Set your HTTP timeout to at least 150 seconds.

Request Example​

{
"SaleToPOIRequest": {
"MessageHeader": {
"ProtocolVersion": "3.0",
"MessageClass": "Service",
"MessageCategory": "Payment",
"MessageType": "Request",
"SaleID": "POS-01",
"ServiceID": "0001",
"POIID": "S1F2-000158213601234"
},
"PaymentRequest": {
"SaleData": {
"SaleTransactionID": {
"TransactionID": "9990QQAZ1221",
"TimeStamp": "2026-10-01T12:00:00+00:00"
}
},
"PaymentTransaction": {
"AmountsReq": {
"Currency": "ISK",
"RequestedAmount": 4890
}
}
}
}
}

Request Fields​

FieldTypeRequiredDescriptionExample
MessageCategoryStringRequiredThe type of request. Payment for a payment.Payment
SaleIDStringRequiredThe ID of your POS system or cash register.POS-01
ServiceIDStringRequiredYour unique ID for this request. Must be unique per terminal within 48 hours. Max 10 characters.0001
POIIDStringRequiredThe ID of the terminal. See Get Started.S1F2-000158213601234
TransactionIDStringRequiredYour reference for the payment.9990QQAZ1221
TimeStampStringRequiredThe date and time of the request, in ISO 8601 format.2026-10-01T12:00:00+00:00
CurrencyStringRequiredThe three-character ISO currency code.ISK
RequestedAmountDecimalRequiredThe amount in major units, so 4890 is 4.890 ISK and 10.99 is 10,99 EUR.4890
caution

RequestedAmount is in major units. This differs from Straumur's Hosted Checkout and Payment Gateway, which use minor units.

Response​

{
"SaleToPOIResponse": {
"MessageHeader": {
"MessageCategory": "Payment",
"MessageType": "Response",
"SaleID": "POS-01",
"ServiceID": "0001",
"POIID": "S1F2-000158213601234"
},
"PaymentResponse": {
"POIData": {
"POITransactionID": {
"TransactionID": "BV0q001765198762003.NC6HT9CRT65ZGN82",
"TimeStamp": "2026-10-01T12:00:15.000Z"
}
},
"PaymentResult": {
"AmountsResp": {
"Currency": "ISK",
"AuthorizedAmount": 4890
}
},
"Response": {
"Result": "Success",
"AdditionalResponse": "pspReference=NC6HT9CRT65ZGN82&..."
}
}
}
}

Response Fields​

FieldTypeDescriptionExample
ResultStringSuccess or Failure.Success
ErrorConditionStringOnly on failure. Why the payment failed, for example Refusal or Aborted.Refusal
TransactionID (in POIData)StringThe terminal's transaction reference. You need it for refunds. The part after the dot is the PSP reference.BV0q001765198762003.NC6HT9CRT65ZGN82
AuthorizedAmountDecimalThe amount that was authorized.4890
AdditionalResponseStringExtra details about the payment, as URL-encoded key-value pairs.pspReference=NC6HT9CRT65ZGN82&...
tip

If you don't get a response (for example a timeout), don't send the payment again. Check what happened with a Transaction Status request.