Bizum for API only
Last updated: August 27, 2025
To process Bizum payments, you must request a payment. Your customer will then confirm the payment using their online banking app.
To send a payment request, call the payments endpoint:
post
https://api.checkout.com/payments
If you don't provide a customer ID or email address in the request, Checkout.com automatically creates a customer profile and returns the customer ID in the response.
1{2"amount": 100,3"currency": "EUR",4"source": {5"type": "bizum"6},7"reference": "ORD-5023-4E89",8"customer": {9"phone": {10"country_code": "034",11"number": "700000000"12}13},14"processing_channel_id": "pc_3wuuqzzjbrzexbu4osjacmk7q4"15}
If you receive a 202 Accepted
response with a payment id
value and the status
field set to Pending
, your request was successful.
1{2"id": "pay_7ehiotldrlvujfpiyeo42i2roe",3"status": "Pending",4"reference": "ORD-5023-4E89",5"customer": {6"id": "cus_urx7wggzcpzufjjynbn7t6l5mq",7"phone": {8"country_code": "034",9"number": "700000000"10}11},12"_links": {13"self": {14"href": "https://api.checkout.com/payments/pay_7ehiotldrlvujfpiyeo42i2roe"15}16}17}
To retrieve details about the payment, call the payments endpoint, setting the {id}
path parameter using the payment_id
value your received in the payment response:
get
https://api.checkout.com/payments/{id}
See Get payment details for more information.
Bizum supports both partial and full refunds.
You can refund the payment through the Dashboard or by calling the Refund a payment endpoint setting the {id}
query parameter using the payment_id
value your received in the payment response:
post
https://api.checkout.com/payments/{id}/refunds
See Refund a payment for more information.
1{2"amount": 103}
1{2"action_id": "act_f544khcfnyqudh3l73qwnnvfbi",3"_links": {4"payment": {5"href": "https://api.sandbox.checkout.com/payments/pay_uexsi2rik7ceppidytigjmxshi"6}7}8}
Once a payment is created, you can't void it. If you wish to void a payment in progress, wait for the payment_captured
webhook, and then process a refund. Communicating this in advance to your end customer can help you avoid chargebacks.
If the customer cancels or fails to complete their payment, we send a payment_expired
webhook.
You can simulate an authorized or a declined payment in the sandbox environment to ensure your integration is set up correctly and behaving as expected. In your request:
- Set
customer.phone.country_code
to+34
- Set
customer.phone.number
to700000000
- Set
amount
to a value between1
and999
to simulate an authorized payment, or a value of1000
or higher to simulate a declined payment
1{2"amount": 1,3"currency": "EUR",4"source": {5"type": "bizum"6},7"customer": {8"phone": {9"country_code": "+34",10"number": "700000000"11}12}13}
Information
In production, Bizum payments expire after four minutes if the customer does not confirm the payment in their online banking app. You cannot simulate this payment expiry flow in sandbox as the confirmation step is skipped.
When processing Bizum payments, you can receive the following response codes:
Response code | Response text | Additional information |
---|---|---|
| Approved | |
| Invalid merchant or service provider | The payment failed due to a technical issue. If the issue persists, contact us. |
| Error / Invalid request parameters | |
| Response received too late / Timeout | The payment failed due to a technical issue. Try again after a few moments. If the issue persists, contact us. |
Internal error | ||
| No accounts | |
| Card type / payment method not supported | The payment has been declined by your bank. |
| Cardholder failed 3DS authentication |