Wero

  

Wero is a real-time banking payment method developed by the European Payment Initiative (EPI) consortium. It is linked to a bank account instead of a physical card. Thanks to the ever-growing network of participating banks, Wero covers 80% of the bank account holders in the targeted countries.

This page describes how to integrate Wero using the PAYONE Commerce Platform API (Order Management flow).



Parameters for Wero Payments

Structure redirectPaymentMethodSpecificInput

paymentProductId

900

requiresApproval

boolean

  • true = the payment requires approval before the funds will be captured using the Deliver or Capture endpoint of the API (Authorisation / Event Dependent Payment)
  • false = the payment does not require approval, and the funds will be captured automatically (Direct Sale / Single Immediate Payment)
redirectionData.returnUrl

The URL that the customer is redirected to after the payment flow has finished.

paymentProduct900SpecificInput.captureTrigger

Mandatory only for requests in authorisation mode (requiresApproval: true). Informs the customer in the Wero portal when you will capture the transaction.

Possible values:

  • shipping — Upon shipping the order
  • delivery — Upon delivering the order
  • availability — As soon as the order is available
  • serviceFulfilment — Upon fulfilling the service
  • other — For any other use case

Supported Countries

  • Belgium
  • Germany

Supported Currencies

  • Euro (EUR)

⚠ Important Notice: Currently, only Direct Sale (requiresApproval: false) is available for Wero. For Reservation / Pre-Authorisation and Capture, please contact Customer Support Service.

Order Management Lifecycle

The complete Order Management flow with Wero (Direct Sale mode):

Process Flows

Depending on your customer’s device(s), differences apply:

Desktop + Mobile Device

Mobile Device Only

Example

Simple example for a Wero payment via Commerce Platform using dedicated requests for Checkout and Order creation. Normally, both can be combined in a single request using auto execute order functionality.

  • Creating a checkout (here in one step, creating in multiple steps possible)
  • Creating an order for the entire checkout (partial orders also possible), payment is initialised automatically. 
  • Customer is redirected to Wero portal for payment confirmation

Create CommerceCase/Checkout

Creating a Commerce Case with the initial Checkout including a reference, information about the customer and the items in the shopping cart.

POST Commerce Case
Request
/v1/{merchantId}/commerce-cases
{
    "customer": {
        "companyInformation": {
            "name": "Mustermann GmbH"
        },
        "merchantCustomerId": "Customer-12345",
        "billingAddress": {
            "additionalInfo": "2nd Floor",
            "city": "Berlin",
            "countryCode": "DE",
            "houseNumber": "16",
            "street": "Musterstraße",
            "zip": "10115"
        },
        "contactDetails": {
            "emailAddress": "max.mustermann@example.com",
            "phoneNumber": "+491234567890"
        },
        "fiscalNumber": "",
        "businessRelation": "B2C",
        "locale": "de",
        "personalInformation": {
            "dateOfBirth": "19850315",
            "gender": "MALE",
            "name": {
                "firstName": "Max",
                "surname": "Mustermann",
                "title": "Mr."
            }
        }
    },
    "merchantReference": "commerce-case-wero-1",
    "checkout": {
        "amountOfMoney": {
            "amount": 6000,
            "currencyCode": "EUR"
        },
        "references": {
            "merchantReference": "wero-checkout-001"
        },
        "shipping": {
            "address": {
                "additionalInfo": "Apartment 203",
                "city": "Munich",
                "countryCode": "DE",
                "houseNumber": "3",
                "state": "BY",
                "street": "Hauptstraße 16",
                "zip": "80331",
                "name": {
                    "firstName": "Anna",
                    "surname": "Schmidt",
                    "title": "Ms."
                }
            }
        },
        "shoppingCart": {
            "items": [
                {
                    "invoiceData": {
                        "description": "Premium Widget"
                    },
                    "orderLineDetails": {
                        "productCode": "WDG-001",
                        "productPrice": 1000,
                        "productType": "GOODS",
                        "quantity": 2,
                        "taxAmount": 200,
                        "taxAmountPerUnit": "true"
                    }
                },
                {
                    "invoiceData": {
                        "description": "Standard Accessory Kit"
                    },
                    "orderLineDetails": {
                        "productCode": "ACC-002",
                        "productPrice": 1000,
                        "productType": "GOODS",
                        "quantity": 4,
                        "taxAmount": 71
                    }
                }
            ]
        },
        "autoExecuteOrder": false
    }
}

