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

MarketsBE DE FR
Processing currenciesEUR
Consumer currenciesEUR
Settlement currenciesEUR
Authentication methodsREDIRECT
Authentication timeout
Minimum payment amount0.01 EUR
Maximum payment amountVaries by consumer bank
Payment instrumentPASSTHROUGH_WALLET
Recurring paymentsNo
Separate capturesNo
RefundFull - Partial - Multiple
Refund validity
DisputesYes
Sandbox availabilityWero 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.

JourneyConsumer Entry PointAuthentication setting in RequestAuthentication method in response
M-CommerceMerchant Website-indirect redirectionREDIRECTREDIRECT
E-Commerce (QR)Desktop-Merchant CheckoutREDIRECTREDIRECT

To make a Wero payment, you'll need to provide the following data at minimum when calling our /v1/payment-charges API:

FieldRequiredDescription
paymentMethodYWERO
amount.valueYThe amount to be paid in the smallest units of the currency used.
amount.currencyYEUR
consumer.nameYFull name of the consumer.
consumer.countryYThe country where the consumer is shopping.
authenticationSettings: REDIRECT
settings.returnUrl
YAdd 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
webhooksUrlIf 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.