Bizum payments
This document applies to the following country:
| Europe |
|---|
Accept payments through Bizum, the leading mobile payment method in Europe. The buyer pays with only the mobile phone number linked to their bank account. No card details are required. The buyer approves the payment in their banking app (biometrics / PIN).
This guide walks you through creating a payment intent, submitting the payment, and confirming the result through a single Web Checkout API integration.
How it works
Use Bizum to offer a fast, local mobile payment method to buyers in Europe who pay without a card. Key characteristics:
- Instant: confirmation in seconds.
- No card: the buyer is identified by their phone number.
- Bank app authentication: the buyer gives final approval in their banking app (biometrics / PIN).
- APM (Alternative Payment Method): no installments, no card/3DS flow.
- Asynchronous: the request starts the operation and may return a pending status. Always confirm through polling or webhook before you release the order.
The end-to-end flow involves the buyer, your frontend, your backend, and the Getnet Web Checkout API:
notification.url, and the redirect goes to success_url or error_url.Before you start
Make sure the following are in place before you integrate:
- Payments are in EUR and the market is ES.
- Generate your token as described in the Authentication document.
Test phone number
Use the following phone number to test Bizum transactions in the test environment:
700 000 000With this phone number, you can complete the Bizum payment flow in the test environment without a real Bizum account.
Test amounts
Different transaction amounts simulate different payment outcomes in the test environment. Use the table below to test various scenarios:
| Amount | Outcome | Description |
|---|---|---|
| Less than €5 | Payment confirmed | Transaction is successful and immediately approved |
| €5 to €10 | Payment confirmed | Transaction is successful with normal processing |
| €10 to €500 | Payment confirmed | Transaction is successful for standard amounts |
| More than €500 | Payment refused | Transaction is declined to simulate high-value rejections |
Note: These test scenarios are only available in the test environment. Production transactions follow normal processing, based on the customer's actual Bizum account status and balance.
Step 1: Create the payment intent
payment_intent_id and a redirect_url.| Endpoint |
|---|
POST /payment-intent |
| Field | Type | Description | Example |
|---|---|---|---|
payment.currency | string | Currency code. | EUR |
payment.amount | integer | Purchase amount in integer format, where the last 2 digits represent the cents. For countries where cents do not apply, fill in the amount with 2 zeros to the right. | 5000 |
customer.customer_id | String | We recommend the customer's document number. Use only letters and numbers, without special characters, separators or spaces. | 12345678912 |
customer.first_name | String | Customer's first name. | John |
customer.last_name | String | Customer's last name. | Doe Smith |
customer.name | String | Customer's full name. | John Doe Smith |
customer.email | String | Customer's email address. | customer@email.com.br |
customer.document_type | String | Type of the document used to identify the customer. | DNI |
customer.document_number | String | Document number used to identify the customer. | 12345678Z |
customer.billing_address.street | String | Name of a street. | Calle Gran Via |
customer.billing_address.number | String | Number that identifies the position of a building on a street. | 1000 |
customer.billing_address.country | String | Country code. | ES |
customer.billing_address.postal_code | String | Postal or ZIP code. | 90230060 |
| Field | Type | Description | Example |
|---|---|---|---|
configurations.3ds | boolean | Controls 3D Secure authentication. Does not apply to Bizum. | true or false |
configurations.preauthorization | boolean | Indicates if the payment is a pre-authorization. | true or false |
configurations.card_verification | boolean | Indicates if this is a card verification flow. Does not apply to Bizum. | true or false |
configurations.success_url | string | Redirect URL in case of successful payment. | https://www.mystore.com/checkout/success |
configurations.error_url | string | Redirect URL in case of an error during payment. | https://www.mystore.com/checkout/error |
soft_descriptor | string | Payment description that appears on the customer's receipt. | Tienda ES |
expires_at | string | Payment intent expiration. | 3d4h15m |
Field filling rules
Follow these rules when you fill in the request fields:
- The
expires_atfield accepts a duration value (for example, 15m, 2h, 7d, or 1d12h30m). The API applies this duration regardless of the merchant's timezone. The API always returns the expiration timestamp in GMT+0 (UTC). If you provide no value, the payment intent does not expire. - When you provide
success_urlanderror_urlin the payment intent request, they override the values in the seller's technical configuration. - Europe only: the
document_typefield value must beDNI,INEorpassport.
Example request
The following example shows a payment intent request for Bizum:
Example 201 response
payment_intent_id and the redirect_url:Step 2: Redirect and submit the payment
redirect_url, or show the embedded checkout screen where they choose Bizum.Step 3: Wait for the buyer to approve in the bank app
The buyer confirms the payment in their banking app (biometrics / PIN). This step happens outside your integration.
Step 4: Confirm the result
- Webhook: sent to the
notification.url. - Redirect: to
success_urlorerror_url.
Example approved webhook response
The following example shows the webhook for an approved Bizum payment:
Example denied webhook response
The following example shows the webhook for a denied Bizum payment:
On this page