Domestic Payment Consents
1. Version Control
Version | Date | Description of Changes |
Bahrain OBF v1.0.0 | 28th Oct 2020 | Initial Release |
2. Overview
The Domestic Payment Consents resource is used by a PISP to register an intent to initiate a Domestic Payment.
This resource description should be read in conjunction with a Payment Initiation API Profile.
3. Endpoints
S. No. | Resource | HTTP Operation | Endpoint | Mandatory | Scope | Grant Type | Message Signing | Idempotency Key | Request Object | Response Object |
3.1 | domestic-payment-consents | POST | POST /domestic-payment-consents | Mandatory | payments | Client Credentials | Signed Request Signed Response | Yes | OBWriteDomesticPaymentConsentRequest | OBWriteDomesticPaymentConsentResponse |
3.2 | domestic-payment-consents | GET | GET /domestic-payment-consents/{ConsentId} | Mandatory | payments | Client Credentials | Signed Response | No | NA | OBWriteDomesticPaymentConsentResponse |
3.3 | domestic-payment-consents | GET | GET /domestic-payment-consents/{ConsentId}/funds-confirmation | Mandatory | payments | Authorisation Code | Signed Response | No | NA | OBWriteFundsConfirmationResponse |
3.1 POST/domestic-payment-consents
The API endpoint allows the PISP to ask an ASPSP to create a new domestic-payment-consents resource.
The POST action indicates to the ASPSP that a domestic-payment-consents has been staged. At this point, the user/customer may not have been identified by the ASPSP, and the request payload may not contain any information of the account that should be debited
The endpoint allows the PISP to send a copy of the consent (between user/customer and PISP) to the ASPSP for the user/customer to authorise
The ASPSP creates the domestic-payment-consents resource and responds with a unique ConsentId to refer to the resource
3.1.1 Status
The default Status is "AwaitingAuthorisation" immediately after the domestic-payment-consents has been created.
S.No. | Status | Status Definition |
1 | AwaitingAuthorisation | The consent resource is awaiting user/customer authorisation |
3.2 GET/domestic-payment-consents/{ConsentId}
A PISP can retrieve a payment consent resource that they have created to check its status.
Once the user/customer authorises the payment-consent resource - the status of the payment-consent resource will be updated with "Authorised"
If the user/customer rejects the consent or the domestic-payment-consents has failed some other ASPSP validation, the status will be set to "Rejected"
Once a domestic-payment has been successfully created using the domestic-payment-consents, the status of the domestic-payment-consents will be set to "Consumed"
3.2.1 Status
The available status codes for the domestic-payment-consent resource are:
S.No. | Status | Status Definition |
1 | AwaitingAuthorisation | The consent resource is awaiting user/customer authorisation |
2 | Rejected | The consent resource has been rejected |
3 | Authorised | The consent resource has been successfully authorised |
4 | Consumed | The consented action has been successfully completed. This does not reflect the status of the consented action |
3.3 GET/domestic-payment-consents/{ConsentId}/funds-confirmation
The API endpoint allows the PISP to ask an ASPSP to confirm funds on a domestic-payment-consents resource.
If the domestic-payment-consents resource has an Authorised status the ASPSP must respond to a funds confirmation request (yes/No). If the status is not Authorised, an ASPSP must respond with a 400 (Bad Request) and a BH.OBF.Resource.InvalidConsentStatus error code
Confirmation of funds requests do not affect the status of the domestic-payment-consents resource
3.4 State Model
3.4.1 Payment Order Consent
The state model for the domestic-payment-consents resource follows the generic consent state model. However, does not use the Revoked status, as the consent for a domestic-payment is not a long-lived consent.
4. Data Models
The data dictionary section gives detail on the payload content for the Domestic Payment API flows.
4.1 OBDomesticPaymentInitiation
This section describes the OBDomesticPaymentInitiation class which is reused as the Initiation object in the domestic-payment-consents resource.
4.1.1 UML Diagram
4.1.2 Notes
For the OBDomesticPaymentInitiation object:
All elements in the Initiation payload that are specified by the PISP must not be changed via the ASPSP, as this is part of formal consent from the user/customer
If the ASPSP is able to establish a problem with payload or any contextual error during the API call, the ASPSP must reject the domestic-payment-consents request immediately
If the ASPSP establishes a problem with the domestic-payment-consents after the API call, the ASPSP must set the status of the domestic-payment-consents resource to Rejected
DebtorAccount is optional, as the PISP may not know the account identification details for the user/customer
If the DebtorAccount is specified by the PISP and is invalid for the user/customer, then the domestic-payment-consents will be set to reject after user/customer authentication
Account Identification field usage:
Where the "BH.OBF.IBAN" is specified as the SchemeName in the Account identification section (either DebtorAccount or CreditorAccount), the Identification field must be populated with the full IBAN
Where the “BH.OBF.PAN” is specified as the SchemeName in the Account identification section (either DebtorAccount or CreditorAccount), the identification field must be populated with the full Primary Account Number - identifier scheme used to identify a card account
As a merchant may be initiating payment via a PISP two identifiers are included in the payload:
InstructionIdentification is uniquely generated by the PISP. The expectation is that this is unique indefinitely across all time periods. The PISP can ensure that this is indefinitely unique by including a date or date-time element to the field, or by inserting a unique Id
EndToEndIdentification is uniquely generated by the merchant
Neither the InstructionIdentification nor EndToEndIdentification will be used as the domestic-payment-consents resource identifier (ConsentId) as the ConsentId must be uniquely generated by the ASPSP
LocalInstrument is the requested payment scheme for execution
4.1.3 Data Dictionary
Name | Occurrence | XPath | Enhanced Definition | Class/ Datatype | Codes | Pattern |
OBDomesticPaymentInitiation |
| OBDomesticPaymentInitiation | The Initiation payload is sent by the initiating party to the ASPSP. It is used to request movement of funds from the debtor account to a creditor for a single domestic payment | OBDomesticPaymentInitiation |
|
|
InstructionIdentification | 1..1 | OBDomesticPaymentInitiation/InstructionIdentification | Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction Usage: The instruction identification is a point-to-point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction | String |
|
|
EndToEndIdentification | 1..1 | OBDomesticPaymentInitiation/EndToEndIdentification | Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction | String |
|
|
LocalInstrument | 1..1 | OBDomesticPaymentInitiation/LocalInstrument | User community specific instrument Usage: This element is used to specify a local instrument, local clearing option and/or further qualify the service or service level | String | Enum:
|
|
InstructedAmount | 1..1 | OBDomesticPaymentInitiation/InstructedAmount | Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party Usage: This amount has to be transported unchanged through the transaction chain | OBDomesticPaymentInitiation/InstructedAmount |
|
|
Amount | 1..1 | OBDomesticPaymentInitiation/InstructedAmount/Amount | A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217 | String |
| ^\d{1,13}$\|^\d{1,13}\.\d{1,5}$ |
Currency | 1..1 | OBDomesticPaymentInitiation/InstructedAmount/Currency | A code allocated to currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds" | String |
| ^[A-Z]{3,3}$ |
DebtorAccount | 0..1 | OBDomesticPaymentInitiation/DebtorAccount | Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction | OBDomesticPaymentInitiation/DebtorAccount |
|
|
SchemeName | 1..1 | OBDomesticPaymentInitiation/DebtorAccount/SchemeName | Name of the identification scheme, in a coded form as published in an external list | String | Enum:
|
|
Identification | 1..1 | OBDomesticPaymentInitiation/DebtorAccount/Identification | Identification assigned by an institution to identify an account. This identification is known by the account owner | String |
|
|
Name | 0..1 | OBDomesticPaymentInitiation/DebtorAccount/Name | The account name is the name or names of the account owner(s) represented at an account level, as displayed by the ASPSP's online channels Note: the account name is not the product name or the nickname of the account | String |
|
|
CreditorAccount | 1..1 | OBDomesticPaymentInitiation/CreditorAccount | Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction | OBDomesticPaymentInitiation/CreditorAccount |
|
|
SchemeName | 1..1 | OBDomesticPaymentInitiation/CreditorAccount/SchemeName | Name of the identification scheme, in a coded form as published in an external list | String | Enum:
|
|
Identification | 1..1 | OBDomesticPaymentInitiation/CreditorAccount/Identification | Identification assigned by an institution to identify an account. This identification is known by the account owner | String |
|
|
Name | 0..1 | OBDomesticPaymentInitiation/CreditorAccount/Name | The account name is the name or names of the account owner(s) represented at an account level Note: the account name is not the product name or the nickname of the account | String |
|
|
CreditorPostalAddress | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress | Information that locates and identifies a specific address, as defined by postal services | OBPostalAddress |
|
|
AddressType | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress/AddressType | Identifies the nature of the postal address | String | Enum:
|
|
Department | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress/Department | Identification of a division of a large organisation or building | String |
|
|
SubDepartment | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress/SubDepartment | Identification of a sub-division of a large organisation or building | String |
|
|
AddressLine | 0..7 | OBDomesticPaymentInitiation/CreditorPostalAddress/AddressLine | Information that locates and identifies a specific address, as defined by postal services, presented in free format text | String |
|
|
StreetName | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress/StreetName | Name of a street or thoroughfare | String |
|
|
BuildingNumber | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress/BuildingNumber | Number that identifies the position of a building on a street | String |
|
|
PostCode | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress/PostCode | Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail | String |
|
|
TownName | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress/TownName | Name of a built-up area, with defined boundaries, and a local government | String |
|
|
CountrySubDivision | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress/CountrySubDivision | Identifies a subdivision of a country such as state, region, and country | String |
|
|
Country | 0..1 | OBDomesticPaymentInitiation/CreditorPostalAddress/Country | Nation with its own government | String |
| ^[A-Z]{2,2} $ |
RemittanceInformation | 0..1 | OBDomesticPaymentInitiation/RemittanceInformation | Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system | OBDomesticPaymentInitiation/RemittanceInformation |
|
|
RemittanceDescription | 0..1 | OBDomesticPaymentInitiation/RemittanceInformation/ RemittanceDescription | Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form | String |
|
|
Reference | 0..1 | OBDomesticPaymentInitiation/RemittanceInformation/Reference | Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification | String |
|
|
SupplementaryData | 0..1 | OBDomesticPaymentInitiation/SupplementaryData | Additional information that cannot be captured in the structured fields and/or any other specific block | OBSupplementaryData |
|
|
4.2 Domestic Payment Consents - Request
The OBWriteDomesticPaymentConsentRequest object will be used for the call to:
POST /domestic-payment-consents
4.2.1 UML Diagram
4.2.2 Notes
The domestic-payment-consents request contains these objects:
Initiation
Authorisation
SCASupportData
Risk
4.2.3 Data Dictionary
Name | Occurrence | XPath | Enhanced Definition | Class/ Datatype | Codes | Pattern |
OBWriteDomesticPaymentConsentRequest |
| OBWriteDomesticPaymentConsentRequest |
| OBWriteDomesticPaymentConsentRequest |
|
|
Data | 1..1 | OBWriteDomesticPaymentConsentRequest/Data |
| OBWriteDomesticPaymentConsentRequest/Data |
|
|
ReadRefundAccount | 0..1 | OBWriteDomesticPaymentConsentRequest/Data/ReadRefundAccount | Specifies to share the refund account details with PISP | String | Enum:
|
|
Initiation | 1..1 | OBWriteDomesticPaymentConsentRequest/Data/Initiation | The Initiation payload is sent by the initiating party to the ASPSP. It is used to request movement of funds from the debtor account to a creditor for a single domestic payment | OBDomesticPaymentInitiation |
|
|
Authorisation | 0..1 | OBWriteDomesticPaymentConsentRequest/Data/Authorisation | The authorisation request from the PISP | OBWriteDomesticPaymentConsentRequest/Data/Authorisation |
|
|
AuthorisationType | 0..1 | OBWriteDomesticPaymentConsentRequest/Data/Authorisation/AuthorisationType | The type of authorisation flow requested | String | Enum:
|
|
CompletionDateTime | 0..1 | OBWriteDomesticPaymentConsentRequest/Data/Authorisation/CompletionDateTime | The date and time at which the requested authorisation flow must be completed | DateTime |
|
|
SCASupportData | 0..1 | OBWriteDomesticPaymentConsentRequest/Data/SCASupportData | Supporting Data provided by PISP, when requesting SCA Exemption | OBWriteDomesticPaymentConsentRequest/Data/SCASupportData |
|
|
RequestedSCAExemptionType | 0..1 | OBWriteDomesticPaymentConsentRequest/Data/SCASupportData/RequestedSCAExemptionType | This field allows a PISP to request specific SCA Exemption for a Payment Initiation | String |
|
|
AppliedAuthenticationApproach | 0..1 | OBWriteDomesticPaymentConsentRequest/Data/SCASupportData/AppliedAuthenticationApproach | This field indicates whether the user/customer was subject to SCA performed by the PISP | String | Enum:
|
|
ReferencePaymentOrderId | 0..1 | OBWriteDomesticPaymentConsentRequest/Data/SCASupportData/ReferencePaymentOrderId | If the payment is recurring then the transaction identifier of the previous payment occurrence so that the ASPSP can verify that the PISP, amount and the payee are the same as the previous occurrence | String |
|
|
Risk | 1..1 | OBWriteDomesticPaymentConsentRequest/Risk | The Risk section is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Payments | OBRisk |
|
|
PaymentContextCode | 0..1 | OBWriteDomesticPaymentConsentRequest/Risk/PaymentContextCode | This field specifies the payment context
| String | Enum:
|