Bizum payments

bizum

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:

The Web Checkout separates intent creation from payment submission. Because Bizum is asynchronous, you get the result through a webhook or a redirect. The webhook goes to the 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:

Test phone number: 700 000 000

With 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:

AmountOutcomeDescription
Less than €5Payment confirmedTransaction is successful and immediately approved
€5 to €10Payment confirmedTransaction is successful with normal processing
€10 to €500Payment confirmedTransaction is successful for standard amounts
More than €500Payment refusedTransaction is declined to simulate high-value rejections
information icon
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

Call the Web Checkout API to create a payment intent. It returns a payment_intent_id and a redirect_url.
Endpoint
POST /payment-intent
Required fields
FieldTypeDescriptionExample
payment.currencystringCurrency code.EUR
payment.amountintegerPurchase 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_idStringWe recommend the customer's document number. Use only letters and numbers, without special characters, separators or spaces.12345678912
customer.first_nameStringCustomer's first name.John
customer.last_nameStringCustomer's last name.Doe Smith
customer.nameStringCustomer's full name.John Doe Smith
customer.emailStringCustomer's email address.customer@email.com.br
customer.document_typeStringType of the document used to identify the customer.DNI
customer.document_numberStringDocument number used to identify the customer.12345678Z
customer.billing_address.streetStringName of a street.Calle Gran Via
customer.billing_address.numberStringNumber that identifies the position of a building on a street.1000
customer.billing_address.countryStringCountry code.ES
customer.billing_address.postal_codeStringPostal or ZIP code.90230060
Optional fields
FieldTypeDescriptionExample
configurations.3dsbooleanControls 3D Secure authentication. Does not apply to Bizum.true or false
configurations.preauthorizationbooleanIndicates if the payment is a pre-authorization.true or false
configurations.card_verificationbooleanIndicates if this is a card verification flow. Does not apply to Bizum.true or false
configurations.success_urlstringRedirect URL in case of successful payment.https://www.mystore.com/checkout/success
configurations.error_urlstringRedirect URL in case of an error during payment.https://www.mystore.com/checkout/error
soft_descriptorstringPayment description that appears on the customer's receipt.Tienda ES
expires_atstringPayment intent expiration.3d4h15m

Field filling rules

Follow these rules when you fill in the request fields:

  • The expires_at field 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_url and error_url in the payment intent request, they override the values in the seller's technical configuration.
  • Europe only: the document_type field value must be DNI, INE or passport.

Example request

The following example shows a payment intent request for Bizum:

JSON
{ "mode": "instant", "order_id": "ORDER_BIZUM_ES_0001", "configurations": { "3ds": false, "preauthorization": false, "card_verification": false, "success_url": "https://www.mystore.com/checkout/success", "error_url": "https://www.mystore.com/checkout/error" }, "payment": { "currency": "EUR", "amount": 5000 }, "product": [ { "product_type": "service", "title": "Plan Pro", "description": "Suscripcion 1 mes", "value": 5000, "quantity": 1 } ], "customer": { "customer_id": "customer_es_005", "first_name": "Jose", "last_name": "Garcia", "name": "Jose Garcia", "email": "customer@email.com", "document_type": "DNI", "document_number": "12345678Z", "phone_number": "34600123456", "checked_email": true, "billing_address": { "street": "Calle Gran Via", "number": "28", "complement": "3o B", "district": "Centro", "city": "Madrid", "state": "Madrid", "country": "ES", "postal_code": "28013" } }, "soft_descriptor": "Tienda ES", "expires_at": "1h" }

Example 201 response

A successful request returns the payment_intent_id and the redirect_url:
JSON
{ "payment_intent_id": "ee0b7dd5-92da-4ef4-ad3b-0ba369ad0efe", "trade_name": "Minha Loja ES", "redirect_url": "https://checkout.getnet.com/es/ee0b7dd5-92da-4ef4-ad3b-0ba369ad0efe", "expires_at": "2026-07-02T19:30:00Z" }

Step 2: Redirect and submit the payment

Redirect the buyer to the 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

Because Bizum is asynchronous, the call is not the final confirmation. Confirm the result through one or more of the following before you release the order:
  • Webhook: sent to the notification.url.
  • Redirect: to success_url or error_url.

Example approved webhook response

The following example shows the webhook for an approved Bizum payment:

JSON
{ "payment_intent_id": "ee0b7dd5-92da-4ef4-ad3b-0ba369ad0efe", "checkout_id": "5ab15d1e-ea8b-4560-84d2-fb3d02179537", "order_id": "ORDER_BIZUM_ES_0001", "mode": "instant", "seller": { "id": "716d899e-9091-4577-a12f-8a77ec4d1e0b", "trade_name": "GetNet Shop", "merchant_document": "00000000000", "settings": { "notification_url_configured": true } }, "customer": { "customer_id": "customer_es_005", "name": "Jose Garcia", "email": "customer@email.com", "document_type": "dni", "document_number": "12345678Z" }, "payment": { "method": "bizum", "amount": 5000, "currency": "EUR", "result": { "payment_id": "772f951479c6514b1d9c4e8fd4808fe6", "status": "Authorized", "authorization_code": "999999", "transaction_datetime": "2026-07-08T12:00:00.000Z" } }, "created_at": "2026-07-08T11:58:00.000Z", "updated_at": "2026-07-08T12:00:00.000Z" }

Example denied webhook response

The following example shows the webhook for a denied Bizum payment:

JSON
{ "payment_intent_id": "ee0b7dd5-92da-4ef4-ad3b-0ba369ad0efe", "checkout_id": "5ab15d1e-ea8b-4560-84d2-fb3d02179537", "order_id": "ORDER_BIZUM_ES_0001", "mode": "instant", "payment": { "method": "bizum", "amount": 5000, "currency": "EUR", "result": { "payment_id": "772f951479c6514b1d9c4e8fd4808fe6", "status": "Denied", "transaction_datetime": "2026-07-08T12:02:00.000Z", "return_message": "Payment not authorized by the customer's bank" } }, "created_at": "2026-07-08T11:58:00.000Z", "updated_at": "2026-07-08T12:02:00.000Z" }