Response
{
    "commerceCaseId": "b12c3d4e-56f7-8901-abcd-ef2345678901",
    "merchantReference": "commerce-case-wero-1",
    "customer": {
        "companyInformation": {
            "name": "Mustermann GmbH"
        },
        "merchantCustomerId": "Customer-12345",
        "billingAddress": {
            "additionalInfo": "2nd Floor",
            "city": "Berlin",
            "countryCode": "DE",
            "houseNumber": "16",
            "street": "Musterstraße",
            "zip": "10115"
        },
        "contactDetails": {
            "emailAddress": "max.mustermann@example.com",
            "phoneNumber": "+491234567890"
        },
        "businessRelation": "B2C",
        "locale": "de",
        "personalInformation": {
            "dateOfBirth": "19850315",
            "gender": "MALE",
            "name": {
                "firstName": "Max",
                "surname": "Mustermann",
                "title": "Mr."
            }
        }
    },
    "checkout": {
        "checkoutId": "c23d4e5f-67a8-9012-bcde-f34567890123",
        "shoppingCart": {
            "items": [
                {
                    "invoiceData": {
                        "description": "Premium Widget"
                    },
                    "orderLineDetails": {
                        "id": "d34e5f6a-78b9-0123-cdef-456789012345",
                        "productCode": "WDG-001",
                        "productPrice": 1000,
                        "productType": "GOODS",
                        "quantity": 2,
                        "taxAmount": 200,
                        "taxAmountPerUnit": true
                    }
                },
                {
                    "invoiceData": {
                        "description": "Standard Accessory Kit"
                    },
                    "orderLineDetails": {
                        "id": "e45f6a7b-89c0-1234-defg-567890123456",
                        "productCode": "ACC-002",
                        "productPrice": 1000,
                        "productType": "GOODS",
                        "quantity": 4,
                        "taxAmount": 71,
                        "taxAmountPerUnit": false
                    }
                }
            ]
        },
        "amountOfMoney": {
            "amount": 6000,
            "currencyCode": "EUR"
        },
        "references": {
            "merchantReference": "wero-checkout-001"
        },
        "shipping": {
            "address": {
                "additionalInfo": "Apartment 203",
                "city": "Munich",
                "countryCode": "DE",
                "houseNumber": "3",
                "state": "BY",
                "street": "Hauptstraße 16",
                "zip": "80331",
                "name": {
                    "firstName": "Anna",
                    "surname": "Schmidt",
                    "title": "Ms."
                }
            }
        },
        "checkoutStatus": "OPEN",
        "statusOutput": {
            "paymentStatus": "WAITING_FOR_PAYMENT",
            "isModifiable": true,
            "openAmount": 0,
            "collectedAmount": 0,
            "cancelledAmount": 0,
            "refundedAmount": 0,
            "chargebackAmount": 0
        },
        "creationDateTime": "2026-04-29T06:37:32.758265733Z",
        "allowedPaymentActions": [
            "ORDER_MANAGEMENT",
            "PAYMENT_EXECUTION"
        ]
    },
    "creationDateTime": "2026-04-29T06:37:32.758265733Z"
}

Order with Wero payment

Creating an order for the entire Checkout with data for a Wero payment. For Direct Sale, requiresApproval is set to false.

POST Order
Request
/v1/{merchantId}/commerce-cases/{commerceCaseId}/checkout/{checkoutId}/order
{
    "orderType": "FULL",
    "orderReferences": {
        "merchantReference": "Order-WERO-001"
    },
    "paymentMethodSpecificInput": {
        "redirectPaymentMethodSpecificInput": {
            "paymentProductId": 900,
            "requiresApproval": false,
            "redirectionData": {
                "returnUrl": "https://yourshop.example.com/return"
            }
        },
        "paymentChannel": "ECOMMERCE"
    }
}

