Requests
Pay
The Pay action is the default action. The action is used to perform a single payment with a credit card.
This action does not have service-specific request variables. Advised is to use the basic parameter ClientIP so you have the option to block an IP-address if necessary in the future.
Base JSON request
NoteUse the base request as instructed on this page.
Parameters
Basic Parameters:
- Find basic parameters here.
Pay Request
Parameters
Service-specific parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| ClientIP | String | No | Yes | The IP address of the client. It's recommended to send this in the request so it is possible to block a user based on their IP. |
Example request
{
"Currency": "EUR",
"AmountDebit": 10.00,
"Invoice": "testinvoice 123",
"ClientIP": {
"Type": 0,
"Address": "0.0.0.0"
},
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "Pay"
}
]
}
}Pay Response
Parameters
Example response
{
"Key": "13FAF43579D94F5FB8119A6819XXXXXX",
"Status": {
"Code": {
"Code": 790,
"Description": "Pending input"
},
"SubCode": null,
"DateTime": "2017-03-28T11:41:10"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=AF51FAF1DECC422F936F06D565XXXXXX",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Services": null,
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "testinvoice 123",
"ServiceCode": null,
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 10,
"TransactionType": null,
"MutationType": 0,
"RelatedTransactions": null,
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": null,
"PayerHash": null,
"PaymentKey": null
}Pay Push
Parameters
Service-specific parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| CardNumberEnding | String | N/A | N/A | Last 4 digits of the credit card number. |
| Enrolled | String | N/A | N/A | The enrolled status. |
Example push
{
"Transaction": {
"Key": "13FAF43579D94F5FB8119A6819XXXXXX",
"Invoice": "testinvoice 123",
"ServiceCode": "mastercard",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2017-03-28T11:42:41"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 10,
"TransactionType": "V089",
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "0632"
},
{
"Name": "CardExpirationDate",
"Value": "2017-03"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "513847******0632"
},
{
"Name": "Enrolled",
"Value": "Y"
},
{
"Name": "Authentication",
"Value": "Y"
}
],
"VersionAsProperty": 1
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 2,
"RelatedTransactions": null,
"IsCancelable": false,
"IssuingCountry": "FR",
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "T. Tester",
"PayerHash": "974da7e5d169362946eae68e095bdf88e0dc5c8dd51c932ebf3f81ab9b35e699297c7582b9cd7cda3e63ba11cc116e73e46cf27e51df3ce195bfd402b271af22",
"PaymentKey": "8F813B002FDA4DF1A0314E2CFAXXXXXX"
}
}PayEncrypted
ImportantClient-side encryption integrations are only supported when you are PCI SAQ-A EP compliant. More information can be found here: Self-Assessment Questionnaire A-EP and Attestation of Compliance.
For a regular Pay action, the consumer has to be redirected to our checkout to fill in their card data. With this action and our Client-Side Encryption SDK, we have introduced a way where this redirection is not necessary and you can ask for the consumer's card data on your webshop. All you have to do is encrypt the card data with our Client-Side Encryption SDK and call this action with the "EncryptedCardData" parameter. The value of this parameter is the result of the "encryptCardData" function in our CSE SDK.
PayEncrypted Request
Parameters
Service-specific parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| EncryptedCardData | String | Yes | N/A | The value of this parameter is the result of the "encryptCardData" function of our Client-Side Encryption SDK. |
Example request
{
"Currency": "EUR",
"AmountDebit": 0.01,
"Invoice": "PayEncryptedTest123",
"Description": "PayEncrypted Test 123",
"Services": {
"ServiceList": [
{
"Name": "Mastercard",
"Action": "PayEncrypted",
"Version": 0,
"Parameters": [
{
"Name": "EncryptedCardData",
"GroupType": "",
"GroupID": "",
"Value": "001u8gJNwngKubFCO6FmJod6aESlIFATkKYaj47KlgBp7f3NeVxUzChg1Aug7WD2vc5wut2KU9NPLUaO0tFmzhVLZoDWn7dX4AzGxSjPrsPmDMWYcEkIwMZfcyJqoRfFkF3j15mil3muXxhR1a609NfkTo11J3ENVsvU3k60z+x0jCw6NjzbrweVQhBRkrbs7TBJkS4tR38JiDsXyH2E1JmRHE+o2P9qz4at6w3zggmwImvjt5IIjEr6g8KfsIDXfv7YjEzhJ3P+7uuGoyG2WYm/Pr0+iEmTj5Q/ijkxu1+cDqv5eiB+80KgffPItUZDrnv9sKlVBAr+f53nm1G+Sxp0Q=="
}
]
}
]
}
}PayEncrypted Response
The response is the same as the Pay response.
Parameters
Example response
{
"Key": "051911FB5C0742FD8F5C1B93CFXXXXXX",
"Status": {
"Code": {
"Code": 791,
"Description": "Pending processing"
},
"SubCode": {
"Code": "S002",
"Description": "An additional action is required: RedirectToConsumerBank"
},
"DateTime": "2018-10-19T10:54:47"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=5C927695D7EA4EBEB48CF34B65XXXXXX",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "0000"
},
{
"Name": "CardExpirationDate",
"Value": "2019-04"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "538686******0000"
},
{
"Name": "Enrolled",
"Value": "Y"
}
]
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "PayEncryptedTest123",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "C089",
"MutationType": 1,
"RelatedTransactions": null,
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": "FR",
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "Automated Encryptietest",
"PayerHash": "974da7e5d169362946eae68e095bdf88e0dc5c8dd51c932ebf3f81ab9b35e699297c7582b9cd7cda3e63ba11cc116e73e46cf27e51df3ce195bfd402b271af22",
"PaymentKey": "7B595AFEEA77431EA3F6D46E54XXXXXX"
}PayEncrypted Push
The push is almost the same as the Pay push, except for the ClientSideEncryptionVersion parameter.
Parameters
Service-specific parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| ClientSideEncryptionVersion | String | Yes | N/A | The Client-Side Encryption version that is used to encrypt the card data. |
Example push
{
"Transaction":{
"Key":"051911FB5C0742FD8F5C1B93CFXXXXXX",
"Invoice":"PayEncryptedTest123",
"ServiceCode":null,
"Status":{
"Code":{
"Code":190,
"Description":"Success"
},
"SubCode":{
"Code":"S990",
"Description":"The request was successful."
},
"DateTime":"2018-10-20T05:15:06"
},
"IsTest":true,
"Order":null,
"Currency":"EUR",
"AmountDebit":0.01,
"TransactionType":"C089",
"Services":[
{
"Name":"Mastercard",
"Action":null,
"Parameters":[
{
"Name":"ClientSideEncryptionVersion",
"Value":"1"
}
]
},
{
"Name":"mastercard",
"Action":null,
"Parameters":[
{
"Name":"CardNumberEnding",
"Value":"0000"
},
{
"Name":"CardExpirationDate",
"Value":"2019-04"
},
{
"Name":"MaskedCreditcardNumber",
"Value":"538686******0000"
},
{
"Name":"Enrolled",
"Value":"Y"
}
],
"VersionAsProperty":1
}
],
"CustomParameters":null,
"AdditionalParameters":null,
"MutationType":1,
"RelatedTransactions":null,
"IsCancelable":false,
"IssuingCountry":"FR",
"StartRecurrent":false,
"Recurring":false,
"CustomerName":"Automated Encryptietest",
"PayerHash":"974da7e5d169362946eae68e095bdf88e0dc5c8dd51c932ebf3f81ab9b35e699297c7582b9cd7cda3e63ba11cc116e73e46cf27e51df3ce195bfd402b271af22",
"PaymentKey":"7B595AFEEA77431EA3F6D46E54XXXXXX"
}
}PayWithSecurityCode
When you want your returning customers not to have to fill in all their card data again but still want to perform 3DS authentication, you can use this action. With this action and our Client-Side Encryption SDK, we have introduced a way where you only have to ask for the consumer's security code (CVC) on your webshop and send in the OriginalTransactionKey of the first transaction of this customer. All you have to do is encrypt the security code with our Client-Side Encryption SDK (for more info on our Client-Side Encryption SDK, click here) and call this action with the "EncryptedSecurityCode" parameter. The value of this parameter is the result of the "encryptSecurityCode" function in our CSE SDK.
PayWithSecurityCode Request
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| EncryptedSecurityCode | String | Yes | Yes | The value of this parameter is the result of the "encryptSecurityCode" function of our Client-Side Encryption SDK. |
| OriginalTransactionKey | String | Yes | Transaction key of the initial transaction from where the card data should be copied. Note: This is a basic parameter, not a service-specific parameter. |
Example Request
{
"Invoice": "PayWithSecurityCodeTest",
"Description": "PayWithSecurityCodeTest",
"Currency": "EUR",
"AmountDebit": 0.01,
"OriginalTransactionKey": "6C5DBB69E74644958F8C25199514DC6C",
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "PayWithSecurityCode",
"Parameters": [
{
"Name": "EncryptedSecurityCode",
"Value": "001F3AJT7wkJa04zE8c78P7spOAgHSKH1YKgPlOwXhW049VfIXMwZO32RYna9xZRyUCtfODIoCL8GRQoaZbStlBT4rbF5e4PPvWFSKdvua4rq+GQDNAghfa+ZQz0BzBPfjS0WBdFape9n3zH2vC/0m+wI3QZiDpYYgyWC1/Y3udJDU7JRTVMq/BDHGet+IZ2CDnkeGl813kkYymzYon/QeuQRQ0Wsec5bmVQNYGx62fz70/vLgs0ffff+6DtZtnZWfByRkTwMNebJotlOsSkbhVR5FrHpAbNPCJI+LvJcJL7Eoo+ZuX5/LWGmsT6qnR/uLiIw1DI7mTKGy6/P7IljAE+g=="
}
]
}
]
}
}PayWithSecurityCode Response
The response is the same as the Pay response.
Parameters
Example Response
{
"Key": "FFCB3927675A4AD7912A5447E98F5F26",
"Status": {
"Code": {
"Code": 791,
"Description": "Pending processing"
},
"SubCode": {
"Code": "S002",
"Description": "An additional action is required: TestStatusRedirect"
},
"DateTime": "2020-03-23T16:19:18"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=2EB891F035114226824BC56AFDB33B54",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "0000"
},
{
"Name": "CardExpirationDate",
"Value": "2023-01"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "538686******0000"
},
{
"Name": "ThreeDsVersion",
"Value": "1.0.2"
},
{
"Name": "Enrolled",
"Value": "N"
}
]
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "PayWithSecurityCodeTest",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "C876",
"MutationType": 1,
"RelatedTransactions": [
{
"RelationType": "copied_card_data",
"RelatedTransactionKey": "6C5DBB69E74644958F8C25199514DC6C"
}
],
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": "NL",
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "tes test",
"PayerHash": "4dc3aefaa23fd5d23986186f0b4dc8d25549ac4957338054080928de4d1f76e14c7a1477571ffe1952bc9bb7b63f731930599ae93f0c0d544714b4023eecf8a0",
"PaymentKey": "B2A282CE7C024F0F960EC54122840D12"
}PayWithSecurityCode Push
The push is almost the same as the Pay push, except for the ClientSideEncryptionVersion parameter.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| ClientSideEncryptionVersion | String | N/A | N/A | The Client-Side Encryption version that is used to encrypt the security code. |
Example Push
{
"Transaction":{
"Key":"FFCB3927675A4AD7912A5447E98F5F26",
"Invoice":"PayWithSecurityCodeTest",
"ServiceCode":"mastercard",
"Status":{
"Code":{
"Code":190,
"Description":"Success"
},
"SubCode":{
"Code":"S990",
"Description":"The request was successful."
},
"DateTime":"2020-03-23T16:21:37"
},
"IsTest":true,
"Order":null,
"Currency":"EUR",
"AmountDebit":0.01,
"TransactionType":"C876",
"Services":[
{
"Name":"Mastercard",
"Action":null,
"Parameters":[
{
"Name":"ClientSideEncryptionVersion",
"Value":"1"
}
]
},
{
"Name":"mastercard",
"Action":null,
"Parameters":[
{
"Name":"CardNumberEnding",
"Value":"0000"
},
{
"Name":"CardExpirationDate",
"Value":"2023-01"
},
{
"Name":"MaskedCreditcardNumber",
"Value":"538686******0000"
},
{
"Name":"ThreeDsVersion",
"Value":"1.0.2"
},
{
"Name":"Enrolled",
"Value":"N"
},
{
"Name":"Authentication",
"Value":"Y"
}
],
"VersionAsProperty":1
}
],
"CustomParameters":null,
"AdditionalParameters":null,
"MutationType":1,
"RelatedTransactions":[
{
"RelationType":"copied_card_data",
"RelatedTransactionKey":"6C5DBB69E74644958F8C25199514DC6C"
}
],
"IsCancelable":false,
"IssuingCountry":"NL",
"StartRecurrent":false,
"Recurring":false,
"CustomerName":"tes test",
"PayerHash":"4dc3aefaa23fd5d23986186f0b4dc8d25549ac4957338054080928de4d1f76e14c7a1477571ffe1952bc9bb7b63f731930599ae93f0c0d544714b4023eecf8a0",
"PaymentKey":"B2A282CE7C024F0F960EC54122840D12"
}
}Refund
Refund Request
The Refund action can be used to perform a refund on an earlier credit card transaction. There is no customer interaction needed to do this.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| OriginalTransactionKey | String | Yes | N/A | Transaction key of the payment that needs to be refunded. Note: This is a basic parameter, not a service-specific parameter. |
Example Request
{
"Currency": "EUR",
"AmountCredit": 1.00,
"Invoice": "testinvoice 123",
"OriginalTransactionKey": "13FAF43579D94F5FB8119A6819XXXXXX",
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "Refund"
}
]
}
}Refund Response
Parameters
Example Response
{
"Key": "7E1AD3268A4C49D496BEEFC300XXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2017-03-28T11:48:10"
},
"RequiredAction": null,
"Services": null,
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "testinvoice 123",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountCredit": 1,
"TransactionType": "V197",
"MutationType": 2,
"RelatedTransactions": [
{
"RelationType": "refund",
"RelatedTransactionKey": "13FAF43579D94F5FB8119A6819XXXXXX"
}
],
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "T. Tester",
"PayerHash": null,
"PaymentKey": "A9025EE92CBC4CDD94F9C83F0FXXXXXX"
}Refund Push
Parameters
Example Push
{
"Transaction": {
"Key": "7E1AD3268A4C49D496BEEFC300XXXXXX",
"Invoice": "testinvoice 123",
"ServiceCode": "mastercard",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2017-03-28T11:48:10"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountCredit": 1,
"TransactionType": "V197",
"Services": null,
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 2,
"RelatedTransactions": [
{
"RelationType": "refund",
"RelatedTransactionKey": "13FAF43579D94F5FB8119A6819XXXXXX"
}
],
"IsCancelable": false,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "T. Tester",
"PayerHash": null,
"PaymentKey": "A9025EE92CBC4CDD94F9C83F0FXXXXXX"
}
}Authorize
The Authorize action allows a merchant to make a reservation for a specific amount on a customer’s credit card. Referring to this authorization, it is then possible at a later time to perform one or more charges on the customer's credit card for a total of up to the requested amount. Since an authorize makes a reservation on a credit card, it lowers the available spending limit on the card. A recurrent payment is also possible on an authorisation. In that case, add the basic parameter StartRecurrent with the value "true" in your request.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| ClientIP | String | No | Yes | The IP address of the client. It's recommended to send this in the request so it is possible to block a user based on their IP. |
Example Request
{
"Currency": "EUR",
"AmountDebit": 10.00,
"Invoice": "testinvoice 123",
"ClientIP": {
"Type": 0,
"Address": "0.0.0.0"
},
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "Authorize"
}
]
}
}Authorize Response
If the request has a valid structure and a valid signature, a transaction will be created in the Payment Engine and a response will be returned. In this case, an additional action is required before the transaction can be completed. The customer needs to be redirected to the payment environment through the returned RedirectURL.
Parameters
Example Response
{
"Key": "571457E371FB494FB0E67C99CFXXXXXX",
"Status": {
"Code": {
"Code": 790,
"Description": "Pending input"
},
"SubCode": null,
"DateTime": "2017-03-28T11:50:19"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=B3B96BC48B2C464D9027742FA0XXXXXX",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Services": null,
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "testinvoice 123",
"ServiceCode": null,
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 10,
"TransactionType": null,
"MutationType": 0,
"RelatedTransactions": null,
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": null,
"PayerHash": null,
"PaymentKey": null
}Authorize Push
If the request has a valid structure and a valid signature, a transaction will be created in the Payment Engine and a response will be returned. In this case, an additional action is required before the transaction can be completed. The customer needs to be redirected to the payment environment through the returned RedirectURL.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| CardNumberEnding | String | N/A | N/A | Last 4 digits of the credit card number. |
| Authentication | String | N/A | N/A | Authentication status |
| Enrolled | String | N/A | N/A | The enrolled status. |
| CardExpirationDate | String | N/A | N/A | Expiration date of the used credit card. |
| MaskedCreditcardNumber | String | N/A | N/A | The credit card number (partially masked). |
Example Push
{
"Transaction": {
"Key": "571457E371FB494FB0E67C99CFXXXXXX",
"Invoice": "testinvoice 123",
"ServiceCode": "mastercard",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": null,
"DateTime": "2017-03-28T11:51:15"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 10,
"TransactionType": "V088",
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "9097"
},
{
"Name": "CardExpirationDate",
"Value": "2017-03"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "517043******9097"
},
{
"Name": "Enrolled",
"Value": "Y"
},
{
"Name": "Authentication",
"Value": "Y"
}
],
"VersionAsProperty": 1
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 3,
"RelatedTransactions": null,
"IsCancelable": true,
"IssuingCountry": "DK",
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "T. Tester",
"PayerHash": null,
"PaymentKey": null
}
}PreAuthorize
PreAuthorize is a Customer Initiated Transaction (CIT) action that places a hold (reservation) on the customer's card for the requested amount, without charging it. The reserved amount is charged later with a Capture call, or released with a CancelAuthorize call.
This action was introduced for in-app flows where the final amount is not known upfront (e.g. EV/fuel charging: reserve a maximum amount when the session starts, capture the actual amount when it ends).
PreAuthorize vs Authorize: both are CIT actions with the same request contract. The difference is that PreAuthorize is sent to the card schemes as a pre-authorization (an estimated-amount reservation with the expectation of a later capture for the final — possibly lower — amount), while Authorize is a final-amount authorization. The validity of the hold and the moment the unused reservation is released depend on the acquirer and card-scheme configuration. Use PreAuthorize whenever the capture amount may differ from the reserved amount.
The action is available on both the Visa and Mastercard services. The examples below use Mastercard; Visa works identically (only the transaction type differs — see the table below).
| Action | Visa | Mastercard |
|---|---|---|
| PreAuthorize | I028 | I029 |
| Capture | C800 | C805 |
| CancelAuthorize | I801 | I806 |
Endpoint (test): https://testcheckout.buckaroo.nl/json/Transaction
Reserves the specified amount on the customer's card. The request contains no card parameters: the customer is redirected to the Buckaroo checkout page to enter the card details and complete 3-D Secure (the initial response is 790 Pending input with a RedirectURL). The resulting transaction key must be passed as OriginalTransactionKey in the follow-up Capture or CancelAuthorize call.
3-D Secure & SCA exemptions: as a CIT action, PreAuthorize uses the same SCA-exemption pipeline as Authorize: where a configured exemption applies (e.g. Trusted Beneficiary, TRA, Low Value) the frictionless path is attempted first, with a fallback to a 3-D Secure challenge when the issuer declines the exemption.
Note: PreAuthorize can also be combined with "StartRecurrent": "true" to mark the transaction as the start of a recurring payment series; subsequent PayRecurrent calls can then reference it with OriginalTransactionKey.
Example request
{
"Currency": "EUR",
"AmountDebit": 0.02,
"Invoice": "Automatedtest_Mastercard_0001",
"Description": "Automated test Mastercard",
"ReturnURL": "https://www.buckaroo.nl",
"ReturnURLCancel": "https://www.buckaroo.nl/annuleren",
"ReturnURLError": "https://www.buckaroo.nl/mislukt",
"ReturnURLReject": "https://www.buckaroo.nl/geweigerd",
"Services": {
"ServiceList": [
{
"Name": "Mastercard",
"Action": "PreAuthorize",
"Parameters": []
}
]
}
}Example response
The initial response contains the redirect to the checkout page:
{
"Key": "18212A9366664F29AA4CA1D97CXXXXXX",
"Status": {
"Code": {
"Code": 790,
"Description": "Pending input"
},
"SubCode": null,
"DateTime": "2026-06-29T13:53:57"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=D7CC597FD86A472D9E70904CDBXXXXXX",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Invoice": "Automatedtest_Mastercard_0001",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.02,
"StartRecurrent": false,
"Recurring": false
}After the customer enters the card details and completes 3-D Secure on the checkout page, the final status (e.g. 190 Success) is delivered via the push notification and the customer is returned to the ReturnURL.
PreAuthorize Push
Example push
{
"Transaction": {
"Key": "18212A9366664F29AA4CA1D97CXXXXXX",
"Invoice": "Automatedtest_Mastercard_0001",
"ServiceCode": "mastercard",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": null,
"DateTime": "2026-06-29T13:55:49"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 0.02,
"TransactionType": "I029",
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "0009"
},
{
"Name": "CardExpirationDate",
"Value": "2028-12"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "513029******0009"
},
{
"Name": "CVCResult",
"Value": "C"
},
{
"Name": "AVSResponse",
"Value": "H"
}
],
"VersionAsProperty": 1
}
],
"MutationType": 3,
"IsCancelable": true,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "J. de Tester",
"PayerHash": null,
"PaymentKey": null,
"Description": "Automated test Mastercard"
}
}Note: MutationType is 3 (Informational) — a pre-authorization reserves funds but does not move money, so no payment is created yet (PaymentKey is null). The transaction is cancelable as long as it has not been captured.
Capture
Charges (part of) a previously pre-authorized amount. The OriginalTransactionKey parameter is required and must contain the transaction key of the PreAuthorize transaction.
Partial capture is supported. Whether additional captures are allowed, and when the remaining reservation is released, depends on the underlying acquirer and card-scheme rules: via BAS/CCA only one capture is possible (a second capture returns "Not capturable"), while Worldpay allows multiple partial captures against the remaining reserved amount. Capturing more than the reserved amount is rejected ("Capture amount too large"). Cancel the remaining authorization with CancelAuthorize when no further capture is expected.
Example request
{
"Currency": "EUR",
"AmountDebit": 0.01,
"Invoice": "Automatedtest_Mastercard_0001",
"Description": "Mastercard Capture",
"OriginalTransactionKey": "18212A9366664F29AA4CA1D97CXXXXXX",
"Services": {
"ServiceList": [
{
"Name": "Mastercard",
"Action": "Capture"
}
]
}
}Example response
{
"Key": "99BC63BA36E3457BB9688AB68EXXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": null,
"DateTime": "2026-06-29T13:57:29"
},
"RequiredAction": null,
"RelatedTransactions": [
{
"RelationType": "capture",
"RelatedTransactionKey": "18212A9366664F29AA4CA1D97CXXXXXX"
}
],
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "0009"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "513029******0009"
}
]
}
],
"Invoice": "Automatedtest_Mastercard_0001",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "C805",
"MutationType": 1,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "J. de Tester",
"Description": "Automated test Mastercard"
}The Capture push follows the same structure as the PreAuthorize push, with the capture transaction type (C805 Mastercard / C800 Visa) and the capture's own transaction key.
CancelAuthorize
Releases the hold placed by a PreAuthorize transaction without charging the customer. The OriginalTransactionKey parameter is required.
Note: AmountCredit may be lower than the reserved amount (partial cancel), but only one CancelAuthorize is allowed per original transaction. A capture after a cancellation is rejected ("Capture not possible, authorization already cancelled").
Example request
{
"Currency": "EUR",
"AmountCredit": 0.01,
"Invoice": "Visa_Cancel_Test",
"Description": "Visa CancelAuthorize",
"OriginalTransactionKey": "1137F3F3582C423FBBC996E15AXXXXXX",
"Services": {
"ServiceList": [
{
"Name": "Visa",
"Action": "CancelAuthorize"
}
]
}
}Example response
{
"Key": "7CB73281776241C2B855304E42XXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": null,
"DateTime": "2026-06-30T11:38:12"
},
"RequiredAction": null,
"RelatedTransactions": [
{
"RelationType": "cancel_authorize",
"RelatedTransactionKey": "1137F3F3582C423FBBC996E15AXXXXXX"
}
],
"Invoice": "Visa_Cancel_Test",
"ServiceCode": "visa",
"IsTest": true,
"Currency": "EUR",
"AmountCredit": 0.01,
"TransactionType": "I801",
"MutationType": 3,
"StartRecurrent": false,
"Recurring": false,
"Description": "Visa CancelAuthorize"
}The CancelAuthorize push follows the same structure as the PreAuthorize push, with the cancel transaction type (I801 Visa / I806 Mastercard).
Status codes
| Code | Description |
|---|---|
| 190 | Success — reservation placed / captured / released |
| 490 | Failed — technical failure at the acquirer |
| 690 | Rejected — rejected by the acquirer or card scheme |
| 790 | Pending input — customer is being redirected (card entry / 3-D Secure) |
| 791 | Pending processing — awaiting the acquirer's response |
AuthorizeEncrypted
For a regular Authorize action, the consumer has to be redirected to our checkout to fill in their card data. With this action and our Client Side Encryption SDK, we have introduced a way where this redirection is not necessary, and you can ask for the consumer's card data on your webshop. All you have to do is encrypt the card data with our Client Side Encryption SDK and call this action with the "EncryptedCardData" parameter. The value of this parameter is the result of the "encryptCardData" function in our CSE SDK.
Authorize Request
The request is much like the Authorize request, except for the EncryptedCardData parameter.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| EncryptedCardData | String | Yes | N/A | The value of this parameter is the result of the "encryptCardData" function of our CSE SDK |
Example Request
{
"Currency": "EUR",
"AmountDebit": 0.01,
"Invoice": "AuthorizeEncryptedTest123",
"Description": "Authorize Encrypted Test 123",
"Services": {
"ServiceList": [
{
"Name": "Mastercard",
"Action": "AuthorizeEncrypted",
"Version": 0,
"Parameters": [
{
"Name": "EncryptedCardData",
"GroupType": "",
"GroupID": "",
"Value": "001u8gJNwngKubFCO6FmJod6aESlIFATkKYaj47KlgBp7f3NeVxUzChg1Aug7WD2vc5wut2KU9NPLUaO0tFmzhVLZoDWn7dX4AzGxSjPrsPmDMWYcEkIwMZfcyJqoRfFkF3j15mil3muXxhR1a609NfkTo11J3ENVsvU3k60z+x0jCw6NjzbrweVQhBRkrbs7TBJkS4tR38JiDsXyH2E1JmRHE+o2P9qz4at6w3zggmwImvjt5IIjEr6g8KfsIDXfv7YjEzhJ3P+7uuGoyG2WYm/Pr0+iEmTj5Q/ijkxu1+cDqv5eiB+80KgffPItUZDrnv9sKlVBAr+f53nm1G+Sxp0Q=="
}
]
}
]
}
}Authorize Response
The response is the same as the Authorize response.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| EncryptedCardData | String | Yes | N/A | The value of this parameter is the result of the "encryptCardData" function of our CSE SDK |
Example Response
{
"Key": "18733464547E465EB78A1B896DXXXXXX",
"Status": {
"Code": {
"Code": 791,
"Description": "Pending processing"
},
"SubCode": null,
"DateTime": "2018-10-19T10:54:47+02:00"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=EB19D99034424813B2F5C10C92XXXXXX",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Services": [
{
"Name": "Mastercard",
"Action": null,
"Parameters": [
{
"Name": "ClientSideEncryptionVersion",
"Value": "1"
}
]
},
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "0000"
},
{
"Name": "CardExpirationDate",
"Value": "2019-04"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "538686******0000"
},
{
"Name": "Enrolled",
"Value": "Y"
}
]
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "AuthorizeEncryptedTest123",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "I088",
"MutationType": 3,
"RelatedTransactions": null,
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": "FR",
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "Automated Encryptietest",
"PayerHash": null,
"PaymentKey": null
}Authorize Push
The push is almost the same as the Authorize push, except for the ClientSideEncryptionVersion parameter.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| ClientSideEncryptionVersion | String | Yes | N/A | The Client Side Encryption version that is used to encrypt the card data. |
Example Push
{
"Transaction": {
"Key": "18733464547E465EB78A1B896DXXXXXX",
"Invoice": "AuthorizeEncryptedTest123",
"ServiceCode": "mastercard",
"Status": {
"Code": {
"Code": 791,
"Description": "Pending processing"
},
"SubCode": null,
"DateTime": "2018-10-19T10:54:47"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "I088",
"Services": [
{
"Name": "Mastercard",
"Action": null,
"Parameters": [
{
"Name": "ClientSideEncryptionVersion",
"Value": "1"
}
]
},
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "0000"
},
{
"Name": "CardExpirationDate",
"Value": "2019-04"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "538686******0000"
},
{
"Name": "Enrolled",
"Value": "Y"
}
],
"VersionAsProperty": 1
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 3,
"RelatedTransactions": null,
"IsCancelable": false,
"IssuingCountry": "FR",
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "Automated Encryptietest",
"PayerHash": null,
"PaymentKey": null
}
}AuthorizeWithSecurityCode
When you want your returning customers not to have to fill in all their card data again but still want to perform 3DS authentication, you can use this action. With this action and our Client Side Encryption SDK, we have introduced a way where you only have to ask for the consumers' security code (CVC) on your webshop and send in the OriginalTransactionKey of the first transaction of this customer. All you have to do is encrypt the security code with our Client Side Encryption SDK and call this action with the "EncryptedSecurityCode" parameter. The value of this parameter is the result of the "encryptSecurityCode" function in our CSE SDK.
AuthorizeWithSecurityCode Request
The request is much like the Authorize request, except for the OriginalTransactionKey and EncryptedSecurityCode parameters.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| EncryptedSecurityCode | String | Yes | N/A | The value of this parameter is the result of the "encryptSecurityCode" function of our CSE SDK. |
| OriginalTransactionKey | String | Yes | N/A | Transaction key of the initial transaction from where the card data should be copied. |
Example Request
{
"Invoice": "AuthorizeWithSecurityCodeTest",
"Description": "AuthorizeWithSecurityCodeTest",
"Currency": "EUR",
"AmountDebit": 0.01,
"OriginalTransactionKey": "6C5DBB69E74644958F8C25199514DC6C",
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "AuthorizeWithSecurityCode",
"Parameters": [
{
"Name": "EncryptedSecurityCode",
"Value": "001F3AJT7wkJa04zE8c78P7spOAgHSKH1YKgPlOwXhW049VfIXMwZO32RYna9xZRyUCtfODIoCL8GRQoaZbStlBT4rbF5e4PPvWFSKdvua4rq+GQDNAghfa+ZQz0BzBPfjS0WBdFape9n3zH2vC/0m+wI3QZiDpYYgyWC1/Y3udJDU7JRTVMq/BDHGet+IZ2CDnkeGl813kkYymzYon/QeuQRQ0Wsec5bmVQNYGx62fz70/vLgs0ffff+6DtZtnZWfByRkTwMNebJotlOsSkbhVR5FrHpAbNPCJI+LvJcJL7Eoo+ZuX5/LWGmsT6qnR/uLiIw1DI7mTKGy6/P7IljAE+g=="
}
]
}
]
}
}AuthorizeWithSecurityCode Response
The response is almost the same as the Authorize response, except for the ClientSideEncryptionVersion parameter.
Parameters
Example Response
{
"Key": "D7B87BBA4C044B2F9A74B5DEC0AAEF6B",
"Status": {
"Code": {
"Code": 791,
"Description": "Pending processing"
},
"SubCode": null,
"DateTime": "2020-03-23T16:24:38+01:00"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=11403BFFBEE648EBB37480F83683E9A5",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Services": [
{
"Name": "Mastercard",
"Action": null,
"Parameters": [
{
"Name": "ClientSideEncryptionVersion",
"Value": "1"
}
]
},
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "0000"
},
{
"Name": "CardExpirationDate",
"Value": "2023-01"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "538686******0000"
},
{
"Name": "ThreeDsVersion",
"Value": "1.0.2"
},
{
"Name": "Enrolled",
"Value": "N"
}
]
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "AuthorizeWithSecurityCodeTest",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "I876",
"MutationType": 3,
"RelatedTransactions": [
{
"RelationType": "copied_card_data",
"RelatedTransactionKey": "6C5DBB69E74644958F8C25199514DC6C"
}
],
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": "NL",
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "tes test",
"PayerHash": null,
"PaymentKey": null
}AuthorizeWithSecurityCode Push
The push is almost the same as the Authorize push, except for the ClientSideEncryptionVersion parameter.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| ClientSideEncryptionVersion | String | Yes | N/A | The Client Side Encryption version that is used to encrypt the security code. |
Example Push
{
"Transaction":{
"Key":"D7B87BBA4C044B2F9A74B5DEC0AAEF6B",
"Invoice":"AuthorizeWithSecurityCodeTest",
"ServiceCode":"mastercard",
"Status":{
"Code":{
"Code":190,
"Description":"Success"
},
"SubCode":null,
"DateTime":"2020-03-23T16:24:56"
},
"IsTest":true,
"Order":null,
"Currency":"EUR",
"AmountDebit":0.01,
"TransactionType":"I876",
"Services":[
{
"Name":"Mastercard",
"Action":null,
"Parameters":[
{
"Name":"ClientSideEncryptionVersion",
"Value":"1"
}
]
},
{
"Name":"mastercard",
"Action":null,
"Parameters":[
{
"Name":"CardNumberEnding",
"Value":"0000"
},
{
"Name":"CardExpirationDate",
"Value":"2023-01"
},
{
"Name":"MaskedCreditcardNumber",
"Value":"538686******0000"
},
{
"Name":"ThreeDsVersion",
"Value":"1.0.2"
},
{
"Name":"Enrolled",
"Value":"N"
},
{
"Name":"Authentication",
"Value":"Y"
}
],
"VersionAsProperty":1
}
],
"CustomParameters":null,
"AdditionalParameters":null,
"MutationType":3,
"RelatedTransactions":[
{
"RelationType":"copied_card_data",
"RelatedTransactionKey":"6C5DBB69E74644958F8C25199514DC6C"
}
],
"IsCancelable":false,
"IssuingCountry":"NL",
"StartRecurrent":false,
"Recurring":false,
"CustomerName":"tes test",
"PayerHash":null,
"PaymentKey":null
}
}Capture
The Capture action allows the merchant to perform a charge on a previously created authorization. The customer does not need to perform this charge. The maximum capture amount is the amount of the previously requested Authorize.
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| OriginalTransactionKey | String | Yes | Transaction key of the initial payment. |
Example Request
{
"Currency": "EUR",
"AmountDebit": 1.00,
"Invoice": "testinvoice 123",
"OriginalTransactionKey": "571457E371FB494FB0E67C99CFXXXXXX",
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "Capture"
}
]
}
}Capture Response
Example Response
{
"Key": "EA244C42EC0846E8BF2CD406BCXXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2017-05-31T12:40:03"
},
"RequiredAction": null,
"Services": null,
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "testinvoice 123",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 1.0,
"TransactionType": "V201",
"MutationType": 2,
"RelatedTransactions": null,
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": "FR",
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "T. Tester",
"PayerHash": null,
"PaymentKey": "FBCCF988EE3A455A9A07F1F5A1XXXXXX"
}Capture Push
Parameters
Example Push
{
"Transaction": {
"Key": "EA244C42EC0846E8BF2CD406BCXXXXXX",
"Invoice": "testinvoice 123",
"ServiceCode": "mastercard",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2017-05-31T12:40:03"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 1,
"TransactionType": "V201",
"Services": null,
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 2,
"RelatedTransactions": null,
"IsCancelable": false,
"IssuingCountry": "FR",
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "T. Tester",
"PayerHash": null,
"PaymentKey": "FBCCF988EE3A455A9A07F1F5A1XXXXXX"
}
}PayRecurrent
The PayRecurrent action is used to perform a repeated payment by credit card on an initial payment. For a recurrent payment, the customer isn’t needed, since the credit card details do not have to be entered again. In case the payment is processed by Worldline, the recurrent payment is also possible on an authorize. A PayRecurrent payment can only be performed based on a transaction having the parameter StartRecurrent set to True.
PayRecurrent Request
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| OriginalTransactionKey | String | Yes | Transaction key of the initial payment. |
Example Request
{
"Currency": "EUR",
"AmountDebit": 10,
"Invoice": "testinvoice 123",
"OriginalTransactionKey": "80558FE1BE7F4B959E5C64907EXXXXXX",
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "PayRecurrent"
}
]
}
}PayRecurrent Response
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| CardNumberEnding | String | Yes | The last four digits of the used credit card. |
| CardExpirationDate | String | No | The expiration date of the used credit card. |
| MaskedCreditcardNumber | String | No | The credit card number (partially masked). |
Example Response
{
"Key": "5C7012EEF3E84CAEAA50DBBCEDXXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2017-06-01T08:26:40"
},
"RequiredAction": null,
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "9097"
},
{
"Name": "CardExpirationDate",
"Value": "2020-06"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "517043******9097"
}
]
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "testinvoice 123",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 10,
"TransactionType": "V043",
"MutationType": 2,
"RelatedTransactions": null,
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": "DK",
"StartRecurrent": false,
"Recurring": true,
"CustomerName": "T. Tester",
"PayerHash": null,
"PaymentKey": "625B93474A34478698DEE551DFXXXXXX"
}PayRecurrent Push
Parameters
Service-Specific Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| CardNumberEnding | String | Yes | The last four digits of the used credit card. |
| CardExpirationDate | String | No | The expiration date of the used credit card. |
| MaskedCreditcardNumber | String | No | The credit card number (partially masked). |
Example Push
{
"Transaction": {
"Key": "5C7012EEF3E84CAEAA50DBBCEDXXXXXX",
"Invoice": "testinvoice 123",
"ServiceCode": "mastercard",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2017-06-01T08:26:40"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 10,
"TransactionType": "V043",
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "9097"
},
{
"Name": "CardExpirationDate",
"Value": "2020-06"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "517043******9097"
}
],
"VersionAsProperty": 1
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 2,
"RelatedTransactions": null,
"IsCancelable": false,
"IssuingCountry": "DK",
"StartRecurrent": false,
"Recurring": true,
"CustomerName": "T. Tester",
"PayerHash": null,
"PaymentKey": "625B93474A34478698DEE551DFXXXXXX"
}
}PreAuthorizeRecurrent
Before you can send a PreAuthorizeRecurrent you must have an initial customer-initiated PreAuthorize transaction (CIT) on the card, sent with the basic parameter StartRecurrent set to true. This first transaction authenticates the shopper (3-D Secure), registers the card, starts the recurring mandate, and stores the scheme (network) transaction reference that every later MIT replays.
Initial registering request (once, per card)
{
"Currency": "EUR",
"AmountDebit": 0.10,
"Invoice": "registration 123",
"StartRecurrent": true,
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "PreAuthorize"
}
]
}
}Keep the Key returned by this transaction — that value is the OriginalTransactionKey you pass to every subsequent PreAuthorizeRecurrent.
Note: if the original transaction did not store a valid scheme reference, a PreAuthorizeRecurrent is rejected with the message "Your token is invalid. Please initiate a new reference transaction." In that case, register the card again with a new StartRecurrent = true transaction.
The PreAuthorizeRecurrent action reserves (holds) an amount on a previously registered card as a Merchant-Initiated Transaction. No 3-D Secure is performed and the shopper does not need to be present. The reserved amount is captured later with a Capture, up to the reserved amount.
No card number, expiry, CVC or token is sent — the credentials are loaded from the original transaction referenced by OriginalTransactionKey. The service Name ("visa" / "mastercard") must match the original transaction's service.
Required basic parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| OriginalTransactionKey | String | Yes | Transaction key of the initial (StartRecurrent) transaction that registered the card. |
| AmountDebit | Number | Yes | Amount to reserve. Captured later, in full or in part, with Capture. |
| Currency | String | Yes | Currency of the reservation. |
| Invoice | String | Yes | Merchant invoice number for this reservation. |
Example request (Mastercard)
{
"Currency": "EUR",
"AmountDebit": 50.00,
"Invoice": "fuel 456",
"OriginalTransactionKey": "80558FE1BE7F4B959E5C64907EXXXXXX",
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "PreAuthorizeRecurrent"
}
]
}
}Example request (Visa)
{
"Currency": "EUR",
"AmountDebit": 50.00,
"Invoice": "fuel 456",
"OriginalTransactionKey": "80558FE1BE7F4B959E5C64907EXXXXXX",
"Services": {
"ServiceList": [
{
"Name": "visa",
"Action": "PreAuthorizeRecurrent"
}
]
}
}Example response (Mastercard — funds reserved)
{
"Key": "5C7012EEF3E84CAEAA50DBBCEDXXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2026-05-22T15:58:56"
},
"RequiredAction": null,
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{ "Name": "CardNumberEnding", "Value": "1234" },
{ "Name": "MaskedCreditcardNumber", "Value": "************1234" },
{ "Name": "CardExpirationDate", "Value": "2028-05" }
]
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"RequestErrors": null,
"Invoice": "fuel 456",
"ServiceCode": "mastercard",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 50.0,
"TransactionType": "I276",
"MutationType": 1,
"RelatedTransactions": [
{
"RelationType": "recurring",
"RelatedTransactionKey": "80558FE1BE7F4B959E5C64907EXXXXXX"
}
],
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": true,
"CustomerName": "John Smith",
"PayerHash": null,
"PaymentKey": null
}Note: transaction type Mastercard PreAuthorizeRecurrent = I276, Visa PreAuthorizeRecurrent = I275. The Visa response is identical in shape with "ServiceCode": "visa" and "TransactionType": "I275".
PaymentKey is null: a PreAuthorizeRecurrent is a reservation (Transaction), not a Payment. "Recurring": true marks it as a merchant-initiated recurring charge.
PreAuthorizeRecurrent Push
Example push
{
"Transaction": {
"Key": "5C7012EEF3E84CAEAA50DBBCEDXXXXXX",
"Invoice": "fuel 456",
"ServiceCode": "mastercard",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2026-05-22T16:00:04"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 50.0,
"TransactionType": "I276",
"Services": [
{
"Name": "mastercard",
"Action": null,
"Parameters": [
{ "Name": "CardNumberEnding", "Value": "1234" },
{ "Name": "MaskedCreditcardNumber", "Value": "************1234" },
{ "Name": "CardExpirationDate", "Value": "2028-05" }
]
}
],
"CustomParameters": null,
"AdditionalParameters": null,
"MutationType": 1,
"RelatedTransactions": [
{
"RelationType": "recurring",
"RelatedTransactionKey": "80558FE1BE7F4B959E5C64907EXXXXXX"
}
],
"IsCancelable": true,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": true,
"CustomerName": "John Smith",
"PayerHash": null,
"PaymentKey": null
}
}Output parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| CardNumberEnding | String | Yes | The last four digits of the registered card. |
| MaskedCreditcardNumber | String | No | The card number, partially masked. |
| CardExpirationDate | String | No | The expiration date of the registered card ("yyyy-MM"). |
Capturing the reservation
A PreAuthorizeRecurrent only holds funds. To settle, send a normal Capture using the Key of the PreAuthorizeRecurrent transaction as the OriginalTransactionKey (NOT the key of the original registering transaction). Partial capture up to the reserved amount is supported.
{
"Currency": "EUR",
"AmountDebit": 42.75,
"Invoice": "fuel 456",
"OriginalTransactionKey": "5C7012EEF3E84CAEAA50DBBCEDXXXXXX",
"Services": {
"ServiceList": [
{
"Name": "mastercard",
"Action": "Capture"
}
]
}
}See the existing Capture section for the full Capture response and push payloads; Capture behaves the same whether the reservation came from Authorize or from PreAuthorizeRecurrent.
Updated 5 days ago