HomeGuidesAPI Reference
Log In
Guides

Fetching your Payment Receipt

Fetch a payment receipt to confirm the payment was successfully submitted to the bank.

Requirements

Fetch the receipt after the user completes the payment flow. Use the id returned in step 1 (or the flow_id from the callback URL).

GET https://api.finx-s.qwist.cloud/payment-receipts/{id}

Authorization: Basic {Base64(clientId:clientSecret)}

Response

{
  "id": "3ca31c37-986a-454e-ad64-8e97143c86bc",
  "debtor": {
    "iban": "DE93300308800013441006"
  },
  "creditor": {
    "iban": "DE93300308800013441006",
    "name": "John Doe"
  },
  "amount": {
    "value": 23.99,
    "currency": "EUR"
  },
  "purpose": "Thanks for all the fish.",
  "sepa_purpose_code": "GDDS",
  "end_to_end_reference": "5B5U3FFS9EA2LS0O",
  "submitted_at": "2026-06-04T21:18:20.358Z",
  "type": "SEPA transfer"
}

Field reference:

FieldDescription
idUnique receipt identifier. Matches the id from step 1 and flow_id from the callback.
debtor.ibanIBAN of the user's account the payment was sent from.
creditor.ibanIBAN of the recipient account.
creditor.nameName of the recipient.
amount.valueAmount transferred.
amount.currencyCurrency code.
purposePurpose text submitted with the payment.
sepa_purpose_codeSEPA purpose code (e.g. GDDS = Goods sold). Present when provided at initiation.
end_to_end_referenceEnd-to-end reference assigned to the transaction. Can be used for reconciliation.
submitted_atTimestamp when the payment was submitted to the bank's payment infrastructure.
typePayment rail used: "SEPA transfer" (standard) or "SEPA Instant transfer". Use this field to determine settlement speed.

submitted_at reflects submission time, not settlement. For SEPA Instant transfer, settlement typically occurs within seconds. For SEPA transfer, settlement happens during the bank's next booking cycle, usually within a few hours on business days.


Important notes

🚧

1-hour availability window

The payment receipt is only available for 1 hour after the payment is successfully submitted. Fetch it promptly after receiving the success callback. If you miss the window, there is no way to retrieve it.

📘

Not a settlement confirmation

The receipt confirms the payment was submitted to the bank - not that funds have settled. For SEPA transfer, the bank may still reject it during the booking process (e.g. insufficient funds). For SEPA Instant transfer, rejections are returned faster but are still possible. Use end_to_end_reference for downstream reconciliation.

📘

404 while the flow is in progress

This endpoint returns 404 while the user is still going through the Widget. This is expected - only poll after you receive the success callback.



Error handling

The nrich API uses standard HTTP status codes and returns a structured error object in the response body.

Error response structure

{
  "error": {
    "code": 1000,
    "group": "client",
    "description": "Request body doesn't match input schema.",
    "data": {
      "redirect_uri": ["Not a valid URL."]
    }
  }
}
FieldDescription
codenrich-specific numeric error code.
groupError category: client, user, bank, general, or connectivity.
descriptionShort human-readable summary.
dataField-level validation details (on 400 errors).

HTTP status codes

CodeMeaningWhat to do
200 OKSuccess.Parse the response body.
400 Bad RequestInvalid or missing parameters.Check error.data for the specific field.
401 UnauthorizedToken missing or expired.Refresh using your refresh_token and retry.
403 ForbiddenValid token, insufficient scope.Verify your credentials have the required scopes.
404 Not FoundResource not found or not yet created.Confirm the ID is correct; some resources only exist after the user completes the flow.
423 Resource LockedResource temporarily locked during migration.Retry with exponential backoff (seconds → minutes).
500 Internal Server ErrorUnexpected server error.Retry with backoff; contact support if it persists.
🚧

Implement 423 retry logic

423 can occur after system updates. Your application must handle it with incremental backoff - do not surface it directly to users.

Common nrich error codes
CodeGroupDescription
1000clientInvalid request - check data for field details
1002clientEntity not found
1008clientResource busy - implement retry with backoff
10000userLogin credentials are invalid
10001userPIN is invalid
10004userTAN is invalid
10007userPIN change required at the bank
20000bankProcessing at the bank not possible
20003bankBank under maintenance
30000generalProcessing at nrich not possible
30005generalTask has expired
40000connectivityBank not supported