Create a payment without wallet cryptogram — without MPI (3DS required)
When neither a wallet cryptogram nor merchant-side 3DS results are available (PAN_ONLY), the gateway performs 3DS authentication. The response will have status: "pending" and a client_action that the merchant must handle.
POST/rest/payment
/rest/paymentProduction URL
https://api.betterpayment.de/rest/paymentTest URL
https://testapi.betterpayment.de/rest/paymentpayment_typeStringrequiredgooglepayorder_idStringrequiredamountFloatrequiredcurrencyStringrequiredpostback_urlStringrequiredsuccess_urlStringrequirederror_urlStringrequiredcard_numberStringrequiredcard_holderStringrequiredcard_expiry_monthStringrequiredcard_expiry_yearStringrequiredthreeds_wallet_cryptogram, threeds_authentication_value, and threeds_directory_server_trans_id. The gateway will perform 3DS authentication automatically. The optional processing parameters from Cardholder Data Parameters such as card_entry, charge_order, clearing_mode, clear_after, and sca_exemption_request are also accepted in this flow.POST /rest/payment
Authorization: Basic <base64(api_key:api_password)>
Content-Type: application/json
{
"payment_type": "googlepay",
"order_id": "GPAY-67890",
"amount": "25.90",
"currency": "EUR",
"postback_url": "https://your-postback.url.com",
"success_url": "https://your-success.url.com",
"error_url": "https://your-error.url.com",
"card_number": "4761070000000509",
"card_holder": "John Doe",
"card_expiry_month": "12",
"card_expiry_year": "2026"
}
Payment API Response
transaction_idStringpayment_typeStringstatus_codeIntegerstatusStringorder_idStringmessageStringincluded_feesStringerror_codeIntegerclient_actionStringaction_data) or redirect (redirect to the url in action_data).action_dataObjecturl (target URL of the action) and, in case of a postForm, fields (key/value pairs of the data to be posted).fields to the provided url in action_data. This will redirect the customer to the 3DS authentication page. Once 3DS is completed, the customer is returned to the merchant's success_url or error_url.{
"transaction_id": "4037b0b4-271b-4486-b7b0-a4569c9ebe40",
"payment_type": "googlepay",
"status_code": 2,
"status": "pending",
"order_id": "123000",
"message": null,
"additional_transaction_data": null,
"amount": 10.0,
"included_fees": "0.00",
"error_code": 0,
"client_action": "postForm",
"action_data": {
"url": "https://3ds-acs-url.example.com/v1/acs/challenge-initiate",
"fields": {
"creq": "eyJ0aHJlZURTU2VydmVyVHJ..."
}
}
}
Postbacks
For the full list of payment postback fields, see the Payment API. For retry policy and signature verification, see Postbacks.
Test Data
To learn how to add test cards for testing Google Pay, please review the official Google Pay test documentation.
For testing Server-to-Server Google Pay transactions without a wallet cryptogram and without MPI, omit threeds_wallet_cryptogram, threeds_authentication_value, and threeds_directory_server_trans_id. This triggers the gateway 3DS flow.
The card data in Server-to-Server Google Pay transactions is actually token data (DPAN), not the real card number — but it follows the same format. CVV is not required for wallet token transactions.
3DS is more common for Google Pay than for Apple Pay, especially when using the PAN_ONLY authorization method where no cryptogram is available.
| Parameter | Test Value |
|---|---|
card_number | 5286940020000908 |
card_holder | Max Mustermann |
card_expiry_month | 12 |
card_expiry_year | 2026 |
Complete the client_action returned in the response (postForm or redirect) to continue with the acquirer-provided 3DS flow.