Requests
Pay
Once you have properly implemented the Google Pay™ button on your site, you can proceed with processing the Payment via Buckaroo's Checkout Gateway.
The flow of processing the payment once you received the token is as follows:
- Retrieve the Token from the “paymentData” parameter of the “processPayment” callback function.
- Initiate a Google Pay Transaction via Buckaroo. Provide the Base64 Encoded Token as parameter in the request under the name PaymentData.
Service-specific parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| Payment data | Yes | String | Base64 Encoded string of the retrieved token from Google Pay API |
| CustomerCardName | No | String | The full name of the card holder. |
Basic parameters
You can find basic parameters here.
Example request
{
"Invoice": "Dummy_Invoice",
"Description": "Dummy_Description",
"Currency": "EUR",
"AmountDebit": 0.01,
"Services": {
"ServiceList": [
{
"Name": "GooglePay",
"Action": "Pay",
"Parameters": [
{
"Name": "PaymentData",
"Value": "VGhpcyBpcyBhIEJhc2U2NCBlbmNvZGVkIHRleHQ="
},
{
"Name": "CustomerCardName",
"Value": "XXXXXXXXXXXXX”
}
]
}
]
}
}
Pay Response
Service-specific parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| CardNumberEnding | String | Last 4 digits of the credit card number. | ||
| CardExpirationDate | String | Credit card expiration date. | ||
| MaskedCreditcardNumber | String | Masked card number. |
Example response
{
"Key": "9AA4C81A08A84FA7B68E6A6A6291XXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2019-06-13T09:19:52"
},
"RequiredAction": null,
"Services": [
{
"Name": "GooglePay",
"Action": null,
"Parameters": [
{
"Name": "CardNumberEnding",
"Value": "00XX"
},
{
"Name": "CardExpirationDate",
"Value": "0019-07"
},
{
"Name": "MaskedCreditcardNumber",
"Value": "XXXXXX******XXXX"
}
]
}
],
"CustomParameters": null,
"RequestErrors": null,
"Invoice": "10000480",
"ServiceCode": "googlepay",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 1.00,
"TransactionType": "V187",
"MutationType": 2,
"RelatedTransactions": null,
"ConsumerMessage": null,
"Order": "10000480",
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "XXXXXXXXXXXX",
"PayerHash": "XXXXXXXXXXXXXXXXXXX",
"PaymentKey": "XXXXXXXXXXXXXXXXXXXXXX"
}
Authorize
Reserves funds without capturing. Keep the Key from the response — it becomes the OriginalTransactionKey for a subsequent Capture or CancelAuthorize.
Example request
{
"Currency": "EUR",
"AmountDebit": 10.00,
"Invoice": "<Invoice>",
"Services": {
"ServiceList": [
{
"Name": "googlepay",
"Action": "Authorize",
"Parameters": [
{ "Name": "PaymentData", "Value": "<PaymentData>" },
{ "Name": "CustomerCardName", "Value": "<CustomerCardName>" }
]
}
]
}
}Example response
{
"Key": "571457E371FB494FB0E67C99CFXXXXXX",
"Status": {
"Code": { "Code": 190, "Description": "Success" },
"SubCode": { "Code": "S001", "Description": "Transaction successfully processed" },
"DateTime": "2026-06-11T09:19:52"
},
"Services": [
{
"Name": "googlepay",
"Parameters": [
{ "Name": "CardNumberEnding", "Value": "00XX" },
{ "Name": "CardExpirationDate", "Value": "2030-07" },
{ "Name": "MaskedCreditcardNumber", "Value": "XXXXXX******XXXX" }
]
}
],
"Invoice": "<Invoice>",
"ServiceCode": "googlepay",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 10.00,
"TransactionType": "I149",
"PaymentKey": "FBCCF988EE3A455A9A07F1F5A1XXXXXX"
}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.
Reserves the specified amount on the customer's card via Google Pay™. The resulting transaction key must be passed as OriginalTransactionKey in the follow-up Capture or CancelAuthorize call.
Service-specific parameters
| Parameter | Required | Description |
|---|---|---|
| PaymentData | Yes | The Base64-encoded encrypted Google Pay™ token, obtained by the merchant's own Google Pay™ integration. The request fails without it ("No payment data received"). |
| CustomerCardName | No | The name of the cardholder. Defaults to "Customer Unknown" when not provided. |
3-D Secure & SCA exemptions: determined automatically from the Google Pay™ token. If the token's auth method is CRYPTOGRAM_3DS, the payment is already authenticated and the 3-DS flow is skipped. If the auth method is PAN_ONLY, the regular 3-DS flow is executed. 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 (see 3-D Secure challenge redirect below).
Note
PreAuthorizecan also be combined with"StartRecurrent": "true"to mark the transaction as the start of a recurring payment series; subsequentPayRecurrentcalls can then reference it withOriginalTransactionKey.
Example request
{
"Currency": "EUR",
"AmountDebit": 0.02,
"Invoice": "GooglePay_1782738345",
"Description": "GooglePay_1782738345",
"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": "googlepay",
"Action": "PreAuthorize",
"Parameters": [
{
"Name": "PaymentData",
"Value": "eyJzaWduYXR1cmUiOiJNRVVDSVFE...ZXhhbXBsZXRva2Vu...=="
},
{
"Name": "CustomerCardName",
"Value": "J. de Tester"
}
]
}
]
}
}Example response
{
"Key": "6EFC6770E739452FB5813396C3XXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": null,
"DateTime": "2026-06-29T15:06:05"
},
"RequiredAction": null,
"Services": [
{
"Name": "googlepay",
"Action": null,
"Parameters": [
{ "Name": "CardNumberEnding", "Value": "1111" },
{ "Name": "CardExpirationDate", "Value": "2028-12" },
{ "Name": "MaskedCreditcardNumber", "Value": "411111******1111" },
{ "Name": "ThreeDsVersion", "Value": "1.0.2" }
]
}
],
"Invoice": "GooglePay_1782738345",
"ServiceCode": "googlepay",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.02,
"TransactionType": "I031",
"MutationType": 3,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "J. de Tester",
"PayerHash": null,
"PaymentKey": null
}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.
PreAuthorize Push
Example push
{
"Transaction": {
"Key": "6EFC6770E739452FB5813396C3XXXXXX",
"Invoice": "GooglePay_1782738345",
"ServiceCode": "googlepay",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": null,
"DateTime": "2026-06-29T15:06:05"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 0.02,
"TransactionType": "I031",
"Services": [
{
"Name": "googlepay",
"Action": null,
"Parameters": [
{ "Name": "CardNumberEnding", "Value": "1111" },
{ "Name": "CardExpirationDate", "Value": "2028-12" },
{ "Name": "MaskedCreditcardNumber", "Value": "411111******1111" },
{ "Name": "ThreeDsVersion", "Value": "1.0.2" }
],
"VersionAsProperty": 1
}
],
"MutationType": 3,
"IsCancelable": true,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "J. de Tester",
"PayerHash": null,
"PaymentKey": null,
"Description": "GooglePay_1782738345"
}
}3-D Secure challenge redirect
When the Google Pay™ token is PAN_ONLY and the issuer requires a 3-D Secure challenge (no exemption granted), the transaction first goes to 790 Pending input and the customer must complete the 3-DS challenge via a redirect. Send "ContinueOnIncomplete": true so the initial response returns the RedirectURL instead of an error; after the customer completes the challenge, the final status (e.g. 190 Success) is delivered via the push notification and the ReturnURL.
Example response (challenge redirect)
{
"Key": "6EFC6770E739452FB5813396C3XXXXXX",
"Status": {
"Code": {
"Code": 790,
"Description": "Pending input"
},
"SubCode": null,
"DateTime": "2026-06-29T15:05:46"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=BA589CC6B9FC4E71940866E151XXXXXX",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Invoice": "GooglePay_1782738345",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.02,
"StartRecurrent": false,
"Recurring": false
}Capture
Charges (part of) a previously authorized or pre-authorized amount. The OriginalTransactionKey parameter is required and must contain the transaction key of the Authorize or PreAuthorize transaction. No PaymentData is needed. AmountDebit may be equal to or less than the reserved amount.
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": "GooglePay_1782738345",
"Description": "GooglePay Capture",
"OriginalTransactionKey": "6EFC6770E739452FB5813396C3XXXXXX",
"Services": {
"ServiceList": [
{
"Name": "googlepay",
"Action": "Capture"
}
]
}
}Example response
{
"Key": "64D355F46E6845369BE0D48D6FXXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": null,
"DateTime": "2026-06-29T15:12:10"
},
"RequiredAction": null,
"RelatedTransactions": [
{
"RelationType": "capture",
"RelatedTransactionKey": "6EFC6770E739452FB5813396C3XXXXXX"
}
],
"Invoice": "GooglePay_1782738345",
"ServiceCode": "googlepay",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "C521",
"MutationType": 1,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "J. de Tester",
"Description": "GooglePay Capture"
}The Capture push follows the same structure as the PreAuthorize push, with "TransactionType": "C521" and the capture's own transaction key.
CancelAuthorize
Releases the hold placed by an Authorize or PreAuthorize transaction without charging the customer. The OriginalTransactionKey parameter is required.
Note
AmountCreditmay be lower than the reserved amount (partial cancel), but only oneCancelAuthorizeis allowed per original transaction. A capture after a cancellation is rejected ("Capture not possible, authorization already cancelled").
Example request
{
"Currency": "EUR",
"AmountCredit": 0.02,
"Invoice": "GooglePay_Cancel_Test",
"Description": "GooglePay CancelAuthorize",
"OriginalTransactionKey": "BBE8DE03CC024DA89B8D3979B2XXXXXX",
"Services": {
"ServiceList": [
{
"Name": "googlepay",
"Action": "CancelAuthorize"
}
]
}
}Example response
{
"Key": "2133F583CAAE4F34B0C090B34AXXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": null,
"DateTime": "2026-06-30T12:58:22"
},
"RequiredAction": null,
"RelatedTransactions": [
{
"RelationType": "cancel_authorize",
"RelatedTransactionKey": "BBE8DE03CC024DA89B8D3979B2XXXXXX"
}
],
"Invoice": "GooglePay_Cancel_Test",
"ServiceCode": "googlepay",
"IsTest": true,
"Currency": "EUR",
"AmountCredit": 0.02,
"TransactionType": "I152",
"MutationType": 3,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "J. de Tester",
"Description": "GooglePay CancelAuthorize"
}The CancelAuthorize push follows the same structure as the PreAuthorize push, with "TransactionType": "I152".
StartRecurrent
Initializes a recurring Google Pay™ payment. The resulting transaction can be referenced by subsequent PayRecurrent calls.
NoteThe StartRecurrent parameter is required to identify the transaction as the start of a recurring payment series.
Example request
{
"Currency": "EUR",
"AmountDebit": 0.01,
"Description": "GooglePay StartRecurrent",
"Invoice": "GooglePay Invoice test123",
"StartRecurrent": "true",
"ContinueOnIncomplete": true,
"Services": {
"ServiceList": [
{
"Name": "GooglePay",
"Action": "Pay",
"Parameters": null
}
]
}
}Example response
{
"Key": "1CF9DB7D748245279B32A16D11051373",
"Status": {
"Code": {
"Code": 790,
"Description": "Pending input"
},
"SubCode": null,
"DateTime": "2026-04-20T09:09:02"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=BA589CC6B9FC4E71940866E151BE4377",
"RequestedInformation": null,
"PayRemainderDetails": null,
"Name": "Redirect",
"TypeDeprecated": 0
},
"Invoice": "GooglePay Invoice test123",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.01,
"StartRecurrent": true,
"Recurring": false
}StartRecurrent Push
Example push
{
"Transaction": {
"Key": "1CF9DB7D748245279B32A16D11051373",
"Invoice": "GooglePay Invoice test123",
"ServiceCode": "GooglePay",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S990",
"Description": "The request was successful."
},
"DateTime": "2026-04-20T09:09:48"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "C131",
"Services": [
{
"Name": "GooglePay",
"Action": null,
"Parameters": [
{ "Name": "CardNumberEnding", "Value": "5883" },
{ "Name": "CardExpirationDate", "Value": "2030-01" },
{ "Name": "MaskedCreditcardNumber", "Value": "410687******5883" },
{ "Name": "ThreeDsVersion", "Value": "2.2.0" },
{ "Name": "Authentication", "Value": "Y" }
],
"VersionAsProperty": 1
}
],
"MutationType": 1,
"IsCancelable": false,
"StartRecurrent": true,
"Recurring": false,
"CustomerName": "Customer Unknown",
"PayerHash": "89e23f4562c5e68536ebec6af682ec31223e9e30532ae9d8d9a2d6181ab7de8465349fd0721819752e1a65a587e9e1dbcb1d33fd0538c858608cfbb40f622847",
"PaymentKey": "887FA8B2AED748C1A9B426709F885813",
"Description": "GooglePay StartRecurrent"
}
}PayRecurrent
Performs a recurring Google Pay™ payment using a previously authorized transaction.
NoteThe OriginalTransactionKey parameter is required and must reference the Key returned by the original StartRecurrent transaction.
Example request
{
"Invoice": "GooglePay_Test_1776669023",
"Description": "GooglePay description",
"Currency": "EUR",
"AmountDebit": 0.01,
"ContinueOnIncomplete": true,
"OriginalTransactionKey": "1CF9DB7D748245279B32A16D11051373",
"Services": {
"ServiceList": [
{
"Name": "GooglePay",
"Action": "PayRecurrent"
}
]
}
}Example response
{
"Key": "C6BFD5717C6E4C69819481744EEBB87A",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S990",
"Description": "The request was successful."
},
"DateTime": "2026-04-20T09:10:26"
},
"RequiredAction": null,
"Services": [
{
"Name": "GooglePay",
"Action": null,
"Parameters": [
{ "Name": "CardNumberEnding", "Value": "5883" },
{ "Name": "CardExpirationDate", "Value": "2030-01" },
{ "Name": "MaskedCreditcardNumber", "Value": "410687******5883" }
]
}
],
"Invoice": "GooglePay_Test_1776669023",
"ServiceCode": "GooglePay",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "C132",
"MutationType": 1,
"StartRecurrent": false,
"Recurring": true,
"CustomerName": "Customer Unknown",
"PayerHash": "89e23f4562c5e68536ebec6af682ec31223e9e30532ae9d8d9a2d6181ab7de8465349fd0721819752e1a65a587e9e1dbcb1d33fd0538c858608cfbb40f622847",
"PaymentKey": "77C13156B84749A3BBF8DD396FC2DD5D"
}PayRecurrent Push
Example push
{
"Transaction": {
"Key": "C6BFD5717C6E4C69819481744EEBB87A",
"Invoice": "GooglePay_Test_1776669023",
"ServiceCode": "GooglePay",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S990",
"Description": "The request was successful."
},
"DateTime": "2026-04-20T09:10:26"
},
"IsTest": true,
"Order": null,
"Currency": "EUR",
"AmountDebit": 0.01,
"TransactionType": "C132",
"Services": [
{
"Name": "GooglePay",
"Action": null,
"Parameters": [
{ "Name": "CardNumberEnding", "Value": "5883" },
{ "Name": "CardExpirationDate", "Value": "2030-01" },
{ "Name": "MaskedCreditcardNumber", "Value": "410687******5883" }
],
"VersionAsProperty": 1
}
],
"MutationType": 1,
"IsCancelable": false,
"StartRecurrent": false,
"Recurring": true,
"CustomerName": "Customer Unknown",
"PayerHash": "89e23f4562c5e68536ebec6af682ec31223e9e30532ae9d8d9a2d6181ab7de8465349fd0721819752e1a65a587e9e1dbcb1d33fd0538c858608cfbb40f622847",
"PaymentKey": "77C13156B84749A3BBF8DD396FC2DD5D",
"Description": "GooglePay description"
}
}Refund
Refund Request
Parameters
| Parameter | Type | Required | Recommended | Description |
|---|---|---|---|---|
| OriginalTransactionKey | String | Yes | N/A | Transaction key of the payment that needs to be refunded. Please note: This is a basic parameter, not a service specific parameter. |
Example request
{
"Currency": "EUR",
"AmountCredit": 1.00,
"Invoice": "10000480",
"OriginalTransactionKey": "XXXXXXXXXXXXXXX",
"Services": {
"ServiceList": [
{
"Name": "googlepay",
"Action": "refund"
}
]
}
}Refund Response
Example response
{
"Key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2019-06-13T09:20:24"
},
"RequiredAction": null,
"Services": null,
"CustomParameters": null,
"RequestErrors": null,
"Invoice": "10000480",
"ServiceCode": "googlepay",
"IsTest": true,
"Currency": "EUR",
"AmountCredit": 1.00,
"TransactionType": "V188",
"MutationType": 2,
"RelatedTransactions": [
{
"RelationType": "refund",
"RelatedTransactionKey": "XXXXXXXXXXXXXXXXXXXXX"
}
],
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "XXXXXXXXXXXX",
"PayerHash": null,
"PaymentKey": "XXXXXXXXXXXXXXXX"
}Refund Push
Parameters
Example push
{
"Key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Status": {
"Code": {
"Code": 190,
"Description": "Success"
},
"SubCode": {
"Code": "S001",
"Description": "Transaction successfully processed"
},
"DateTime": "2019-06-13T09:20:24"
},
"RequiredAction": null,
"Services": null,
"CustomParameters": null,
"RequestErrors": null,
"Invoice": "10000480",
"ServiceCode": "googlepay",
"IsTest": true,
"Currency": "EUR",
"AmountCredit": 1.00,
"TransactionType": "V188",
"MutationType": 2,
"RelatedTransactions": [
{
"RelationType": "refund",
"RelatedTransactionKey": "XXXXXXXXXXXXXXXXXXXXX"
}
],
"ConsumerMessage": null,
"Order": null,
"IssuingCountry": null,
"StartRecurrent": false,
"Recurring": false,
"CustomerName": "XXXXXXXXXXXX",
"PayerHash": null,
"PaymentKey": "XXXXXXXXXXXXXXXX"
}Payment Page (hosted)
If you use Buckaroo's hosted payment page, Buckaroo renders the Google Pay button itself — you send no PaymentData. The response returns a RedirectURL to redirect the shopper to.
NoteUse
"Action": "Authorize"instead of"Pay"if you want to reserve funds on the hosted page and capture later.
Example request
{
"Currency": "EUR",
"AmountDebit": 10.00,
"Invoice": "<Invoice>",
"ReturnURL": "<ReturnURL>",
"PushURL": "<PushURL>",
"ContinueOnIncomplete": 1,
"Services": {
"ServiceList": [
{ "Name": "googlepay", "Action": "Pay" }
]
}
}Example response
{
"Key": "4E8BD922192746C3918BF4077CXXXXXX",
"Status": {
"Code": { "Code": 790, "Description": "Pending input" },
"DateTime": "2026-06-11T09:50:19"
},
"RequiredAction": {
"RedirectURL": "https://testcheckout.buckaroo.nl/html/redirect.ashx?r=B3B96BC48B2C464D9027742FA0XXXXXX",
"Name": "Redirect"
},
"Invoice": "<Invoice>",
"IsTest": true,
"Currency": "EUR",
"AmountDebit": 10.00
}Updated 10 days ago