Wero
Wero is a European digital payment wallet developed by the European Payments Initiative (EPI), aiming to provide a unified, instant, and secure payment solution across Europe. Launched in 2024, Wero enables users to send and receive money between bank accounts in under 10 seconds, 24/7, using just a phone number. The Wero wallet will initially be available in Germany, Belgium, France followed by the Netherlands and Luxembourg.
Payment method properties
Markets | BE DE FR |
Processing currencies | EUR |
Consumer currencies | EUR |
Settlement currencies | EUR |
Authentication methods | REDIRECT |
Authentication timeout | |
Minimum payment amount | 0.01 EUR |
Maximum payment amount | Varies by consumer bank |
Payment instrument | PASSTHROUGH_WALLET |
Recurring payments | No |
Separate captures | No |
Refund | Full - Partial - Multiple |
Refund validity | |
Disputes | Yes |
Sandbox availability | Wero sandbox |
Make a Wero payment
One-time Wero payments follow our standard authentication methods, ensuring quick and easy integration for any journey—whether M-Commerce, In-Store, or E-Commerce.
Simply add Wero to your integration in seconds, with the details for each channel summarised below for your convenience.
Journey | Consumer Entry Point | Authentication setting in Request | Authentication method in response |
---|---|---|---|
M-Commerce | Merchant Website-indirect redirection | REDIRECT | REDIRECT |
E-Commerce (QR) | Desktop-Merchant Checkout | REDIRECT | REDIRECT |
To make a Wero payment, you'll need to provide the following data at minimum when calling our /v1/payment-charges API:
Field | Required | Description |
---|---|---|
paymentMethod | Y | WERO |
amount.value | Y | The amount to be paid in the smallest units of the currency used. |
amount.currency | Y | EUR |
consumer.name | Y | Full name of the consumer. |
consumer.country | Y | The country where the consumer is shopping. |
authenticationSettings: REDIRECT settings.returnUrl | Y | Add the url where the consumer should be redirected to after they complete the payment. Required for the REDIRECT payment flow. |
merchantPaymentChargeReference | (Recommended) add your internal reference id for the payment in this field | |
webhooksUrl | If you want to override your pre-configured webhooks endpoint, you can receive webhooks for this payment here. |
Request
POST /v1/payment-charges
{
"merchantPaymentChargeReference": "YOURPAYMENTREFERENCEHERE",
"paymentMethod": "WERO",
"amount": {
"value": 100,
"currency": "EUR"
},
"paymentDescriptor": "Payment Descriptor",
"consumer": {
"name": "John Smith",
"country": "DE",
"email": "[email protected]",
"billingAddress": {
"firstName": "John",
"lastName": "Smith",
"phoneNumber": "",
"street": "Somestraße 65",
"postalCode": "10666",
"city": "Berlin",
"region": "Berlin",
"country": "DE"
}
},
"order": {
"orderItems": [
{
"name": "Product Name 1",
"quantity": 1,
"amount": 100
}
]
},
"authenticationSettings": [
{
"type": "REDIRECT",
"settings": {
"returnUrl": "https://www.ppro.com/"
}
}
]
}
Response
You'll receive our standard payment charge response (see potential responses in the API Reference) with the available authentication methods.
{
"id": "charge_0Z6Rb3aXZLowbpdCRgbue",
"paymentMethod": "WERO",
"paymentMedium": "ECOMMERCE",
"scheduleType": "UNSCHEDULED",
"instrumentId": "instr_KJgFGueIskdsylo3kbnYv",
"currency": "EUR",
"country": "DE",
"paymentDescriptor": "Payment Descriptor",
"status": "AUTHENTICATION_PENDING",
"consumer": {
"name": "John Smith",
"email": "[email protected]",
"country": "DE",
"billingAddress": {
"firstName": "John",
"lastName": "Smith",
"phoneNumber": "",
"street": "Somestraße 65",
"postalCode": "10666",
"city": "Berlin",
"region": "Berlin",
"country": "DE"
}
},
"order": {
"orderItems": [
{
"name": "Product Name 1",
"quantity": 1,
"amount": 100
}
],
"industryData": []
},
"authenticationMethods": [
{
"details": {
"requestUrl":"https://redirection-target.com",
"requestMethod": "GET"
},
"type": "REDIRECT"
}
],
"authorizations": [
{
"id": "authz_NaYyFjUJpYPHKVwnte9lI",
"amount": 100,
"status": "AUTHENTICATION_PENDING",
"merchantPaymentChargeReference": "ic9dJqzDYLfC6wi",
"createdAt": "2025-02-28T10:26:03.358Z",
"updatedAt": "2025-02-28T10:26:03.358Z"
}
],
"captures": [],
"refunds": [],
"voids": [],
"createdAt": "2025-02-28T10:26:02.890Z",
"updatedAt": "2025-02-28T10:26:03.358Z"
}
Consumer Authentication
Wero requires a consumer authentication step before the payment is authorized and captured.
In your response to your charge creation request, you will receive the authenticationMethods list with type as REDIRECT. Depending on the intended consumer channel and experience, the consumer will either be redirected to the Merchant App or presented with a QR code. These processes are outlined in the table above (see Consumer Journey Mapping for Request and Response). The consumer will navigate to their Wero app and give consent to the payment.
The payment charge will remain in the AUTHENTICATION_PENDING state until the consumer gives payment consent in their app. After this, the charge will transition to the CAPTURED state.
Handling the payment result
Depending on the intended consumer channel and experience, the consumer will either be redirected to the Merchant App or presented with a QR code. These processes are outlined in the table above (see Consumer Journey Mapping for Request and Response). The response flow varies based on whether the authorization is successful, fails, or if the user cancels or aborts the flow.
If the consumer fails to authenticate the payment within the timeout window, the charge will transition to the DISCARDED state.
You can receive webhooks for all changes to the payment charge state and use these to build business logic such as delivering the goods when the charge is CAPTURED.
In phase 1, PPRO will operate in an auto-capture flow.
Recurring Payments
Recurring payments are not currently supported by Wero; this functionality is expected to be introduced by 2026.
Updated 1 day ago