Standing Orders
The BOPP Checkout is initialised by calling the BoppButton function which takes two required parameters:
- The Key is the API key which is created in the BOPP Dashboard, it permissions the button to issue the payment request.
- The container is the DOM element you created in the previous step:
const boppButton = BoppButton({
key: 'Copied Key',
container: document.getElementById('bopp')
});
Note: If you don't pass at least one of the parameters, an error is generated.
To initiate a standing order you need to set the recurring payments details on the BoppButton object so that these are passed to the payers bank for processing.
This is done by calling the boppButton.setRecurringPaymentDetails
method and and passing details object.
boppButton.setRecurringPaymentDetails({
"firstPaymentAmount": "0.01",
"firstPaymentDue": "2022-11-01",
"frequency": "DayOfWeek:01:01" })
The payment details parameter object should be set with the following values:
Property | Type | Required | Description |
---|---|---|---|
firstPaymentAmount | Numeric String | Yes | The amount of the first payment which should be specified as a numeric string for example "1.00" . It is specified as a string to ensure that the precision set is maintained by the javascript implementation. |
firstPaymentDue | Date | Yes | This is the date YYYY-MM-DD which should be in the future. This is the date on which the first payment is due to be made, subsequent payments will follow the period specified by the frequency, unless the firstRecurringPaymentDue property is set. In which case the first payment is treated as a one off payment. |
frequency | Frequency | Yes | The frequency property is a formatted string which specifies the frequency with which the standing order payment will be made. It follows the format specified in the table below. |
firstRecurringPaymentDue | Date | No | If this property is set YYYY-MM-DD it is used as the date to begin making repeating payments. In this case the firstPaymentDue is used as a single one off payment. |
recurringPaymentAmount | Numeric String | No | The recurring payment amount which should be specified as a numeric string for example "1.00" . If this amount is set then the firstPaymentAmount is treated as a one off payment followed by a series of payments using this amount. |
finalPaymentDue | Date | No | This property specifies the date YYYY-MM-DD when the payments associated with the standing order should stop. If it is not set the standing order will trigger payments until it is cancelled by the payer |
finalPaymentAmount | Numeric String | No | A final payment amount which should be specified as a numeric string for example "1.00" . If this amount is set then the payment on the finalPaymentDue date will use this amount rather than any previously specified. |
numberOfPayments | Integer | No | This value can be used specify the number of payments to be made rather than specifying an end date. |
Frequency | Format | Description |
---|---|---|
DayOfWeek | DayOfWeek:w:d | Every wth week, on the dth (0-6) day of the week |
DayOfMonth | DayOfMonth:w:d | Every mth month, on the dth day of the month. -ve numbers count from the end of the month, so 01:-01 means every month on the last day of the month |
If date and frequency values don't follow the formats specified above payment processing will fail returning a 401
error.
Warning: Non-mandatory parameters may not be supported by all banks. As these are non-mandated by the Open Banking implementation supervisory process several banks have chosen to not provide a fully featured standing orders interface.
As a general rule all banks will honour the firstPaymentAmount
, firstPaymentDue
and frequency
parameters which makes it possible to set-up a simple repeating payment on a weekly or monthly basis. Most also support finalPaymentDue
which allows the standing order to be stopped. Far fewer will process alternate amounts.
Before the BOPP Checkout is clicked by the user you will need to set the parameters for the payment processing. This is also done by setting methods on the boppButton object.
Below is a list of the available methods:
Method | Parameters | Description |
---|---|---|
setPaymentReference | reference (string) | sets a value which will be used as a payment reference on the payment instructions set to the Payer application and then used in their banking interactions |
boppButton.setPaymentReference("OrderNumber");
Once set-up, a user can click on the BOPP Checkout that will cause a paylink to be generated. It will also cause an overlay dialogue to be shown to the user. This overlay will allow the user to scan a QR code to complete the payment on a separate device, or continue on the existing device. This in turn will cause the user's banking application to load from where they can complete the payment.
During this payment processing the BOPP Checkout opens a server connection to listen for status updates from the various components completing the payment processing. After the payment is complete, the BOPP Checkout SDK will call the status callback that was previously registered via the .setCallback method.
The button can be enabled / disabled using the setEnabled parameter with a boolean value.
boppButton.setEnabled(true);
The button is enabled by default.