One-off payments
Learn how to handle one-off payment scenarios via Hosted Checkout
Use this for: single payments via Card, Apple Pay, Google Pay, or Pay by Bank (SIP).
This setup is used when you want to collect payment immediately without storing the customer's payment credentials for future use. Typical use cases include:
- Selling one-time products or services (e.g. e-commerce purchases)
- Accepting immediate repayments or account top-ups
- Providing a way for customers to resolve failed recurring payments (common in lending and subscriptions)
- Situations where no future billing or subscription is required
For this scenario, providing a customer_id
is optional, but recommended if you want to link the payment to a customer record for reporting, reconciliation, or to enable one-click checkout for returning customers.
Read more about the one-click checkout feature here.
When you're ready to accept a payment, initiate Hosted Checkout by sending a request to the payment-links
API endpoint. This request defines how the checkout behaves — including whether a payment is taken, credentials are stored, or both.
Minimum Fields Required
The table below highlights the key fields required to support the One-off Payment scenario.
Field | Type | Required | Description |
---|---|---|---|
transaction.order_id | string | ✅ | Unique reference assigned by you for the payment request |
transaction.amount | number | ✅ | Must be greater than 0 |
transaction.currency | string | ✅ | Must be set to gbp to offer Pay by Bank. Other payment types support additional currencies |
Example Request
The example below shows a valid request to initiate Hosted Checkout for a One-off Payment using minimal fields. The customer can complete the payment using cards, digital wallets (Apple Pay and Google Pay), or Pay by Bank.
{
"transaction": {
"order_id": "e93aaf85-af8c-a6ae-89ba-0867905f9123",
"amount": 5.99,
"currency": "gbp"
}
}
Enabling 3D Secure
To allow customers to authenticate using EMV 3-D Secure (3DS) for card payments, you must include the fields below in your request. For other payment methods, customers authenticate directly with their bank or wallet provider, so these fields are not needed.
Required Fields
Field | Type | Required | Description |
---|---|---|---|
tds | object | NA | NA |
tds.is_active | boolean | ✅ | Enables the use of EMV 3-D Secure to authenticate the cardholder. |
tds.contact_url | uri | ✅ | Link to the contact us / support page of your website |
customer | object | NA | NA |
billing | object | NA | NA |
email | string | Recommended | The customer's email address. |
billing.line_1 | string | Recommended | The first line of the customer's address. |
billing.postcode | string | ✅ | The postcode of the customer's address. |
billing.country_code | string | Recommended | The ISO 3166 2-character code of the customer's address. |
Note: If a
customer_id
is provided andtds.is_active
is set totrue
, you don’t need to include the additional 3DS fields in the request — as long as the information is already stored against the customer record.
Example Request
The example below shows the minimum fields required to process a one-off card payment with 3D Secure enabled:
{
"transaction": {
"order_id": "e93aaf85-af8c-a6ae-89ba-0867905f9123",
"amount": 15.00,
"currency": "gbp"
},
"tds": {
"is_active": true,
"contact_url": "https://merchant.example.com/support"
},
"billing": {
"address": {
"line_1": "152 Aldgate Drive",
"postcode": "E1 7RT",
"country_code": "GB"
},
"email": "[email protected]"
}
}
Additional Requirements for MCC 6012 (Financial Services)
If your business operates under Merchant Category Code (MCC) 6012 — typically lenders, or other financial services — card schemes require additional information to be submitted with each transaction.
This applies to all card payments, including one-off and recurring transactions. The purpose is to ensure greater transparency for consumers and reduce disputes in regulated financial sectors.
Field | Type | Required | Description |
---|---|---|---|
customer | object | NA | NA |
customer.last_name | string | ✅ | The customer’s last name. |
customer.dob | string | ✅ | The customer's date of birth. |
Example Request
The example below shows the minimum fields required to process a one-off card payment for a business operating under MCC 6012:
{
"transaction": {
"order_id": "a91b4e32-6d1f-4975-9bdf-04c42c457951",
"amount": 150.00,
"currency": "gbp"
},
"customer": {
"last_name": "Smith",
"dob": "1988-07-15"
}
Note: If a
customer_id
is provided, you don’t need to include the additional MCC 6012 fields in the request — as long as this information is already stored against the customer record. If the data does not exist on the customer, the request will fail validation.
Updated 2 days ago