Skip to content

Last updated: 06 November 2025 | Change log

Pilot

If you are interested in piloting Bizum, please contact your Relationship Manager.

Bizum

A Spanish mobile payment system allowing your customers to send and receive money instantly using just their phone number.

Note

Make yourself familiar with our API principles to ensure a resilient integration.

Product overview

Bizum is a popular mobile phone-based account-to-account payment solution in Spain, offering a quick and secure way for your customers to receive and send funds without the need for banking details. Users can link their bank accounts to Bizum to make instant payments using their mobile phone number. Bizum was created as a collaboration between major Spanish banks and was built on the SEPA Instant Credit Transfer scheme.

Feature summary

Payment typeCountryAcceptance currencyReversalsPartial reversalsAuth and settlement (sale)
Bank transferSpainEUR
  • Refund - yes
  • Cancel - no
  • Partial refund - yes
  • Partial cancel - no
  • Minimum transaction value: EUR 0.50
  • Maximum transaction value: EUR 1,000.00

Customer journey

  1. Your customer must be registered to use the Bizum banking app and have it available to authorize the payment.
  2. They choose Bizum on your checkout page and accept T&Cs.
  3. Your customer is then presented with their order and either a pre-populated box with their registered mobile number, or a blank box to enter their mobile number. This step is hosted by you.
  4. Your customer must then authorize the payment within a four minute window. This step is also hosted by you.
  5. They'll receive notification from their banking app to complete the payment.
  6. They confirm the payment in their banking app.
  7. Lastly, they manually return to your page where they see a success page, hosted by you.

Get started

Get started using our API reference and set your headers.

Request

POST https://try.access.worldpay.com/apmPayments

Example request

application/json
{ "transactionReference": "Memory265", "merchant": { "entity": "default" }, "instruction": { "method": "bizum", "value": { "amount": 200, "currency": "EUR" }, "narrative": { "line1": "Joe Plumbing Ltd" }, "paymentInstrument": { "type": "direct", "country": "ES" }, "customer": { "phone": "34700000001" } } }

Parameters

transactionReferencestring[ 1 .. 64 ] characters^[a-zA-Z0-9\-_/!@#$%()*=.:;?\[\]{}~+]*$required

For Bizum transaction please follow this extra regex [a-zA-Z0-9]{4,12}

merchantobject(MerchantV2)required
merchant.​entitystring[ 3 .. 32 ] characters^([a-zA-Z0-9\- ]*)$required

Used to route the request in Access Worldpay, created as part of on-boarding.

Example: "default"
instructionobject(InstructionV2)required

Object that contains the payment type and details.

instruction.​methodstringrequired

Type of payment method

Value"ach"
Discriminator
instruction.​valueobject(Value)required

The value of the payment.

instruction.​value.​amountinteger(int64)[ 1 .. 2147483647 ]required

The amount in the lowest denomination of the currency e.g. pennies for GBP, cents for USD.

Example: 12
instruction.​value.​currencystringrequired
Enum"AED""AFN""ANG""AOA""ARS""AUD""AWG""AZN""BAM""BBD"
instruction.​narrativeobject(NarrativeBase)required
instruction.​narrative.​line1string[ 1 .. 24 ] characters^[a-zA-Z0-9-., ]*$required

The description shown on your customer's bank statement for the payment.

Example: "MindPalace"
instruction.​paymentInstrumentobject(AchEftPaymentInstrumentV2)required
instruction.​paymentInstrument.​typestringrequired

The type of instrument.

Value"direct"
instruction.​paymentInstrument.​accountTypestringrequired

Account type.

Enum"checking""savings""corporate""corporateSavings"
Example: "checking"
instruction.​paymentInstrument.​accountNumberstring[ 1 .. 17 ] characters^[0-9]*$required

Account number of direct debit account.

Example: "123456789"
instruction.​paymentInstrument.​routingNumberstring= 9 characters^[0-9]*$required

Routing number of direct debit account.

Example: "123456789"
instruction.​paymentInstrument.​checkNumberstring[ 1 .. 15 ] characters^[0-9]*$

Check number of the direct debit account.

Example: "123456789"
instruction.​paymentInstrument.​companyNamestring[ 1 .. 40 ] characters^[0-9]*$

Company name if a corporate account.

Example: "123456789"
instruction.​paymentInstrument.​billingAddressobject(AchEftBillingAddress)required
instruction.​paymentInstrument.​billingAddress.​address1string[ 1 .. 80 ] characters
instruction.​paymentInstrument.​billingAddress.​address2string[ 1 .. 80 ] characters
instruction.​paymentInstrument.​billingAddress.​address3string[ 1 .. 80 ] characters
instruction.​paymentInstrument.​billingAddress.​citystring[ 1 .. 50 ] characters

City.

instruction.​paymentInstrument.​billingAddress.​countryCodestring
Enum"AD""AE""AF""AG""AI""AL""AM""AN""AO""AQ"
instruction.​paymentInstrument.​billingAddress.​postalCodestring[ 1 .. 15 ] characters

Postal code.

instruction.​paymentInstrument.​billingAddress.​statestring[ 1 .. 30 ] characters

State code of the billing address in ISO 3166-2 format.

Example: "US-OH"
instruction.​customerobject(CustomerDetailsAch)required
instruction.​customer.​firstNamestring[ 1 .. 22 ] charactersrequired

Your customer's first name.

instruction.​customer.​lastNamestring[ 1 .. 22 ] charactersrequired

Your customer's last name.

instruction.​customer.​customerIdstring<= 15 characters^[a-zA-Z0-9]*$

Your unique reference for the customer so that the 'pay faster next time' function can be used during checkout. This allows the shoppers chosen bank to be stored for their next payment.

Example: "44528abcd"
instruction.​customer.​emailstring

The customer's e-mail address.

Example: "customer@worldpay.com"

Response

Successful request response

  • an HTTP code 201
  • a paymentId which is unique to the payment - we recommend storing the "id", as you can use it to manage the payment later
  • a redirect to redirect your customer to the APM provider to complete the payment
  • an link to query the payment status
  • an object which will give flow information such as method (e.g. bizum) and type (direct)
  • a commandId generated by us identifying a single merchant interaction (e.g. cmdYNdIHBPJwbkjLiykzTx0)

Example response

{
  "redirect": "",
  "_actions": {
  },
  "_links": {
    "self": {
      "href": "https://try.access.worldpay.com/apmPayments/HZ75WBkfRwmD9YzLSZFnQ5v2I5ddQFtUqfQjfH6MtZWlDSUrxrcX5x_wn93uYUZBrpxTgfQTxtQsmy9dE_z-m-zZvrP-LeCRz0uWrqdvJK9lFEMgr042IFWuXU4qz5JB5ruD3eXP8P1s6nqEcRq5d-NwnkVtXPzEhC9FQ_77m3c"
    }
  },
  "paymentId": "HZ75WBkfRwmD9YzLSZFnQ5v2I5ddQFtUqfQjfH6MtZWlDSUrxrcX5x_wn93uYUZBrpxTgfQTxtQsmy9dE_z-m-zZvrP-LeCRz0uWrqdvJK9lFEMgr042IFWuXU4qz5JB5ruD3eXP8P1s6nqEcRq5d-NwnkVtXPzEhC9FQ_77m3c",
  "lastEvent": "pending",
  "paymentInstrument": {
    "method": "bizum",
    "type": "direct"
  },
  "commandId": "cmdjW0w-zEw4uQUp57KArz4t0"
}

Errors

Check out our API reference for the full error code schema.

Next steps


Manage your Bizum payment