# SEPA Credit Transfers

This page contains all of the relevant information about SEPA Credit Transfers,
including key concepts and the necessary endpoints you need to integrate in your
solution.

## What is a SEPA Credit Transfer?

SEPA Credit Transfer (SCT) is a payment scheme that defines a set of standards
and rules for credit transfers in Euro between banks located in the SEPA zone.

A SEPA Credit Transfer is a simple money transfer that can be used for one-off
or recurring payments. They can be made individually or [in
bulk](/guides/digital-banking/sepa-transfers/batch-orders). In contrast
to a [SEPA Direct Debit
(SDD)](/guides/digital-banking/sepa-transfers/sepa-direct-debit-transfer),
an SCT is initiated by the sender, and the beneficiary generally receives the
payment within one business day after the transaction is executed. Additionally,
a SCT doesn't require a signed mandate.

Both the sender and the recipient (and their respective banks) are identified
through an International Bank Account Number (IBAN). In some cases, the Bank
Identifier Code (BIC) is also required.

A SEPA Credit Transfer works like a normal domestic transfer in that the
recipient receives the full transferred amount without hidden costs (i.e., the
cost of a SEPA cross-border transfer is the same as the cost of a local
transfer).

See the [overview](/guides/digital-banking/sepa-transfers/) page to
learn more about SEPA and the different types of SEPA payment schemes.

## How does a SEPA Credit Transfer work?

1. The customer logs in to your solution and chooses the option to send a SCT
to another account. In your frontend, they provide the necessary transaction
details, such as the recipient IBAN, name, amount, and transaction
description.
2. The customer authorizes the transaction using two-factor authentication (2FA)
via an SMS OTP or a device signing challenge.
3. Before executing a SCT, Solaris checks the account's `available_balance`
to ensure that there are sufficient funds and then creates a reservation on
the sender's account.
4. Solaris executes the transaction, which creates a **booking** on the
sender's account with the booking type `SEPA_CREDIT_TRANSFER`.
5. The beneficiary generally receives the money within one business day from the
transaction's execution.


SEPA Credit Transfers **must** be authorized using 2FA.

### Execution rules

- Solaris executes SEPA Credit Transfers on banking days every hour between
07:00 - 20:00.
- If an execution date falls on a bank holiday or a weekend, the beneficiary
receives the transfer on the next banking day.


### Types of SEPA Credit Transfers

#### Scheduled Transfers

Scheduled Transfers enable seamless integration of future-dated payment functionality into your application. It supports both recurring and one-off payments with full control over scheduling and execution. The feature is compatible with SEPA Credit Transfers (SCT) and SEPA Instant Credit Transfers (SCT Inst), offering flexibility to accommodate a wide range of payment scenarios.

[Click here to read more about scheduled transfers.](https://docs.solarisgroup.com/guides/digital-banking/sepa-transfers/scheduled-transfer/)

#### Batch Transfers

The Batch Transfer endpoint enables your customers to initiate and authorize bulk payments of up to 1,000 transfers in a single request. It supports both SEPA Credit Transfers (SCT) and SEPA Instant Credit Transfers (SCT Inst), offering flexibility to accommodate different payment requirements.

[Click here to read more about batch transfers.](https://docs.solarisgroup.com/guides/digital-banking/sepa-transfers/sepa-batch-transfer/)

## Prerequisites

You must implement the following features before you can use SEPA Credit
Transfers in your solution:

- [Device Binding](/guides/authentication/device-binding/)
- [Strong Customer Authentication](/guides/authentication/strong-customer-authentication/)
- [Verification of Payee](/guides/digital-banking/sepa-transfers/verification-of-payee/)


## API reference documentation

To implement SEPA Credit Transfers, integrate the following endpoints in your
solution:

- [POST Create a SEPA credit transfer](/api-reference/digital-banking/sepa-transfers/#tag/SEPA-Credit-Transfers/paths/~1v1~1persons~1%7Bperson_id%7D~1accounts~1%7Baccount_id%7D~1transactions~1sepa_credit_transfer/post)
- [POST Create a SEPA credit transfer (For billing accounts)](/api-reference/digital-banking/sepa-transfers/#tag/SEPA-Credit-Transfers/paths/~1v1~1accounts~1%7Baccount_id%7D~1transactions~1sepa_credit_transfer/post)
- [GET Retrieve a SEPA credit transfer](/api-reference/digital-banking/sepa-transfers/#tag/SEPA-Credit-Transfers/paths/~1v1~1persons~1%7Bperson_id%7D~1accounts~1%7Baccount_id%7D~1transactions~1sepa_credit_transfer~1%7Bid%7D/get)
- [GET Retrieve a SEPA credit transfer (For billing accounts)](/api-reference/digital-banking/sepa-transfers/#tag/SEPA-Credit-Transfers/paths/~1v1~1accounts~1%7Baccount_id%7D~1transactions~1sepa_credit_transfer~1%7Bid%7D/get)
- [GET Retrieve all SEPA credit transfers for a person's account](/api-reference/digital-banking/sepa-transfers/#tag/SEPA-Credit-Transfers/paths/~1v1~1persons~1%7Bperson_id%7D~1accounts~1%7Baccount_id%7D~1transactions~1sepa_credit_transfer/get)


### How to create a SEPA credit Transfer for retail customers

#### POST Create a SEPA credit Transfer

To create a SCT on a retail customer's account, call the following endpoint and provide the following properties in the request body:

- `reference`: Your unique reference for the transaction. Acts as an idempotency key.
- `recipient_name`: The name of the transaction's recipient.
- `recipient_iban`: The IBAN of the recipient.
- `recipient_bic`: The Bank Identifier Code of the recipient bank account. Optional, could be required for cross-border transactions.
- `amount`: The transaction amount in Euro, cents.
- `description`: A description for the transaction, which's visible to both the sender and the recipient.


**Request URL**


```shell
POST /v1/persons/{person_id}/accounts/{account_id}/transactions/sepa_credit_transfer
```

**Response example (before transaction authorization)**

The customer must first authorize the transaction using the 2FA in place (SMS OTP or device signing challenge). The following example shows the payload for a device signing challenge.


```json
202
{
  "id": "d6c778822b2d7bd3b778935bcfd0d1d3csc",
  "status": "CONFIRMATION_REQUIRED",
  "updated_at": "2022-04-21T13:59:52+00:00",
  "url": "https://example.com/authorize"
}
```

**Response example (after transaction authorization)**

After the customer successfully authorizes the transaction, the payload will include the transaction details, including important fields such as the SCT unique `id`, `status`, etc.


```json
200
{
  "id": "45bd0881-a79a-4054-9286-f11060d5511f",
  "status": "EXECUTED",
  "reference": "8880a72c-2675-482d-8d88-70a02c608592",
  "amount": {
    "value": 1000,
    "unit": "cents",
    "currency": "EUR"
  },
  "description": "string",
  "recipient_iban": "DE87110101001000057123",
  "recipient_name": "Max Mustermann",
  "recipient_bic": "SOBKDEB2XXX",
  "end_to_end_id": "END2ENDREJ",
  "batch_id": "null",
  "created_at": "2021-01-01T20:37:50Z"
}
```