Instant Credit Transfer
SEPA Instant Credit Transfer, also referred to as SCT Inst., is a credit transfer scheme created in November 2016 by the European Payments Council, enabling pan-European Euro credit transfers where the funds are made available on the beneficiary account, with the below three key characteristics (details available in the SCT Inst EPC rulebook):
- A target maximum execution time of 10 seconds
- A maximum amount of 100,000.00 euros per transaction
- Availability 24/7/365 (including during inter-bank holidays)
When setting up your instant transfer, you can choose to fallback to a standard transfer in case the instant transfer can't be completed.
Additionally, we can't complete instant transfers between two Swan accounts.
When a Swan account receives a SEPA Instant Credit Transfer request from an issuing bank, Swan performs a few automated controls and then responds positively or negatively to the request. When the issuing bank confirms the response from Swan, a transaction is created in the concerned Swan account with the
SepaInstantCreditTransferIn
type:- Either in the
Booked
status - Or in the
Rejected
status, with a detailed rejection reason code when the credit transfer cannot be credited (for example because of aSwanTimeout
or of aDebtorBankTimeout
)
An outgoing SEPA Credit Transfer has three
mode
options, two of which are instant.InstantWithoutFallback
: if the Instant SEPA Credit Transfer is rejected, the transaction is rejected and a new transaction must be initiated by the senderInstantWithFallback
: if the Instant SEPA Credit Transfer is rejected for most reasons, a regular SEPA credit transfer will be initiated automaticallyRegular
: regular SEPA credit transfer, which can take up to three business days
The issuing of an outgoing SEPA Instant Credit Transfer can be triggered using the
initiateCreditTransfers
API mutation with an input mode
of either InstantWithoutFallback
or InstantWithFallback
.A transaction with the
SepaInstantCreditTransferOut
type is created in the Swan account in the Upcoming
status when the requestedExecutionAt
input contains a future date, or in the Pending
status when the requestedExecutionAt
input is empty.A set of controls is then performed in real-time by Swan:
- Swan verifies the capacity of the beneficiary bank to receive SEPA Instant Credit Transfer transactions (also referred to as reachability). In case the beneficiary bank is not reachable on the SCT Inst. scheme, the
SepaInstantCreditTransferOut
transaction is moved to theRejected
status with theBeneficiaryBankNotReachable
rejection reason code - The
SepaInstantCreditTransferOut
transaction is checked against Swan's payment risk engine. A hit on the risk engine usually leads to a manual review by a Swan Compliance Officer for regular SEPA Credit Transfer transactions, but that is not possible for SEPA Instant Credit Transfer transactions as Swan would not be able to guarantee instantaneity. As a result, and in case of a hit on Swan's payment risk engine, theSepaInstantCreditTransferOut
transaction is moved to theRejected
status, with aRegulatoryReason
rejection reason code. The recommended action is for the Swan account holder to issue a regular SEPA Credit Transfer transaction
When and if all controls pass, Swan issues the
SepaInstantCreditTransferOut
transaction to the beneficiary bank, which can then decide to:- Accept the transaction: the
SepaInstantCreditTransferOut
transaction is then moved to theBooked
status - Reject the transaction: the
SepaInstantCreditTransferOut
transaction is then moved to theRejected
status, with a rejection reason code detailing the reason for rejection (for exampleAccountClosed
)
We use EBA-RT1 and TIPS Clearing & Settlement Mechanisms (CSM), which are two of the major CSMs for SEPA Instant Credit Transfers accounting for 90% of the total reachability.
We can send SEPA Instant Credit Transfers to all banks connected to either EBA-RT1 or TIPS, but we cannot send instant transfers if the bank is not connected to at least one of these CSMs.
Attempts to send SEPA Instant Credit Transfers to banks not connected to EBA-RT1 or TIPS are rejected with the reason
BeneficiaryBankNotReachable
. If you chose InstantWithFallback
when setting up your transfer, we'll send it as a regular transfer. Otherwise, you'll need to initiate a new transfer.For all instant SEPA credit transfers where
mode
is InstantWithFallback
, an instant transfer will fallback to a regular transfer if the instant transfer is rejected.With few exceptions, a regular transfer is created automatically when an instant transfer is rejected. If the recipient's account can't be found, the account is closed, or the account holder is deceased, the new regular transfer will not be created.
If a regular transfer is sent as a fallback, you'll see two transactions on your statement:
- 1.Rejected SCT instant
- 2.Fallback SCT
There is a filter
includeRejectedWithFallback
you can use when querying transactions. Choose false
by default so your customers won’t see the rejected instant transfer on their transaction history.When the issuer of a SEPA Instant Credit Transfer towards a Swan account asks their bank to recall the transaction, for example, because it was issued by mistake, Swan receives the request and asks the Swan account holder whether they accept the recall request or not. When the Swan account holder accepts the recall request and if the available balance of the concerned account is sufficient, funds are debited back from the Swan account, through a transaction with the
SepaInstantCreditTransferInRecall
type created in the Pending
status (and then moved to the Booked
status) under the same payment ID as the original SepaInstantCreditTransferIn
transaction. You can simulate the reception of SEPA Instant Credit Transfer recall in the Sandbox using this mutation.
When a user asks Swan to recall a SEPA Instant Credit Transfer that was previously issued for example by error, Swan transfers the request to the bank that received the initial credit transfer so that the bank can ask the beneficiary whether they accept the recall request or not. When the beneficiary accepts the recall request, funds are credited back to the Swan account, through a transaction with the
SepaInstantCreditTransferOutRecall
type created in the Booked
status under the same payment ID as the original SepaInstantCreditTransferOut
transaction.You can simulate the issuing of SEPA Instant Credit Transfer recall in the Sandbox using this mutation.
Perform this simulation in the normal API section of the API Explorer.
Request
Response
1
mutation MyMutation {
2
initiateCreditTransfers(
3
input: {
4
creditTransfers: {
5
amount: { value: "", currency: "" }
6
sepaBeneficiary: {
7
iban: "$TARGET_IBAN"
8
name: "$ACCOUNT_NAME"
9
isMyOwnIban: false
10
save: false
11
}
12
mode: InstantWithFallback
13
}
14
consentRedirectUrl: "$YOUR_APP_URL"
15
accountId: "$YOUR_ACCOUNT_ID"
16
}
17
) {
18
... on ForbiddenRejection {
19
__typename
20
message
21
}
22
... on AccountNotFoundRejection {
23
id
24
message
25
}
26
... on InitiateCreditTransfersSuccessPayload {
27
__typename
28
payment {
29
id
30
statusInfo {
31
status
32
... on PaymentConsentPending {
33
__typename
34
consent {
35
consentUrl
36
}
37
}
38
}
39
}
40
}
41
}
42
}
43
1
{
2
"data": {
3
"initiateCreditTransfers": {
4
"__typename": "InitiateCreditTransfersSuccessPayload",
5
"payment": {
6
"id": "TRANSACTION_ID",
7
"statusInfo": {
8
"status": "ConsentPending",
9
"__typename": "PaymentConsentPending",
10
"consent": {
11
"consentUrl": "https://identity.swan.io/consent?consentId=$CONSENT_ID&env=Sandbox"
12
}
13
}
14
}
15
}
16
}
17
}
Perform this simulation in the Testing API section of the API Explorer.
Request
Response
1
mutation MyMutation {
2
simulateIncomingSepaCreditTransferReception(
3
input: {
4
amount: { value: "100", currency: "EUR" }
5
creditorIban: "$CREDITOR_IBAN"
6
creditorName: "$CREDITOR_NAME"
7
debtorIban: "$DEBTOR_IBAN"
8
debtorName: "$DEBTOR_NAME"
9
isInstant: true
10
}
11
) {
12
... on SimulateIncomingSepaCreditTransferReceptionSuccessPayload {
13
__typename
14
transactionId
15
}
16
... on ForbiddenRejection {
17
__typename
18
message
19
}
20
}
21
}
22
1
{
2
"data": {
3
"simulateIncomingSepaCreditTransferReception": {
4
"__typename": "SimulateIncomingSepaCreditTransferReceptionSuccessPayload",
5
"transactionId": "$TRANSACTION_ID"
6
}
7
}
8
}
Last modified 2mo ago