Appearance
SEPA Instant Payments
The SEPA Instant Credit Transfer is a real-time electronic payment method allowing for rapid and secure fund transfers between bank accounts within the SEPA region. The rapid processing offers a settlement within a matter of seconds, providing users with immediate access to transferred funds.
Key benefits:
- Real-time transfers – Allows for almost instant availability of funds to the recipient.
- SEPA region coverage – Operates within the SEPA, ensuring cross-border transfers in multiple European countries.
- 24/7 availability – Processes transfers 7 days a week, including weekends and holidays.
- Secure and efficient – Enforces security measures to safeguard transfers while keeping an efficient process.
Configuration – SCT Inst are not enabled by default
You can request access to the SCT Inst feature by contacting Treezor.
At Treezor, instant payments can be used in two directions:
SCTR Inst
are Received into a Wallet and mapped to Payin objectsSCTE Inst
are Emitted from a Wallet, mapped to Payout objects
Received Instant Credit Transfers (SCTR Inst)
An SCTR Inst is a variant of an SCTR, that is received and makes funds available within 10 seconds of its emission. Therefore, an SCTR Inst can be received any day, any time.
When receiving an SCTR Inst, Treezor might either accept or refuse the transaction.
You may also receive Recalls for SCTR Inst. See the Emitting SCTR Inst Recalls article for details and how to answer.
Information – SCTR Inst amount is limited to:
- €10,000 in B2C context
- €50,000 in B2B context
Upon mutual agreement with Treezor, these limits may be lowered.
Accepting an SCTR Inst
When successfully receiving an SCTR Inst, Treezor:
- Sends a
payin.create
webhook (with apaymentMethodId
valued to27
and aVALIDATED
status). - Creates a Transaction (
transactionType
valued toPayin
).
You can retrieve an SCTR Inst using the /v1/payins/{payinId}
request.
Rejecting an SCTR Inst
Treezor may reject an SCTR Inst, if the Wallet is closed or if the amount exceeds the limits for instance.
In such cases, Treezor sends a sepaSctrInst.reject_sctr_inst
webhook. It contains a return_reason_code
indicating the reason for the rejection.
Processing flow
Here is a diagram for an SCTR Inst processing.
Structure of an SCTR Inst Payin
json
{
"payins": [
{
"payinId": "12345",
"payinTag": null,
"walletId": "34567",
"userId": "852741", // Valued to 3 initially in Production. DO NOT USE.
"payinStatus": "VALIDATED", // Means that the funds are available to the Wallet owner
"paymentMethodId": "27",
"messageToUser": "Transfer to my Wallet",
"subtotalItems": "100.00",
"subtotalServices": "0.00",
"subtotalTax": "0.00",
"amount": "100.00",
"currency": "EUR",
"createdDate": "2018-01-01 17:00:00",
"walletEventName": "Wallet Test",
"walletAlias": "test-wallet-abcd",
"userFirstname": "CMA",
"userLastname": "",
"codeStatus": "140005",
"informationStatus": "",
"refundAmount": null,
"ibanFullname": "ALEX OAK",
"DbtrIBAN": "FR763000401544999999999173",
"ibanBic": "BNPAFRPP",
"ibanTxEndToEndId": "XXXXXXXXX",
"ibanTxId": "180799999990292",
"forwardUrl": null,
"paymentAcceptedUrl": null,
"paymentRefusedUrl": null,
"paymentWaitingUrl": null,
"paymentExceptionUrl": null,
"paymentCanceledUrl": null,
"payinDate": null,
"mandateId": null,
"creditorName": "WILL OAK",
"creditorAddressLine": null,
"creditorCountry": null,
"creditorIban": "FR761679999999999999011987",
"creditorBIC": "TRZOFR21XXX",
"virtualIbanId": null,
"virtualIbanReference": null,
"ibanId": "995d69d1839999999999a6935979ea8220d8"
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Caution – UserId
initial value in Production
In Production environment, all SCTR Inst are initially received with userId
attribute valued to 3
. It is strictly forbidden to use this value, this is a technical user for Treezor use only.
Emitted Instant Credit Transfers (SCTE Inst) Beta
An SCTE Inst is a variant of an SCTE, that makes funds available for the beneficiary within about 10 seconds of its emission. Therefore, contrary to the classic SCTE, an SCTE Inst can be sent any day, any time.
Information – SCTE Inst is a Beta feature
This feature is not available by default and is only available for SCA-compliant implementations. Please contact your Treezor Account Manager if you're interested.
When an SCTE Inst is emitted, Treezor updates the Balance authorizations accordingly (balance.update
webhook) while making a series of checks to determine if the beneficiary account is eligible to instant payout. Then:
- The payout is created (
payout.create
) with a temporaryPENDING
status. - Once the payout confirmed, Treezor sends a series of webhooks (
payout.update
,balance.update
,transaction.create
) while the account is debited.
Accepted SCTE Inst webhooks diagram
Please bear in mind that Treezor cannot guarantee you will receive the webhooks in the relevant order. See the Race conditions article for more information.
You may request a Recall for the SCTE Inst. For more information, please refer to the Emitting SCTE Inst Recalls article.
Information – SCTE Inst can't be canceled
The /v1/payouts/{payoutId}
endpoint is not available for SCTE Inst.
Structure of an SCTE Inst Payout
json
{
"payouts":[
{
"payoutId":"2dbb81b2-6db9-4db3-b530-988b4189xxx7",
"payoutTag":"",
"payoutStatus":"VALIDATED",
"payoutTypeId":3,
"payoutType":"Instant Credit Transfer",
"walletId":1902786,
"payoutDate":"2024-03-05 17:01:43",
"walletEventName":"Main Account",
"walletAlias":"mainaccount-65e741xxx62e6",
"userFirstname":"Alex",
"userLastname":"Oak",
"userId":100026123,
"beneficiaryId":321123,
"uniqueMandateReference":"",
"bankaccountIBAN":"FR76174180000100001234567",
"label":"",
"amount":"10.00",
"currency":"EUR",
"partnerFee":"0",
"createdDate":"2024-03-05 17:01:43",
"modifiedDate":"",
"virtualIbanId":null,
"virtualIbanReference":null,
"codeStatus":"160001",
"informationStatus":"VALIDATED",
"supportingFileLink":"",
"endToEndId":"2dbb81b26db94db3b530988b418xxxd7",
"reasonCode":null,
"reasonDescription":null,
"metadata":null,
"totalRows":null
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Parameters
Below are the main attributes to create a SEPA Credit Transfer Payout.
Attribute | Type | Description |
---|---|---|
payoutTypeId | integer | Value must be 3 for Instant Payment. |
walletId | integer | The unique identifier of the debited Wallet. |
beneficiaryId | integer | The unique identifier of the Beneficiary of the Transfer. You must have created the Beneficiary object beforehand. |
amount | float | The amount of the credit transfer. |
currency | string | The currency of the credit transfer. Must be EUR . |
For the transfer to be successful, make sure the information of the User associated to the Beneficiary is accurate:
- The name must be at least 2-character long (
firstname
+lastname
orlegalName
) . - The address must be at least 4-character long (
addressLine{1|2|3}
+postcode
+city
)
Request
Use the following request:
bash
curl -X POST {baseUrl}/v1/payouts \
--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
{
"accessTag": "", // max. 250 characters
"payoutTag": "", // max. 250 characters
"payoutTypeId": 3,
"walletId":{walletId},
"beneficiaryId":{beneficiaryId},
"label": "", // max. 140 characters
"amount":10.00, // max. amount depends on your implementation and contract
"currency":"EUR",
"supportingFileLink": "",
"endToEndId": "testdu15fevrier12h15" // max. 35 characters
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Returns a VALIDATED
Payout object with the payoutTypeId
value to 3
.
json
{
"payouts":[
{
"payoutId":"2dbb81b2-6db9-4db3-b530-988b4189aad7",
"payoutTag":"",
"payoutStatus":"VALIDATED",
"payoutTypeId":3,
"payoutType":"Instant Credit Transfer",
"walletId":1902786,
"payoutDate":"2024-03-05 17:01:43",
"walletEventName":"Main Account",
"walletAlias":"mainaccount-65e741b1a62e6",
"userFirstname":"Alex",
"userLastname":"Oak",
"userId":100026123,
"beneficiaryId":321123,
"uniqueMandateReference":"",
"bankaccountIBAN":"FR76174180000100001234567",
"label":"",
"amount":"10.00",
"currency":"EUR",
"partnerFee":"0",
"createdDate":"2024-03-05 17:01:43",
"modifiedDate":"",
"virtualIbanId":null,
"virtualIbanReference":null,
"codeStatus":"160001",
"informationStatus":"VALIDATED",
"supportingFileLink":"",
"endToEndId":"2dbb81b26db94db3b530988b4189aad7",
"reasonCode":null,
"reasonDescription":null,
"metadata":null,
"totalRows":null
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Treezor also sends a payout.create
webhook.
You can retrieve an SCTE Inst using the /v1/payouts/{payoutId}
request.
Tip – See reasonCode
and reasonDescription
for rejection information
You can refer to the list of reason codes in the corresponding section. As opposed to regular SCT, the SCTE Inst can't have R-trans of type "Return".