Skip to content

Last updated: 13 March 2026 | Change log

BANCOMAT Pay is an Italian bank‑transfer payment method that enables customers to make online purchases through a mobile app linked directly to their bank accounts. It is widely used across Italy by PagoBANCOMAT card holders.

Note

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

Product overview

Feature summary

Payment typeCountryAcceptance currencyReversalsPartial reversalsAuth and settlement (sale)Disputes
Bank transferItalyEUR
  • Refund - yes
  • Cancel - no
  • Partial refund - yes
  • Partial cancel - no
  • Minimum transaction value: 0,50 EUR
  • Maximum transaction value: 10.000 EUR

Customer journey

Your customer enters their mobile number at checkout. They receive a payment request notification, open the BANCOMAT Pay app, and confirm the payment by PIN, fingerprint, or face recognition.

Get started

Use our API reference and set your headers.

Request

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

Example request

application/json
{ "transactionReference": "Memory265-13/08/1876", "orderReference": "apm-order-12345", "merchant": { "entity": "default" }, "instruction": { "method": "bancomat", "value": { "amount": 250, "currency": "EUR" }, "narrative": { "line1": "MindPalace" }, "paymentInstrument": { "type": "direct", "country": "IT" }, "customer": { "firstName": "James", "lastName": "Moriarty", "phone": "39065555555", "email": "moriarty@example.com" } } }

Parameters

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

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

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

A reference that you can apply to one or more payments according to your business needs. You may reuse the same reference across multiple payments, for example where:

  • the total amount for a single order is split across multiple payments
  • you use a single reference for each payment in a recurring agreement or split shipment scenario
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 your customer's 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

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": "bancomat",
    "type": "direct"
  },
  "commandId": "cmdjW0w-zEw4uQUp57KArz4t0"
}

Schema

paymentIdstring

The identifier of the payment resource.

lastEventstring
Enum"authorized""cancelFailed""cancelled""cancelRequested""sentForSettlement""sentForAuthorization""settlementFailed""chargebackReversed""chargedBack""disputeExpired"
_linksobject(Links)

Links to resources related to the request.

_actionsobject(Actions)
redirectstring

The URL to redirect your customer to, or a QR code in Base64 to show to your customer, in order to complete the transaction.

paymentInstrumentobject(PaymentInstrumentResponse)
commandIdstring

An action ID generated by us identifying a single merchant interaction

Example: "cmdYNdIHBPJwbkjLiykzTx0"
transactionCodestring

For Pix payments - display to your customer for them to copy and paste in the Pix app.

For Swish payments - use this value and add in the custom URL scheme: swish://paymentrequest?token={token}&callbackurl={callbackURL} as the token value. This will prompt the app to open where the customer can complete their payment.

Example: "IZQ3iUfePwiWiwldJlipl8NGVA7w5IUg"

Errors

Check out our API reference for more responses or error codes.

Simulation

Simulate payment outcomes and trigger webhooks in our Try environment by sending a request using magic values.

Add the magic values below in the lastName field under the customer object.

Upon sending a payment request, you receive the payment status pending. Query the payment to receive the desired payment status.

For the payment status sentForSettlement you can use the reversal link to refund a payment and receive the status sentForRefund.

Magic valuePayment statusDescription
AUTHORISEDauthorizedPayment authorized successfully.
CAPTUREDsentForSettlementYour customer’s payment is in the process of being settled.
CANCELLEDcancelledByCustomerUnsuccessful payment - your customer has cancelled the payment in the BANCOMAT Pay app.
application/json
{ "transactionReference": "Memory265-13/08/1876", "orderReference": "apm-order-12345", "merchant": { "entity": "default" }, "instruction": { "method": "bancomat", "value": { "amount": 250, "currency": "EUR" }, "narrative": { "line1": "MindPalace" }, "paymentInstrument": { "type": "direct", "country": "IT" }, "customer": { "firstName": "James", "lastName": "AUTHORISED", "phone": "39065555555", "email": "moriarty@example.com" } } }

Response example

{
  "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": "bancomat",
    "type": "direct"
  },
  "commandId": "cmdjW0w-zEw4uQUp57KArz4t0"
}

Query response example

{
  "paymentId": "eyJrIjoiYXBtLXNlcnZpY2UtZGVmYXVsdCIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.BnnxxcMle38OazhwbF8J+4rtJi8CAq:Y3zUOn1dw6VWfvx:PHL5L0S+5ara5vz6ouV5yBmVUQCiSwQjs+1x5qJIJxAKWMWc2Mlb1doricEYlzsZIRIGCflvnYu1Ns8g1S0+66n6wCELiB9OHfX7cdEOYtwT8tpnHu5uZUBAwmlV6bro05iymKvc8mwzAawjsgJmpfYV6BqoQvWGjKw4hwIbpTF5034xXNaTeU5izgdLAAEog8r6PqjIHs0QgBXQ1SKjRYbFn:t5hDGc8WxOcDxjjIvOG7vlGKoers:AJo+t3RH541gRrY6dNFwXWTNitB0+FcMvY4WkV:uk3MTgY8D1AQ9CshhCD+rd5nvOJM8ZA4VJvAJkUGe7OxeQa4erANeVT8cyU:6upWDoCYfWD462QlklMxTqvJsXCKVSvIaioEihxKegEVcWk3m64WEvsr1eQ2YUmfwv3cJfatqSLQJMc9UKf5OZNyq:1QBVQLHQ=",
  "lastEvent": "authorized",
  "_links": {
    "self": {
      "href": "https://try.access.worldpay.com/apmPayments/HZ75WBkfRwmD9YzLSZFnQ5v2I5ddQFtUqfQjfH6MtZWlDSUrxrcX5x_wn93uYUZBrpxTgfQTxtQsmy9dE_z-m-zZvrP-LeCRz0uWrqdvJK9lFEMgr042IFWuXU4qz5JB5ruD3eXP8P1s6nqEcRq5d-NwnkVtXPzEhC9FQ_77m3c"
    }
  },
  "_actions": {}
}

Next steps

Manage your BANCOMAT Pay payment