Save Card (Recurring)
info
Optional. Save the shopper's card during a terminal payment so you can charge it later, for example for a subscription or future purchases.
Add TokenRequestedType and SaleToAcquirerData to SaleData in the payment request.
Request Example
{
"SaleToPOIRequest": {
"MessageHeader": {
"ProtocolVersion": "3.0",
"MessageClass": "Service",
"MessageCategory": "Payment",
"MessageType": "Request",
"SaleID": "POS-01",
"ServiceID": "0002",
"POIID": "S1F2-000158213601234"
},
"PaymentRequest": {
"SaleData": {
"SaleTransactionID": {
"TransactionID": "9990QQAZ1222",
"TimeStamp": "2026-10-01T12:05:00+00:00"
},
"TokenRequestedType": "Customer",
"SaleToAcquirerData": "shopperReference=SHOPPER-123&shopperEmail=shopper@example.com&recurringProcessingModel=CardOnFile"
},
"PaymentTransaction": {
"AmountsReq": {
"Currency": "ISK",
"RequestedAmount": 4890
}
}
}
}
}
Request Fields
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| TokenRequestedType | String | Required | Set to Customer to save the card. | Customer |
| shopperReference (in SaleToAcquirerData) | String | Required | Your unique ID for the shopper. Use the same one when you charge the saved card later. | SHOPPER-123 |
| shopperEmail (in SaleToAcquirerData) | String | Optional | The shopper's email address. | shopper@example.com |
| recurringProcessingModel (in SaleToAcquirerData) | String | Required | How the saved card will be used. See the values below. | CardOnFile |
recurringProcessingModel values
| Value | Use it when |
|---|---|
CardOnFile | The shopper is present for later payments, for example a faster checkout next time. |
Subscription | You charge the shopper on a fixed schedule, for example monthly. |
UnscheduledCardOnFile | You charge the shopper at irregular times without them present, for example top-ups. |
Response
The response is the same as a normal payment response. AdditionalResponse also includes the saved card's token and the shopperReference. Store the token with the shopper to charge the card later.