Bizum for API only
Last updated: April 23, 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": 1000,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.
To test your integration, send a payment to the Sandbox environment using the phone number +34700000000
. By using different payment amounts, you can simulate different outcomes.
To test an authorized response, set the amount to a value between one and ten EUR:
1{2"amount": 10,3"currency": "EUR",4"source": {5"type": "bizum"6},7"customer": {8"phone": {9"country_code": "034",10"number": "700000000"11}12}13}
To test a declined payment, set the amount to any value higher than 11 EUR:
1{2"amount": 15,3"currency": "EUR",4"source": {5"type": "bizum"6},7"customer": {8"phone": {9"country_code": "034",10"number": "700000000"11}12}13}
Information
Bizum payments expire after four minutes if the customer doesn't confirm them in their online banking app. However, when testing in the Sandbox environment, you can't simulate this expiration because you skip the confirmation step.
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 |