This specification is a Payment Method specification for use with the PaymentRequest API [[PAYMENTREQUESTAPI]]. With it, merchants and payers can exchange information required for credit transfers across a variety of payment systems.
The working group maintains a list of all bug reports that the group has not yet addressed.
This specification is a Payment Method Specification used by the PaymentRequest API [[!PAYMENTREQUESTAPI]] to support payment by credit transfer.
This specification relies on several other underlying specifications.
const CreditTransferRequest = { supportedNetworks: ["BACS", "UKFasterPayments"], payeeAccountNumber: "12345678", // Bob Ltd.'s 8 digit UK bank account number payeeName: "Bob Ltd.", // Merchant name payeeBankCode: "12-34-56", // Bob Ltd.'s 6 digit sort code payeePaymentIdentificationHumanReadable: "Payment from Alice, account number 87654321", // whilst payment reference is optional for BACS scheme, this text is used for reconciliation so the merchant can check they have been paid payeePaymentIdentifierMachineReadable: "abcdefgh123456789" // unique transaction reference, not used by BACS scheme, but Payment App can use to dedeplicate }
This example refers to two credit transfer systems:
payeePaymentIdentificationHumanReadable
)
const CreditTransferRequest = { supportedNetworks: ["SEPA"], payeeAccountNumber: "FR7617519500040080394739390", // Marcel S.A. 27 digit IBAN bank account number payeeName: "Marcel S.A.", // Merchant name payeeBankCode: "CEPAFRPP751", // Marcel S.A. BIC code payeePaymentIdentificationHumanReadable: "Achat Livre Victor Hugo ", // this information is for Alice to identify quickly her purchase. Alice's Bank could display this line on the statement payeePaymentIdentifierMachineReadable: "abcdefgh123456789" // unique transaction reference provided by merchant and used in the endtoEnd field in the SEPA Credit Transfer }
The payment method identifier string for Payer-Initiated
Credit Transfer Payment is payer-credit-transfer
.
This section describes payment method specific data that is supplied
as part of the data
argument to the PaymentRequest
constructor.
dictionary CreditTransferRequest { sequence<DOMString> requiredResponseFields; sequence<DOMString> supportedNetworks; sequence<DOMString> supportedCountries; required DOMString payeeAccountNumber; DOMString payeeName; DOMString payeeAddress; required DOMString payeeBankCode; DOMString payeeIdentificationCode; DOMString payeePaymentIdentificationHumanReadable; required DOMString payeePaymentIdentificationMachineReadable; DOMString sellerName; DOMString sellerIdentificationCode; DOMString purposeCode; DOMString categoryPurposeCode; DOMString chargeBearer; DOMString preferredProcessingDate; DOMString notificationURL; };
OUR
: payer pays
SHARED
: fees are split
BENE
: payee pays
This section describes the response from the PaymentRequest API when a user accepts payment with a Credit Transfer payment method.
The CreditTransferResponse message means that a message has been submitted to the Payee's Bank, not that funds transfer has occurred. The merchant should wait for notification from its Bank that the payment has cleared.
dictionary CreditTransferResponse { required DOMString selectedProcessingDate; required DOMString payerPaymentIdentification; required DOMString payerBankCode; required DOMString selectedNetwork; DOMString payerIdentificationCode; DOMString payerName; DOMString buyerIdentificationCode; DOMString buyerName; DOMString statusInformation; };
In this credit transfer method, the payee (or third party) initiates the credit transfer. In some jurisdictions, credit transfers may be initiated by a regulated third party such as the the payee's bank or, under PSD2 in Europe, a Payment Initiation Service Provider (PISP).
The payment method identifier string for Payer-Initiated
through Payee Credit Transfer Payment is payee-credit-transfer
.
The data supplied as part of the data
argument to the
PaymentRequest constructor is the same as for
payer-credit-transfer
.
This section describes the response from the PaymentRequest API when a user accepts payment with a Payee Credit Transfer payment method.
dictionary PayeeCreditTransferResponse: CreditTransferResponse { DOMString authorizationToken; };
Owners of web sites SHOULD NOT store the payer's information except where warranted, such as storage for future and recurring payments. When information is stored, web site owners SHOULD take measures to prevent its disclosure.
Here we map fields in this specification to Customer to Bank Credit Transfer Initiation (DS-01) fields defined in SEPA Credit Transfer Rulebook Version 8.1. The SEPA Rulebook may impose additional implementation restrictions (e.g., number of characters) not defined in the current specification.
SEPA | |
---|---|
supportedNetworks | AT-40: Identification code of the Scheme |
payeeAccountNumber | AT-20: The IBAN of the account of the Beneficiary. |
payeeBankCode | AT-23: the BIC code of the beneficiary. Note: Even if the BIC could be derived from the IBAN in most of SEPA country, it may be not the case in others, so this field is important. The merchant should know the BIC of his account. This field could be also used with another format of “bank identification code” for countries not using BIC. |
payeeName | AT-21: The name of the Beneficiary |
payeeAddress | AT-22: The address of the Beneficiary |
payeeIdentificationCode | AT-24: The Beneficiary identification code |
payeePaymentIdentificationHumanReadable | AT-05: The Remittance Information sent by the Originator to the Beneficiary in the Credit Transfer Instruction only if the payeePaymentIdentificationMachineReadable is not provided. |
payeePaymentIdentificationMachineReadable | AT-05: The Remittance Information sent by the Originator to the Beneficiary in the Credit Transfer Instruction. |
sellerName | AT-28: The name of the Beneficiary Reference Party |
sellerIdentificationCode | AT-29: The identification code of the Beneficiary Reference Party |
purposeCode | AT-44: The purpose of the credit transfer |
categoryPurposeCode | AT-45: The category purpose of the credit transfer |
preferredProcessingDate | ... |
notificationURL | ... |
SEPA | |
---|---|
selectedProcessingDate | AT-07: The Requested Execution Date of the instruction |
payerPaymentIdentification | AT-41: The Originator’s reference of the Credit Transfer Transaction (End to End Identification in ISO20022 definition) |
payerBankCode | AT-06: The BIC of the Originator |
selectedNetwork | AT-40: Identification code of the Scheme |
payerIdentificationCode | AT-10: The Originator identification code |
payerName | AT-02: The Name of the Originator |
buyerIdentificationCode | AT-09: The identification code of the Originator Reference Party |
buyerName | AT-08: Name of the Originator Reference Party of the Originator Reference Party |
statusInformation | None? |
Here we map fields in this specification to ISO 20022 fields defined in the Payments Dashboard.
ISO 20022 | |
---|---|
supportedNetworks | None? |
payeeAccountNumber | pain.001.PaymentInformation.CreditTransferTransactionInformation.CreditorAccount.Identification.IBAN |
payeeBankCode | None? |
payeeName | pain.001.PaymentInformation.CreditTransferTransactionInformation.Creditor.Name |
payeeAddress | None? |
payeeIdentificationCode | pain.001.PaymentInformation.CreditTransferTransactionInformation.Creditor.Identification.* |
payeePaymentIdentificationHumanReadable | None? |
payeePaymentIdentificationMachineReadable | None? |
sellerName | pain.001.PaymentInformation.CreditTransferTransactionInformation.UltimateCreditor.Name |
sellerIdentificationCode | pain.001.PaymentInformation.CreditTransferTransactionInformation.UltimateCreditor.Identification.* |
purposeCode | pain.001.PaymentInformation.CreditTransferTransactionInformation.Purpose |
categoryPurposeCode | pain.001.PaymentInformation.CreditTransferTransactionInformation.PaymentType.CategoryPurpose |
preferredProcessingDate | pain.001.PaymentInformation.RequestedExecutionDate |
notificationURL | pain.001.PaymentInformation.CreditTransferTransactionInformation.RelatedRemittanceInformation.RemittanceLocationDetails.ElectronicAddress |
ISO 20022 | |
---|---|
selectedProcessingDate | pain.002.OriginalPaymentInformationAndStatus.TransactionInformationAndStatus.OriginalTransactionReference.RequestedExecutionDate |
payerPaymentIdentification | pain.002.OriginalPaymentInformationAndStatus.TransactionInformationAndStatus.OriginalEndToEndId |
payerBankCode | None? |
selectedNetwork | None? |
payerIdentificationCode | pain.002.OriginalPaymentInformationAndStatus.TransactionInformationAndStatus.OriginalTransactionReference.Debtor.Identification.* |
payerName | None? |
buyerIdentificationCode | pain.002.OriginalPaymentInformationAndStatus.TransactionInformationAndStatus.OriginalTransactionReference.UltimateDebtor.Identification.* |
buyerName | None? |
The following are design considerations for this specification.
This diagram illustrates a payer-initiated SEPA transfer.
This diagram illustrates a payer-initiated instant SEPA transfer.
This diagram illustrates a SEPA transfer initiated by the payer through the payee's payment service provider.
Laurent Castillo (Gemalto), Kris Ketels (Swift), Frédéric Meignien (Canton Consulting).