Payment instructions (manual bank transfer)
On this page
Retrieves the data your customer needs to pay a checkout manually via bank transfer — recipient name, IBAN, local account number (CZ/SK), variable symbol, amount, currency and a ready-to-render QR code. No email is sent by this endpoint; it is intended for cases where you want to render the instructions in your own UI (invoice, thank-you page, PDF, etc.).
Prerequisites
- The merchant account has bank transfer enabled for the checkout's currency. If not, the endpoint returns
409. Enabling bank transfer is done by Payout support / in backoffice.
The endpoint returns one set of payment instructions per call — beneficiary, IBAN, variable symbol and a QR code matching the standard used in the checkout currency's country. The customer scans/uses it without needing to choose anything.
Flow
-
Generate api key and secret
- You can do it in backoffice (Sandbox or Production) after you have already created account.
-
Make authorization call to get Bearer token
Command Linecurl --location --request POST 'https://sandbox.payout.one/api/v1/authorize' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-raw '{ "client_id": "DC995618-7ED8-4070-9DA0-48B6F86551C3", "client_secret": "q3dpHpYtDrH-KmGD4HMn5OTEx6IsZPBokQ8CqMONWqMSEePWy9bXd3Ua3KvO7f6C" }'Response of this call looks like this:
JSON{ "token": "SFMyNTY.g2gDYSFuBgCaSXELfgFiAAFRgWnBcvEfet1jIr9OPF984RGTKu-8HcHPQKJitk_kJKiU", "valid_for": 6000 } -
Create a checkout in the usual way (see Simple payment). Keep the returned
id— you will need it in the next step. -
Call the
payment_instructionsendpoint with the checkout id. It's a GET HTTP call that requires only the Authorization header with the Bearer token from step 2.Command Linecurl --location --request GET 'https://sandbox.payout.one/api/v1/checkouts/141447/payment_instructions' \ --header 'Authorization: Bearer SFMyNTY.g2gDYSFuBgCaSXELfgFiAAFRgA.WnBcvEfet2jJr4OPF984RGTKu-8HcHPQKJitk_kJKiU' \ --header 'Accept: application/json' -
Process the response
JSON{ "recipient_name": "Payout a.s.", "iban": "SK3883300000003175133001", "account_number": "000000-3175133001/8330", "variable_symbol": "8430300911", "amount": "0.0100", "currency": "EUR", "qr_code": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAHBCAYAAACBh..." }Field Description recipient_nameName of the beneficiary the customer should send the money to. ibanBeneficiary IBAN in international format. account_numberBeneficiary account in local format ( prefix-account/). Currently filled for Czech (CZ) and Slovak (SK) IBANs;bank_code nullfor other countries.variable_symbolVariable symbol the customer must include in the transfer. It binds the incoming payment to the checkout. amountTotal amount to transfer, decimal string (e.g. "0.0100").currencyISO 4217 currency code. qr_codeBase64-encoded PNG of the payment QR. Render directly with <img src="data:image/.png;base64,${qr_code}" /> Note
The QR is cached server-side, so repeated calls for the same checkout return the same image without hitting the upstream QR generator again.
Error responses
| HTTP | Error | Cause |
|---|---|---|
401 |
Unauthorized access. Check your token. |
Missing or invalid Bearer token. |
403 |
Forbidden |
The checkout does not belong to the authenticated account. |
404 |
Not Found |
Checkout with given id does not exist. |
409 |
Bank transfer not enabled for this account. |
The merchant account has no active bank-transfer payment method for the checkout currency. Enable it in backoffice. |
410 |
Checkout has expired. |
The checkout's will_expire_at has passed. Create a new checkout. |
422 |
No bank account available for this currency. |
No beneficiary bank account is available for the checkout currency. Contact Payout support. |
500 |
Failed to generate QR code. |
Upstream QR generator failed (e.g. Pay by Square API outage). Retry; the request is safe to repeat. |
- Need help? Contact support.
- Questions? Contact sales.
- Service status? status.payout.one.
- LLM? Read llms.txt.