Pay-by-bank (ongoing)
Create an ongoingStore user credentials for faster repeat payments - only a SCA required after the first payment. Uses SEPA Instant where available. payment flow and fetch the payment receipt.
Getting Started
Pay-by-Bank (ongoing) let you initiate repeat bank transfers without the user having to select their bank and enter credentials every time. After the first payment, nrich stores their credentials (with consent). Subsequent payments only require a TAN.
Not a standing orderPay-by-Bank (ongoing) do not create a standing order at the bank. Each payment must be individually initiated and authorised by the user. The difference from one-time is that credential entry is skipped after the first payment.
Create a Widget link for the payment
Fetch the payment receipt
Step 1: Create the Widget link
POST https://api.finx-s.qwist.cloud/ongoing/payment
{
"redirect_uri": "https://my-app.example.com/callback",
"user_id": "user_maria_mueller_42",
"payment": {
"creditor": {
"iban": "DE89370400440532013000",
"name": "Acme GmbH"
},
"amount": {
"value": 149.99,
"currency": "EUR"
},
"purpose": "Invoice INV-2025-0042"
},
"save_secrets": false
}Required parameters:
| Parameter | Description |
|---|---|
redirect_uri | Where the user is returned after the flow. |
user_id | Your unique identifier for this user. Links this payment to a user profile so future payments can use stored credentials. |
payment.creditor.iban | IBAN of the recipient account. |
payment.creditor.name | Name of the recipient. |
payment.amount.value | Amount to transfer. |
payment.amount.currency | Currency code (e.g. "EUR"). |
payment.purpose | Purpose text. Max 140 characters. |
Optional parameters:
| Parameter | Description |
|---|---|
save_secrets | false (default): user sees a consent checkbox for credential storage. true: credentials always saved silently. Review GDPR consent obligations before setting to true. |
payment.debtor.iban | Pre-selects the user's bank. |
account_id | If you use Financial Data (ongoing) and have a synced account, initiate payment directly from it - no Widget bank selection needed. Mutually exclusive with payment.debtor.iban. |
Using a synced Financial Data (ongoing) account:
{
"account_id": "A57291.1"
}
account_id and payment.debtor.iban are mutually exclusivePass one or the other, not both.
Response:
{
"location": "https://widget.qwist.cloud/?token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"id": "7b3e9f4a-2c8d-4e1b-b5f7-9a6c3d2e8f4b"
}Store the id - it is your receipt ID for step 2 and matches flow_id in the callback.
Step 2: Fetch the payment receipt
See Fetching your Payment Receipt for the endpoint and response reference.
