Skip to main content

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.

RequestMessageCategoryUse it to
PaymentPaymentTake a payment.
RefundReversalRefund a payment, fully or partly.
AbortAbortCancel a payment that is still waiting on the terminal.
Transaction StatusTransactionStatusCheck 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.