Response
{
    "createPaymentResponse": {
        "merchantAction": {
            "actionType": "REDIRECT",
            "redirectData": {
                "redirectURL": "https://wero.example.com/portal?token=ABC123DEF456"
            }
        },
        "payment": {
            "paymentOutput": {
                "amountOfMoney": {
                    "amount": 6000,
                    "currencyCode": "EUR"
                },
                "references": {
                    "merchantReference": "Order-WERO-001"
                },
                "paymentMethod": "redirect",
                "redirectPaymentMethodSpecificOutput": {
                    "paymentProductId": 900
                }
            },
            "status": "REDIRECTED",
            "statusOutput": {
                "isCancellable": false,
                "statusCategory": "PENDING_PAYMENT",
                "isAuthorized": false,
                "isRefundable": false
            },
            "id": "WR1ABC2DEF3GH4IJ"
        },
        "paymentExecutionId": "e45f6a7b-89c0-1234-defg-567890123456"
    },
    "shoppingCart": {
        "items": [
            {
                "invoiceData": {
                    "description": "Premium Widget"
                },
                "orderLineDetails": {
                    "id": "d34e5f6a-78b9-0123-cdef-456789012345",
                    "status": [
                        {
                            "cartItemStatus": "WAITING_FOR_PAYMENT",
                            "quantity": 2
                        }
                    ],
                    "productCode": "WDG-001",
                    "productPrice": 1000,
                    "productType": "GOODS",
                    "quantity": 2,
                    "taxAmount": 200,
                    "taxAmountPerUnit": true
                }
            },
            {
                "invoiceData": {
                    "description": "Standard Accessory Kit"
                },
                "orderLineDetails": {
                    "id": "e45f6a7b-89c0-1234-defg-567890123457",
                    "status": [
                        {
                            "cartItemStatus": "WAITING_FOR_PAYMENT",
                            "quantity": 4
                        }
                    ],
                    "productCode": "ACC-002",
                    "productPrice": 1000,
                    "productType": "GOODS",
                    "quantity": 4,
                    "taxAmount": 71,
                    "taxAmountPerUnit": false
                }
            }
        ]
    }
}

Refund

Wero supports partial and full refunds. When processing refunds for Wero, you must include the refundRedirectPaymentMethodSpecificInput object with a refundRedirectPaymentProduct900SpecificInput containing the refundReason.

Refund Properties

amountOfMoney.amount

The gross amount you want to refund for the original transaction, in the smallest denomination (e.g. cents). For a partial refund, specify the partial amount.

amountOfMoney.currencyCode

The ISO 4217 currency code (EUR for Wero).

references.merchantReference

Your unique reference to this refund. If omitted, the platform will use the one from the original payment request.

refundRedirectPaymentMethodSpecificInput
.refundRedirectPaymentProduct900SpecificInput
.refundReason

The reason for the refund. Possible values:

  • CustomerRequest
  • DuplicatePayment
  • WrongAmountCorrection
  • WrongArticleReturned
  • DefectiveArticleReturned
  • Other

Testing

Use the Commerce Platform Pre-Production environment for testing:

https://preprod.commerce-api.payone.com

  • Make sure to switch back to the production URL (https://commerce-api.payone.com) as soon as you have finished your tests.
  • Test data ONLY works in the pre-production environment. Using test data in production will lead to undesirable results.

Simulating the Customer Approval Flow

After creating a Wero order in the pre-production environment, the customer must approve the payment. Follow these steps to simulate the approval using the Wero test portal:

Step 1 — Wero Landing Page

After the redirect, the Wero landing page is displayed with a QR code and alternatively an alpha-numeric "Wero Code".



Step 2 — Add a Test Consumer

Open the test consumer portal using the link and click on "Add Consumer".

Step 3 — Navigate to Consents

Click on the consumer you created, then navigate to the CONSENTS tab. Click "Give consent".

Step 4 — Enter the Wero Code

Enter the "Wero Code" from the Wero landing page (Step 1) to create the consent.

Step 5 — Approve or Decline

Choose to approve or decline the payment consent: