ClearBank

SEPA Credit Transfer UK

SEPA Credit Transfer UK

Our SEPA Credit Transfer UK (SCT UK) service lets you exchange euro payments with any SEPA participant bank via the SEPA Credit Transfer (SCT) scheme. To get started with SCT UK, you'll need a euro account under a ClearBank UK BIC. This will be set up for you as part of your onboarding process.

If you're interested in using this new service, please contact your Client Director.

Availability and hours

SCT UK is available Monday to Friday from 07:00 to 14:30 UK time, and is subject to scheme holidays.

The scheme holidays applicable to SCT UK are listed below:

  • New Year's Day
  • Good Friday
  • Easter Monday
  • Labour Day
  • Christmas Day
  • Boxing Day / Christmas Holiday

Exact dates can be found on the ECB's website.

Bulk payments

SCT UK supports bulk payments, which can be useful for making many simultaneous payments. Each outbound payment request can include up to three debtor accounts, each of which can pay up to 2 different creditor accounts. It is therefore possible to request up to 6 payments at once.

Each payment request contains a nested structure of debtor accounts and their associated payments and creditor details. The outer array, PaymentInformation, contains entries for each debtor account. Within each debtor entry, the CreditTransferTransactionInformation array lists up to 2 individual payments to creditor accounts.

Diagram showing the PaymentInformation array, containing 3 debtors

When you send several payments at once in bulk, each payment is processed individually. This means if one payment fails, the remainder of the batch will be unaffected. You'll receive either a Cross-Border Outbound Payment Failed, or a Cross-Border Outbound Payment Completed and a Customer Accounts Transaction Completed webhook for each payment in the batch, so you can keep track of their status.

Validation

When requesting a SEPA CT payment from our POST /payments/cross-border/v2/payments endpoint, certain validation requirements must be fulfilled:

  • Text fields cannot have leading or trailing whitespace
  • The creditor agent bank must be on the SCT Reachable Payment Service Provider (PSP) list*

* - For a current list of reachable PSPs, refer to the spreadsheet available at the blue URL at the bottom of the European Banking Authority's STEP2 SCT Participants page.

Outbound payments

Send an SCT payment

post/payments/cross-border/v2/payments

You can use this endpoint to send euro payments via SEPA Credit Transfer. The fields in this endpoint are based on the ISO 20022 PAIN.001 message format.

Parameters

  • Authorization string, header, Required

    Your API token, retrieved from the ClearBank Portal.

  • DigitalSignature string, header, Required

    Signed hash of the body of the request. The hash is signed by your private key.

  • X-Request-Id string, header, Required

    A unique identifier for the request; valid for 24 hours, max length 83.

Request Payload (application/json)

  • messageIdentification string, Required

    Unique identifier for this payment message.

    Minimum length
    1
    Maximum length
    35
    Pattern
    ^[A-Za-z/\-?:()."+ 0-9]{1,35}$
  • paymentInformation array, Required

    May contain up to 3 entries, one for each debtor.

request

{
"messageIdentification": "MYUNIQUE-IDENTIFIER-123ABC-XXXX",
"paymentInformation": [
{
"paymentInformationIdentification": "rJawA91MHPLoMU89AG0HpobF1Vo7zOzcQVG",
"requestedExecutionDate": "2025-11-13",
"debtor": {
"name": "Pinto Corporation",
"postalAddress": {
"streetName": "Long Road",
"buildingNumber": "72",
"postCode": "CA3 9TD",
"townName": "Carlisle",
"countrySubDivision": "Cumberland",
"country": "GB"
},
"organisationIdentification": {
"anyBIC": "AB12GB1A123"
}
},
"debtorAccount": {
"name": "Pintos FX account",
"iban": "GB13CBAB1122331234567"
},
"creditTransferTransactionInformation": [
{
"paymentIdentification": {
"instructionIdentification": "i5gdyVa8qnoOBGveXEuNHo9lvAqdPyAd4tK",
"endToEndIdentification": "GcP5LyftYyLPNa4OQ5bZThRTlSZPCR7GbR2",
"uetr": "2199f959-77ef-5fa0-9580-33a8fec38f0d"
},
"paymentTypeInformation": {
"serviceLevelCode": "SEPA"
},
"instructedAmount": {
"amount": 9503.52,
"currency": "EUR"
},
"creditorAgent": {
"bicfi": "AB12GBCD34AAA"
},
"creditor": {
"name": "Pinto Corporation",
"postalAddress": {
"streetName": "Long Road",
"buildingNumber": "72",
"postCode": "CA3 9TD",
"townName": "Carlisle",
"countrySubDivision": "Cumberland",
"country": "GB"
},
"organisationIdentification": {
"anyBIC": "AB12GB1A123"
}
},
"creditorAccount": {
"name": "string",
"iban": "GB13CBAB1122331234567",
"accountIdentification": "CBGB11223312345678",
"accountIdentificationCode": "BBAN"
},
"remittanceInformation": {
"unstructured": "Invoice no': ABC-71124-12"
}
}
]
}
]
}
Code copied

Response (application/json)

  • 202 Accepted
  • 409 Conflict
  • 422 Unprocessable Content

Accepted

{
"messageIdentification": "MYUNIQUE-IDENTIFIER-123ABC-XXXX",
"paymentIdentification": [
{
"instructionIdentification": "i5gdyVa8qnoOBGveXEuNHo9lvAqdPyAd4tK",
"endToEndIdentification": "GcP5LyftYyLPNa4OQ5bZThRTlSZPCR7GbR2",
"uetr": "2199f959-77ef-5fa0-9580-33a8fec38f0d",
"paymentId": "0c8b6bdd-d39f-5003-9310-286dbe234945"
}
]
}
Code copied

Conflict

{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Code copied

Unprocessable Content

{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Code copied

Associated Webhooks

Example outbound payment request

You can use the below example request payload to test the POST /payments/cross-border/v2/payments endpoint.
Take care to update the RequestedExecutionDate field to today's date, and to use a different UETR if using this example more than once.

{
"messageIdentification": "MSGID-25OCT23-TEST03",
"paymentInformation": [
{
"paymentInformationIdentification": "PYMTID-25OCT23-DEBT-03",
"requestedExecutionDate": "2025-10-23",
"debtor": {
"name": "John Smith",
"postalAddress": {
"streetName": "High Street",
"buildingNumber": "100",
"postCode": "DN40 2AB",
"townName": "Immingham",
"countrySubdivision": "Lincolnshire",
"country": "GB"
},
"organisationIdentification": {
"anyBic": "PAEEGB22"
}
},
"debtorAccount": {
"iban": "GB96CLRB04056700273872"
},
"creditTransferTransactionInformation": [
{
"paymentIdentification": {
"instructionIdentification": "INSTID-25OCT23-03A",
"endToEndIdentification": "E2E-25OCT23-03A",
"uetr": "107367a1-99c3-411e-abd1-fcbbb74a8b01"
},
"paymentTypeInformation": {
"serviceLevelCode": "SEPA"
},
"instructedAmount": {
"amount": 1.03,
"currency": "EUR"
},
"creditorAgent": {
"bicfi": "BCOEESM0"
},
"creditor": {
"name": "Maria Garcia",
"postalAddress": {
"streetName": "Calle de Alcala",
"buildingNumber": "45",
"postCode": "28014",
"townName": "Madrid",
"countrySubdivision": "Community of Madrid",
"country": "ES"
},
"privateIdentification": {
"birthDate": "1987-11-10",
"cityOfBirth": "Madrid",
"countryOfBirth": "ES"
}
},
"creditorAccount": {
"iban": "ES9121000418450200051332"
},
"remittanceInformation": {
"unstructured": [
"RemittanceInformation Unstructured 2025OCT23C"
]
}
}
]
}
]
}

Inbound payments

When you receive an SCT payment, you'll be notified via webhook. To receive webhooks, you'll need to subscribe to them first using the ClearBank Portal.

Our SCT UK service has two dedicated inbound payment webhooks:

  • Payments.CrossBorder.InboundPaymentCompleted - Cross-border Inbound Payment Completed webhook - This webhook contains detailed ISO 20022 compliant payment information of any inbound SCT payments.
  • CustomerAccounts.TransactionCompleted - Customer Account Transaction Completed webhook - This webhook contains the minimum information necessary to reconcile a payment.

Note: if you are subscribed to our inbound Multi-Currency Payments service webhooks, Payments.Mccy.TransactionCreated and Payments.Mccy.TransactionSettled, these will also notify you of any inbound SCT payments. All of these webhooks' TransactionId field will have the same UUID whenever they refer to the same payment, so you can use this field in your idempotency logic to prevent double counting of inbound SCT payments.

Simulation endpoints

Simulate an inbound payment

post/payments/cross-border/v2/inbound/payments

This endpoint is available in the simulation environment only. You can call this endpoint to simulate an inbound SCT payment. After submitting a valid request, you'll receive a Payments.Mccy.InboundPaymentCompleted webhook and a CustomerAccounts.TransactionCompleted webhook. If you are also subscribed to our Multi-currency Payments webhooks, Payments.Mccy.TransactionCreated and Payments.Mccy.TransactionSettled, you will also receive these.

Parameters

  • Authorization string, header, Required

    Your API token, retrieved from the ClearBank Portal.

  • DigitalSignature string, header, Required

    Signed hash of the body of the request. The hash is signed by your private key.

  • X-Request-Id string, header, Required

    A unique identifier for the request; valid for 24 hours, max length 83.

Request Payload (application/json)

  • interbankSettlementAmount object, Required

  • paymentIdentification object, Required

  • creditorAccount object, Required

  • remittanceInformation object, Required

request

{
"interbankSettlementAmount": {
"amount": 1234.56,
"currency": "EUR"
},
"paymentIdentification": {
"endToEndIdentification": "E2E1234567890"
},
"creditorAccount": {
"iban": "GB13CBAB2233441234567"
},
"remittanceInformation": {
"unstructured": [
"myRemittanceInformation-111-ABC"
],
"structured": [
{
"reference": "MY-structured-REM-INFO"
}
]
}
}
Code copied

Response (application/json)

  • 202 Accepted
  • 409 Conflict
  • 422 Unprocessable Content
  • 500 Internal Server Error
  • 503 Service Unavailable

Conflict

{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Code copied

Unprocessable Content

{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Code copied

Associated Webhooks