# Electronic Payment Standard (EPS) for Unified Payments API EPS payments follow a two-step process: 1. [Request a payment](#Request_a_payment). 2. [Redirect the customer](#Redirect_the_customer). --- ## Request a payment Use the following details to set up your request. ### Endpoints You can find the full list, as well as complete request and response examples, in our [API reference](https://api-reference.checkout.com). **Live** `POST` `https://{prefix}.api.checkout.com/payments` **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/payments` ### Request example ```json { "source": { "type": "eps", "purpose": "Mens black t-shirt L" }, "amount": 1914, "currency": "EUR", "success_url": "http://example.com/payments/success", "failure_url": "http://example.com/payments/failure" } ``` If a customer ID or email is not provided in the request, we automatically create a customer profile and return the customer `id` in the response. ### Response example If you receive a `202 Success` response containing a `status` field set to `Pending`, your request was successful. ```json { "id": "pay_wqvd2nukz5dujnmokm7ljhymwa", "status": "Pending", "customer": { "id": "cus_uvs2lu4b7ncurjx5zdtrixnc4e" }, "_links": { "self": { "href": "https://{prefix}.api.sandbox.checkout.com/payments/pay_wqvd2nukz5dujnmokm7ljhymwa" }, "redirect": { "href": "https://ftg-customer-integration.giropay.de/ftgbank/b/bankselection/2329733103475232793;jsessionid=6CA094B861DC4D16D1C48D1988DE4A32.sf-testapp02tom24?op=001" } } } ``` --- ## Redirect the customer Redirect your customer to the `redirect` link’s href in the response. The link will send them to an EPS page where they can select their bank. Once they've selected a bank, they'll be transferred to the specified bank's page to enter their authorization details. If successful, the payment can be approved and the customer is either redirected to your predefined success or failure URL. Confirmation of an EPS payment is only communicated through webhooks. All payments are labeled as _Pending_ until you receive a `payment_captured` webhook (response code `10000`), indicating a successful transaction. --- ## Get details about a payment You can retrieve details about an existing EPS payment with the following endpoint. ### Endpoints You can find the full list, as well as complete request and response examples, in our [API reference](https://api-reference.checkout.com). **Live** `GET` `https://{prefix}.api.checkout.com/payments/{id}` **Sandbox** `GET` `https://{prefix}.api.sandbox.checkout.com/payments/{id}` ### Response example ```json { "id": "pay_iilqeu2rsdqedkvkjhl2rxgbvy", "created_on": "2024-03-28T14:50:26Z", "source": { "type": "eps", "purpose": "Mens black t-shirt L", "bic": "HYPTAT22XXX", "iban": "AT611904300234573201", "account_holder_name": "John Smith" }, "amount": 1914, "currency": "EUR", "payment_type": "Regular", "status": "Captured", "flagged": false, "_links": { "self": { "href": "https://{prefix}.api.checkout.com/payments/pay_iilqeu2rsdqedkvkjhl2rxgbvy" } } } ``` --- ## Refund a payment EPS supports both partial and full refunds. You can refund a payment using the [Refund API](https://www.checkout.com/docs/payments/manage-payments/refund-a-payment.md). --- ## Cancel a payment If the customer fails to complete their payment, we automatically void it and send a `payment_expired` webhook. However, if the customer explicitly cancels their payment, we send a `payment_canceled` webhook instead. --- ## Testing EPS Before you start testing, you must [create a test account](https://www.checkout.com/get-test-account) and contact your account manager to activate EPS payments in your sandbox environment. 1. Send an [EPS payment request](#Request_a_payment) and follow the redirect link in the response to the EPS bank selection page. 2. In the BIC search box, enter _STUZZA_, and then select any of the following banks: - Bank 1: - BIC – STZZATWWXXX - Name – PSA (Stuzza) Bank - Bank 2: - BIC – STUZZATWXXX - Name – PSA (Stuzza) Bank 2 3. Select _Weiter zum Bezahlen_. 4. Sign in to the bank's sandbox environment using the following credentials: - Bank 1: - Benutzername – _1004649_ - Passwort – `gKFQ'w3m>-Y?9k_#nUE8` - Bank 2: - Benutzername – _1009853_ - Passwort – `gKFQ'w3m>-Y?9k_#nUE8v` 5. Select _TAN ANFORDERN_, and copy the returned TAN number. 6. Paste the TAN number in the _TAN Hier eintragen_ field. 7. Select _TAN SENDEN_. If the payment is successful, you see a success page in the bank's sandbox environment, and you are redirected to your predefined success URL.