Other Requests
Besides payments, these are the requests most POS systems need. All are sent to the same URL with the same header as the payment request.
| Request | MessageCategory | Use it to |
|---|---|---|
| Payment | Payment | Take a payment. |
| Refund | Reversal | Refund a payment, fully or partly. |
| Abort | Abort | Cancel a payment that is still waiting on the terminal. |
| Transaction Status | TransactionStatus | Check the result of a payment when you didn't get a response. |
Refund
Refund a payment. Use the TransactionID from the payment response's POIData. Leave out ReversedAmount to refund the full amount.
Request
{
"SaleToPOIRequest": {
"MessageHeader": {
"ProtocolVersion": "3.0",
"MessageClass": "Service",
"MessageCategory": "Reversal",
"MessageType": "Request",
"SaleID": "POS-01",
"ServiceID": "0003",
"POIID": "S1F2-000158213601234"
},
"ReversalRequest": {
"OriginalPOITransaction": {
"POITransactionID": {
"TransactionID": "BV0q001765198762003.NC6HT9CRT65ZGN82",
"TimeStamp": "2026-10-01T12:00:15.000Z"
}
},
"ReversalReason": "MerchantCancel",
"ReversedAmount": 1000
}
}
}
Response
{
"SaleToPOIResponse": {
"MessageHeader": {
"MessageCategory": "Reversal",
"MessageType": "Response",
"SaleID": "POS-01",
"ServiceID": "0003",
"POIID": "S1F2-000158213601234"
},
"ReversalResponse": {
"POIData": {
"POITransactionID": {
"TransactionID": "BV0q001765198762003.NC6HT9CRT65ZGN82",
"TimeStamp": "2026-10-01T12:30:02.000Z"
}
},
"Response": {
"Result": "Success",
"AdditionalResponse": "pspReference=QJ7M3KX9W2LV8P41&..."
}
}
}
}
Success means the refund request was accepted. The refund itself is processed afterwards.
Abort
Cancel a payment that is still in progress on the terminal. ServiceID inside MessageReference is the one from the payment you want to cancel. The original payment then returns Failure with ErrorCondition Aborted.
Request
{
"SaleToPOIRequest": {
"MessageHeader": {
"ProtocolVersion": "3.0",
"MessageClass": "Service",
"MessageCategory": "Abort",
"MessageType": "Request",
"SaleID": "POS-01",
"ServiceID": "0004",
"POIID": "S1F2-000158213601234"
},
"AbortRequest": {
"AbortReason": "MerchantAbort",
"MessageReference": {
"MessageCategory": "Payment",
"SaleID": "POS-01",
"ServiceID": "0001"
}
}
}
}
Response
The abort request itself returns no response body. The payment you cancelled returns its response with Failure and Aborted:
{
"SaleToPOIResponse": {
"MessageHeader": {
"MessageCategory": "Payment",
"MessageType": "Response",
"SaleID": "POS-01",
"ServiceID": "0001",
"POIID": "S1F2-000158213601234"
},
"PaymentResponse": {
"POIData": {
"POITransactionID": {
"TransactionID": "BV0q001765198762003",
"TimeStamp": "2026-10-01T12:00:08.000Z"
}
},
"Response": {
"Result": "Failure",
"ErrorCondition": "Aborted",
"AdditionalResponse": "message=Transaction%20aborted&..."
}
}
}
}
Transaction Status
Get the result of an earlier payment, for example after a timeout. ServiceID inside MessageReference is the one from the payment you want to check. The response contains the original payment response.
Request
{
"SaleToPOIRequest": {
"MessageHeader": {
"ProtocolVersion": "3.0",
"MessageClass": "Service",
"MessageCategory": "TransactionStatus",
"MessageType": "Request",
"SaleID": "POS-01",
"ServiceID": "0005",
"POIID": "S1F2-000158213601234"
},
"TransactionStatusRequest": {
"ReceiptReprintFlag": true,
"DocumentQualifier": ["CashierReceipt", "CustomerReceipt"],
"MessageReference": {
"MessageCategory": "Payment",
"SaleID": "POS-01",
"ServiceID": "0001"
}
}
}
}
Response
The original payment response is inside RepeatedMessageResponse. Receipts are left out of this example.
{
"SaleToPOIResponse": {
"MessageHeader": {
"MessageCategory": "TransactionStatus",
"MessageType": "Response",
"SaleID": "POS-01",
"ServiceID": "0005",
"POIID": "S1F2-000158213601234"
},
"TransactionStatusResponse": {
"Response": {
"Result": "Success"
},
"MessageReference": {
"MessageCategory": "Payment",
"SaleID": "POS-01",
"ServiceID": "0001"
},
"RepeatedMessageResponse": {
"MessageHeader": {
"MessageCategory": "Payment",
"MessageType": "Response",
"SaleID": "POS-01",
"ServiceID": "0001",
"POIID": "S1F2-000158213601234"
},
"RepeatedResponseMessageBody": {
"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&..."
}
}
}
}
}
}
}
If the payment is still in progress on the terminal, Result is Failure with ErrorCondition InProgress. Wait a few seconds and check again.