MB WAY Payments
Accept payments through MB WAY, Europe's leading mobile wallet. The buyer links their phone number to their cards in the MB WAY app. Your integration submits a single Web Checkout API request. The buyer then confirms the payment on their own phone with biometrics or PIN, with no card entry and no 3DS.
This guide shows you how to create a payment intent and submit the MB WAY payment with the buyer's phone number. It also shows you how to resolve the final status asynchronously.
This document applies to the following country:
| Europe |
|---|
How it works
Use MB WAY when you want to offer the leading mobile payment method in Europe. Buyers approve in the app with biometrics or PIN and don't type card details. Key characteristics:
- No card entry: the buyer pays with the cards already linked to their phone number in the MB WAY app.
- In-app confirmation: the buyer receives a push notification in the MB WAY app and approves with biometrics or PIN.
- Asynchronous processing: submitting the payment does not return the final result. The payment stays in PENDING and resolves when the buyer confirms on their phone. You get the final status through a webhook.
The end-to-end flow involves the buyer, your frontend, your backend, and the Getnet Web Checkout API:
Before you start
Make sure the following are in place before you integrate:
- The seller (
x-seller-id) has MB WAY enabled (mbway.enabled). - Your checkout collects the buyer's mobile phone number, which is required to send the push to the MB WAY app.
- You have generated your token by following the Authentication document.
Step 1: Create the payment intent
payment_intent_id and a redirect_url.| Endpoint |
|---|
POST /payment-intent |
| Field | Type | Description | Example |
|---|---|---|---|
payment.currency | String | Currency code. | EUR |
payment.amount | Integer | Purchase 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.phone_number | string | Required for MB WAY — mobile number that receives the push. | 351#912345678 |
customer.customer_id | String | We recommend using the customer's document number. Use only letters and numbers, without special characters, separators or spaces. | 12345678912 |
customer.name | String | Customer's full name. | John Doe Smith |
customer.email | String | Customer's email address. | customer@email.com.br |
customer.billing_address.street | String | Name of a street. | Calle Gran Via |
customer.billing_address.number | String | Number that identifies the position of a building on a street. | 1000 |
customer.billing_address.country | String | Country code. | PT |
customer.billing_address.postal_code | String | Postal or ZIP code. | 90230060 |
| Field | Type | Description | Example |
|---|---|---|---|
configurations.3ds | boolean | Controls 3D Secure authentication. | true or false |
configurations.preauthorization | boolean | Indicates if the payment is a pre-authorization. | true or false |
configurations.card_verification | boolean | Indicates if this is a card verification flow. Does not apply to Bizum. | true or false |
configurations.success_url | string | Redirect URL in case of successful payment. | https://www.mystore.com/checkout/success |
configurations.error_url | string | Redirect URL in case of an error during payment. | https://www.mystore.com/checkout/error |
soft_descriptor | string | Payment description that appears on the customer's receipt. | Tienda ES |
expires_at | string | Payment intent expiration. | 3d4h15m |
phone_number: You send the phone number together with the customer's details when you create the payment intent. However, the push goes to the number the customer enters at purchase, after selecting the payment method. If the two numbers differ, we always use the one the customer enters at payment time.
Example request
The following request creates a payment intent for an MB WAY wallet payment.
Example response — pending/waiting
The following response shows a payment that is waiting for the buyer's approval.
For MB WAY, the asynchronous result is one of the following statuses:
- PENDING/WAITING: waiting for the customer to approve in the MB WAY app.
- APPROVED: the customer approved and the payment was confirmed.
- DECLINED: the customer declined or the transaction was refused.
Step 2: Submit the MB WAY payment
Submit the payment with the MB WAY method and the buyer's phone number. This step bypasses validate-session and 3DS. The backend generates the MB WAY request at the provider. The buyer then receives a push notification in the MB WAY app to approve the payment.
Step 3: Confirm the result
MB WAY is asynchronous: submitting the payment doesn't return the final result. The payment stays in PENDING/WAITING until the buyer confirms in the app. Resolve the final status in one of two ways:
- Webhook: receive the approved or denied notification (see payloads below).
Example response — approved
The following webhook payload shows an approved payment.
Example response — denied
The following webhook payload shows a denied payment.
On this page