Appearance
Are you an LLM? You can read better optimized documentation at /guide/transfers/open-banking.md for this page in Markdown format
Open Banking Payment Initiation
Open Banking Payment Initiation allows merchants to collect payments directly from their customers' bank accounts, bypassing traditional card networks. This bank-to-bank transfer method leverages the Payment Initiation Service Provider (PISP) framework.
Configuration – Open Banking Payment Initiation is not enabled by default
This feature is only available on Connect. Please contact Treezor if you're interested in this feature.
How it works
The payment initiation flow involves redirecting the customer to a secure checkout page where they select their bank, authenticate, and authorize the payment.
| Step | Description |
|---|---|
| 1 | The customer initiates a purchase on your platform. |
| 2 | You call the Treezor API to create a payment initiation with the amount and redirect URL. |
| 3 | Treezor returns a flowUrl pointing to the hosted checkout page. |
| 4 | You receive a paymentInitiation.create webhook with PENDING status. |
| 5 | You redirect the customer to the flowUrl. |
| 6 | The customer selects their bank and authenticates using Strong Customer Authentication. |
| 7–8 | Treezor requests payment execution from the ASPSP, which executes the transfer. |
| 9 | You receive a paymentInitiation.update webhook with the final status (COMPLETED or FAILED). |
Two integration options
Treezor provides two endpoints depending on your use case:
| Endpoint | Use case |
|---|---|
/v1/paymentInitiations | Standard real-time payment flow. The customer is present and ready to pay. |
/v1/paymentLinkInitiations | Bill payments with an expiry date. Generate a payment link to embed in an invoice or email, allowing the customer to pay later. |
Both endpoints follow the same logic, except /v1/paymentLinkInitiations includes an additional expiryDate field.
Creating a Payment Initiation
Parameters
| Attribute | Type | Description |
|---|---|---|
userId | integer | The unique identifier of the User (merchant) receiving the funds. |
walletId | integer | The unique identifier of the Wallet receiving the funds. |
amount | string | The amount to be collected. |
currency | string | The 3-character ISO 4217 currency code. Must match the Wallet currency. |
label | string | A description attached to the transfer for tracking purposes. Max 140 characters. |
redirectUrl | string | The URL to redirect the customer after completion or failure of the payment. |
reference | string | A unique reference you may provide to track and correlate the payment initiation. |
language | string | The two-letter ISO 639-1 language code for the checkout UI. Defaults to fr. |
expiryDate | string | Payment Link only. The date until which the link remains valid. Format: YYYY-MM-DD. |
API – See the Payment Initiations API Reference for the complete attribute list
Request example
Endpoint: /v1/paymentInitiations
bash
curl -X POST '{baseUrl}/v1/paymentInitiations' \
--header 'Authorization: Bearer {accessToken}' \
--header 'Content-Type: application/json' \
-d '{payload}'1
2
3
4
2
3
4
Here is an example of {payload}:
json
{
"userId": 1656177,
"walletId": 878744,
"amount": "120.67",
"currency": "EUR",
"label": "Invoice ref 123456",
"reference": "cd8b5b5c-084e-4e4b-97e3-05fb1616c88f",
"redirectUrl": "https://your-company-name.co/payment/callback",
"language": "fr"
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Returns the Payment Initiation object:
json
{
"paymentInitiations": [
{
"id": "8b9dacf4-6acf-407b-953c-fcbb21355c1c",
"userId": 1656177,
"walletId": 878744,
"amount": "120.67",
"currency": "EUR",
"label": "Invoice ref 123456",
"reference": "cd8b5b5c-084e-4e4b-97e3-05fb1616c88f",
"flowUrl": "https://treezor.com/8b9dacf4-6acf-407b-953c-fcbb21355c1c",
"status": "PENDING",
"createdDate": "2026-07-14T08:30:00Z",
"modifiedDate": "2026-07-14T08:30:00Z"
}
]
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Redirect the customer to the flowUrl to complete the payment authorization.
Creating a Payment Link
For bill payments or deferred payment scenarios, use the Payment Link endpoint with an expiry date.
Endpoint: /v1/paymentLinkInitiations
json
{
"userId": 1656177,
"walletId": 878744,
"amount": "120.67",
"currency": "EUR",
"label": "Invoice ref 123456",
"reference": "cd8b5b5c-084e-4e4b-97e3-05fb1616c88f",
"redirectUrl": "https://your-company-name.co/payment/callback",
"expiryDate": "2026-07-14",
"language": "fr"
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
The response includes the same fields as a standard payment initiation, plus the expiryDate. You can embed the flowUrl in an invoice, email, or SMS for the customer to pay at their convenience before the expiry date.
Payment Initiation status
The status field indicates the current state of the payment initiation.
| Status | Description |
|---|---|
PENDING | The payment initiation has been created, waiting for the customer to complete the authorization. |
COMPLETED | The customer has authorized the payment and the funds are being transferred. |
FAILED | The payment failed. Check the reasonCode for details. |
When the status changes, Treezor sends a paymentInitiation.update webhook.
Retrieving a Payment Initiation
You can retrieve the current status and details of a payment initiation at any time.
Endpoint: /v1/paymentInitiations/{paymentInitiationId}
This endpoint is used for both standard payment initiations and payment link initiations. When you create a payment link initiation, the response contains a paymentInitiations.id that you use with this GET endpoint.
Webhooks
Treezor sends webhooks to notify you of status changes:
| Event | Description |
|---|---|
paymentInitiation.create | A payment initiation has been created (PENDING status). |
paymentInitiation.update | The payment initiation status has changed (COMPLETED or FAILED). |
Endpoints
| Endpoint | Scope |
|---|---|
/v1/paymentInitiations Create a Payment Initiation | read_write |
/v1/paymentInitiations/{paymentInitiationId} Retrieve a Payment Initiation | read_only |
/v1/paymentLinkInitiations Create a Payment Link Initiation | read_write |