HomeGuidesAPI Reference
Log In
Guides

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 order

Pay-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.

Step 1

Create a Widget link for the payment

Step 2

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:

ParameterDescription
redirect_uriWhere the user is returned after the flow.
user_idYour unique identifier for this user. Links this payment to a user profile so future payments can use stored credentials.
payment.creditor.ibanIBAN of the recipient account.
payment.creditor.nameName of the recipient.
payment.amount.valueAmount to transfer.
payment.amount.currencyCurrency code (e.g. "EUR").
payment.purposePurpose text. Max 140 characters.

Optional parameters:

ParameterDescription
save_secretsfalse (default): user sees a consent checkbox for credential storage. true: credentials always saved silently. Review GDPR consent obligations before setting to true.
payment.debtor.ibanPre-selects the user's bank.
account_idIf 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 exclusive

Pass 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.