SEPA Credit Transfer is a payment instrument for executing credit transfer transactions in euros within the Single Euro Payments Area (SEPA) zone.
It enables merchants to send payments to a beneficiary’s bank account across the EU.
SEPA Credit Transfer operates as a single scheme covering all SEPA-compliant countries where the euro is used as the local currency.
| Payment Method | Category | Countries | Currencies | Features | Integrations |
|---|---|---|---|---|---|
| SEPA CT | Bank Transfer | SEPA Zone | EUR | Initiation, Status Tracking, Notifications (Webhooks) | API |
Supported markets
SEPA Credit Transfer is supported across all SEPA-compliant countries:
| Region | Countries |
|---|---|
| SEPA Zone | Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden |
| Additional SEPA | Iceland, Liechtenstein, Norway, Albania, Andorra, Moldova, Monaco, Montenegro, North Macedonia, San Marino, Serbia, Switzerland, United Kingdom, Vatican City |
How to Use SEPA CT
SEPA Credit Transfer allows merchants to initiate payments to SEPA bank accounts by providing beneficiary details and transfer information through an API.
1. Provide beneficiary and transfer details
The merchant initiates the credit transfer by supplying the following information:
- Beneficiary IBAN – the recipient’s International Bank Account Number
- Beneficiary BIC – the recipient’s Bank Identifier Code
- Bank destination country – must be a SEPA country
- Amount – transfer value (maximum €1,000,000)
- Currency – only EUR is supported
- Business details – a free-text field for the merchant to include business or remittance information
- Payment initiated-date – the date the payment is submitted (processing follows SIBS Pagamentos rules)
2. Request validation
Before accepting the payment request, the SIBS Gateway validates:
- The provided IBAN and BIC formats to ensure they conform to required standards
- That all mandatory SEPA fields are provided and correctly formatted, including:
- EndToEndId
- Debtor
- Creditor
- Amount
- Currency (must be EUR)
- Remittance Information
Invalid or incomplete requests are rejected at this stage.
3. Payment processing and notification
Once validated:
- The payment request is submitted for processing;
- The merchant receives status notifications via webhooks;
- The merchant can also check the status of the transaction via API as the transfer progresses through each stage.
SEPA CT in SIBS Backoffice
When a store has a SEPA CT agreement associated, it appears on SIBS Backoffice under Configurations > Agreements.
The following transaction types are visible under Business > Transactions:
| Transaction Type | Status | Trigger |
|---|---|---|
| Transfer request | Initiated | When the merchant submits the request |
| Transfer confirmation | Accepted | Based on the CSM/bank response |
| Transfer rejection | Rejected | Based on the CSM/bank response |
- The payment method associated with these transactions is identified as SEPA Credit Transfer (“SEPA CT”).
- The financial product corresponds to the one created during onboarding.
- All standard transaction fields are populated, and transactions are included in the existing exportable file from the Transactions menu.
- Accepted transactions are presented with negative representation in the Dashboard, reflecting the outgoing nature of credit transfers.
Integration
SEPA Credit Transfer (SEPA CT) allows merchants to execute credit transfers in euros across the SEPA zone using the SIBS Gateway.
This operation requires a previously created transaction where SEPA CT (“SPCT”) was selected as the payment method.
The payment method must be designated as “SPCT” when initiating a transaction.
How it works
To integrate SEPA Credit Transfer, follow these steps:
- Initiate the credit transfer
- Track the payment status
- Optionally receive notifications via webhooks
Step 1: Initiate SEPA Credit Transfer
To initiate a SEPA Credit Transfer (SEPA CT) through the SIBS Gateway, the merchant must send the following mandatory payment information:
- Beneficiary IBAN
- Beneficiary BIC
- EndToEndId
- Transaction amount
- Currency (EUR)
The system validates the format of IBAN and BIC, the EndToEndId, and that the amount and currency are correctly set. Once these checks pass, a technical response is returned confirming the request has been successfully received.
| Environment | URL | Operation Method & Endpoint | Operation Description |
|---|---|---|---|
| PROD | api.sibsgateway.com | POST {version-id}/payments/{id}/sepa/credit-transfer | Initiates a SEPA CT payment resource specified in the request. |
| TEST | stargate.qly.site[1|2].sibs.pt | POST {version-id}/payments/{id}/sepa/credit-transfer | Initiates a SEPA CT payment resource in the test environment. |
Header Parameters
Before sending the request, ensure the following headers are included.
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| Content-Type | String | Mandatory | Defines the content type of the request | application/json |
| Authorization | String | Mandatory | Bearer token for authentication | Bearer xxxxxxxx |
| x-ibm-client-id | String | Mandatory | Token identifying the client organization, provided during onboarding | 123456789 |
General Request Parameters
The request is composed of the following main objects. Each object is detailed in the subsequent sections.
| Field | Type | Condition | Description | Example |
|---|---|---|---|---|
| merchant | Object | Mandatory | Object that defines the merchant information | – |
| beneficiaryAccount | Object | Mandatory | Object containing the beneficiary account information | – |
| amount | Object | Mandatory | Object with the transaction amount and currency | – |
| transferMethod | string (Exact4Text) | Mandatory | Transfer method for the payment | ‘SPCT’ |
| businessDetails | string (≤512) | Optional | Free-text field for merchant business information | Payment for Order #123 |
| paymentExecutionDate | ISODate | Mandatory | Execution date for the transfer | 2026-04-05 |
| deviceInfo | Object | Mandatory | Object that defines the customer device information | – |
beneficiaryAccount (object) – Mandatory
| Field | Type | Condition | Description | Example |
|---|---|---|---|---|
| beneficiaryAccount.iban | String | Mandatory | Beneficiary IBAN | PT50000201231234567890154 |
| beneficiaryAccount.bic | string (≤11) | Optional | Beneficiary Bank Identifier Code | BCOMPTPL |
| beneficiaryAccount.bankCountry | string (3-letter ISO) | Optional | Country of the beneficiary bank | PRT |
| beneficiaryAccount.name | string (≤128) | Mandatory | Beneficiary name | João Silva |
merchant (object) – Mandatory
| Field | Type | Condition | Description | Example |
|---|---|---|---|---|
| merchant.terminalId | numeric (≤10) | Mandatory | Merchant terminal identifier | 47215 |
| merchant.channel | String | Mandatory | Channel used for the transaction | Web |
| merchant.merchantTransactionId | string (≤1000) | Mandatory | Unique merchant transaction ID | ORDER_123 |
| merchant.transactionDescription | string (≤4000) | Optional | Description of transaction | Payment for order #001 |
amount (object) – Mandatory
| Field | Type | Condition | Description | Example |
|---|---|---|---|---|
| amount.value | number (double) | Mandatory | Transaction amount | 1000.00 |
| amount.currency | String | Mandatory | Currency in ISO 4217 format (must be EUR) | EUR |
deviceInfo (object) – Mandatory
The deviceInfo object provides additional context about the customer environment and is recommended for fraud prevention and risk analysis.
| Field | Type | Condition | Description | Example |
|---|---|---|---|---|
| browserAcceptHeader | string | Optional | Browser Accept Header | text/html |
| browserJavaEnabled | string | Optional | Browser Java Enabled | True |
| browserJavascriptEnabled | string | Optional | Browser Javascript Enabled | True |
| browserLanguage | string | Optional | Browser language | en-US |
| browserColorDepth | string | Optional | Browser Color Depth | 24 |
| browserScreenHeight | string | Optional | Browser Screen Height | 1080 |
| browserScreenWidth | string | Optional | Browser Screen Width | 1920 |
| browserTZ | string | Optional | Browser Time Zone | GMT+1 |
| browserUserAgent | string | Optional | Browser User Agent | Mozilla/5.0… |
| systemFamily | string | Optional | System Family | Windows |
| systemVersion | string | Optional | System Version | 10 |
| systemArchitecture | string | Optional | System Architecture | x64 |
| deviceManufacturer | string | Optional | Device Manufacturer | Dell |
| deviceModel | string | Optional | Device Model | XPS 15 |
| deviceID | string | Optional | Device Unique ID | 1234567890 |
| deviceFingerprint | string | Optional | Device Fingerprint Identification | ABCDEF123456 |
| applicationName | string | Optional | Application Name (Form:applicationName) | Form:Edge |
| applicationVersion | string | Optional | Application Version (formVersion:applicationVersion) | 2.0:130 |
| geoLocalization | string | Optional | Geolocation | 38.7169,-9.139 |
| ipAddress | string | Optional | IP Address | 192.168.1.1 |
Here’s an example of how to Initiate the SEPA Credit Transfer:
Request Example
</>JSON {
"deviceInfo": {
"deviceID": "DEVICE12345",
"browserUserAgent": "Mozilla/5.0",
"browserAcceptHeader": "text/html,application/xhtml+xml",
"browserJavaEnabled": "false",
"browserJavascriptEnabled": "true"
},
"merchant": {
"terminalId": "47215",
"merchantTransactionId": "ORDER_123",
"transactionDescription": "Payment for order #001"
},
"beneficiaryAccount": {
"iban": "PT50000201231234567890154",
"bic": "BICPTPLX",
"bankCountry": "PT",
"name": "John Doe"
},
"amount": {
"value": 50.00,
"currency": "EUR"
},
"transferMethod": "SPCT",
"businessDetails": "Order #123 - Electronics",
"paymentExecutionDate": "2026-04-05"
}
Response Parameters
Upon successful request submission, the system returns the following response:
| Field | Type | Condition | Description | Example |
|---|---|---|---|---|
| returnStatus | Object | Mandatory | Defines the status of the processed transaction | – |
| returnStatus.statusCode | String | Mandatory | Identifier code of the processed transaction status (“000” for success) | “000” |
| returnStatus.statusMsg | String | Mandatory | Message of the processed transaction status | “Success” |
| returnStatus.statusDescription | String | Mandatory | Description of the processed transaction status | “Transaction accepted” |
| transactionId | String | Conditional | Transaction ID returned when statusCode = “000” | 1234567890 |
Response Example
{
"returnStatus": {
"statusCode": "000",
"statusMsg": "Success",
"statusDescription": "Transaction accepted"
},
"transactionId": "TRX123456789"
}
Step 2 – Get Payment Status
This step is essential to monitor the progress of the transaction, as SEPA Credit Transfers are processed asynchronously.
Response Parameters
| Field | Type | Condition | Description | Example |
|---|---|---|---|---|
| status | string | Mandatory | Current status of the payment | PDNG |
Payment Status Values
| Status | Description |
|---|---|
| INIT | Initiated – request submitted |
| PDNG | Pending – sent to clearing system (CSM) |
| ACPT | Accepted – confirmed by the bank |
| RJCT | Rejected – refused by the bank |
Step 3: Receive Notifications
SEPA CT supports notification mechanisms to keep merchants informed about payment outcomes in real time in the form of webhooks.
You can find more information about webhooks here.
Webhooks
The Payment Gateway notifies the merchant via webhook in the following scenarios:
- Credit transfer reception – confirmation that the transfer has been received by the beneficiary’s bank;
- SEPA errors and validation – notification of any errors or validation failures during processing.
- Receipt of compensation result – status change to accepted liquidation.
