Single Instant Payment — Requirements v2.16 min read
The Consent requirements and the User Journeys for this payment type also apply and must be adhered to.
The tables below list the validation rules that apply to Single Instant Payment. The Validated by column indicates where each rule is enforced. All requests require an active Trust Framework application with the BSIP role, a valid transport certificate presented on every request via mTLS, and an active signing key for JWT signing.
Consent Creation
/parThe consent is submitted inside a signed Request JWT sent to the Authorization Server. The consent.* fields referenced in the table below are nested as authorization_details[0].consent within that JWT. The POST body must also include a client assertion to authenticate the TPP application.
aud, signing algorithm (PS256), and expiry window.client_assertionclient_assertion_type: urn:ietf:params:oauth:client-assertion-type:jwt-bearer). Authenticates the TPP application — see Client Assertion.scope (in Request JWT)payments openid. If consent.Permissions includes any of ReadAccountsBasic, ReadAccountsDetail, or ReadBalances, must be accounts payments openid — see Account Permissions in a Payment Consent.authorization_details[0].type (in Request JWT)urn:openfinanceuae:service-initiation-consent:v2.1.authorization_details[0].type (e.g. urn:openfinanceuae:service-initiation-consent:v2.1) restricts the version of the Payment Initiation endpoints the consent can be used to call (specified in the path, e.g. /open-finance/payment/v2.1/payments). It MUST resolve to an ApiVersion the LFI has published in the Trust Framework for the Payment Initiation API family./par OpenAPI schema. No additional or undocumented parameters are permitted.consent.PersonalIdentifiableInformationPOST /par). All required properties must be present with values of the correct type, and no additional or undocumented properties are permitted (additionalProperties: false).consent.PersonalIdentifiableInformation.RiskRisk block must be fully populated — every field that is known or derivable from the TPP's system must be included. See Risk.Initiation.DebtorAccountInitiation.Creditorconsent.ControlParameters.ConsentSchedule.SinglePayment.Type"SingleInstantPayment". MultiPayment and FilePayment must not be present.consent.ControlParameters.ConsentSchedule.SinglePayment.Amountconsent.ControlParameters.ConsentSchedule.SinglePayment.Amount.CurrencyAED.ApiMetadata.SingleInstantPayment.Supported on its authorisation server entry in the Trust Framework. If the payment type is not supported, the consent validation will fail.consent.BaseConsentIdBaseConsentId, the TPP must reuse that same BaseConsentId rather than the immediate prior ConsentId.consent.IsSingleAuthorizationfalse. Omitting or setting to false asserts that the TPP supports the multi-authorization flow — the consent may remain pending while additional authorizers approve before reaching Authorized. Setting to true requests that only accounts solely authorizable by the authenticated customer be offered. The LFI must not reject the consent based on its own platform capability — this is a TPP-side assertion. See Multi-Authorization.consent.AuthorizationExpirationDateTimeconsent.ExpirationDateTime.consent.ExpirationDateTimeconsent.PermissionsReadBalances is included, at least one of ReadAccountsBasic or ReadAccountsDetail must also be present.consent.CurrencyRequestCurrencyRequest is for non-local currency and international transfers.consent.PaymentPurposeCodex-fapi-interaction-idPayment Initiation
/paymentsAuthorizationpayments openid scope (or accounts payments openid where account permissions were included on the consent — see Account Permissions in a Payment Consent). The consent bound to the token must be in Authorized status and the ExpirationDateTime of the Consent must be in the future.POST /payments without undue delay after completing the token exchange that follows the authorization callback. Although the access token is valid for 10 minutes, a SingleInstantPayment is initiated with the User actively present and awaiting confirmation — avoidable delay creates uncertainty about whether the payment has been initiated and degrades the User experience.v2.1 in /open-finance/service-initiation/v2.1/payments) must match the version in the consent's authorization_details[0].type (urn:openfinanceuae:service-initiation-consent:v2.1).Data.ConsentIdConsentId bound to the access token. The Consent must be in Authorized status and the ExpirationDateTime of the Consent must be in the future.Data.Instruction.Amount.Amountconsent.ControlParameters.ConsentSchedule.SinglePayment.Amount.Amount.Data.Instruction.Amount.Currencyconsent.ControlParameters.ConsentSchedule.SinglePayment.Amount.Currency.Data.PaymentPurposeCodeconsent.PaymentPurposeCode.Data.OpenFinanceBillingconsent.OpenFinanceBilling (including Type and, if present, MerchantId).Data.DebtorReferenceconsent.DebtorReference.Data.CreditorReferenceconsent.CreditorReference.POST /payments call will be rejected./payments OpenAPI schema. No additional or undocumented parameters are permitted.PersonalIdentifiableInformationPOST /payments). All required properties must be present with values of the correct type, and no additional or undocumented properties are permitted (additionalProperties: false). Note that DebtorAccount is not part of the payment-time PII — the debtor is fixed by the consent, and Initiation.Creditor is a single object rather than an array.PersonalIdentifiableInformation.RiskRisk block must be fully populated — every field that is known or derivable from the TPP's system must be included. See Risk.PersonalIdentifiableInformation (Creditor)Initiation.Creditor[] had exactly 1 entry at consent time. The submitted creditor must exactly match that consent-time entry. See Creditor.x-fapi-interaction-idx-idempotency-keyx-fapi-auth-dateTue, 11 Sep 2012 19:43:31 UTC.x-fapi-customer-ip-addressx-customer-user-agentAccount Status Handling
The debtor account selected at consent authorization must still be in a state that permits payment initiation at the time POST /payments is called. If the account's status has changed since consent authorization, the LFI will respond with 403 according to the table below. The TPP MUST handle these responses and surface a suitable message to the User.
ActiveInactive, Dormant, Suspended403 with errorCode: Consent.AccountTemporarilyBlocked and errorMessage: The account is temporarily blocked.Unclaimed, Deceased, Closed403 with errorCode: Consent.PermanentAccountAccessFailure and errorMessage: The account is permanently inaccessible.