Making payments with SEPA Credit Transfer
This tutorial describes how you can make SEPA Credit Transfer (SCT) payments with the Payments Hub API and accompanies the header information found in the Customer Credit Transfer message tutorial
For this tutorial, consider a scenario where a customer is based in Seville and wants to transfer funds to a relative in Helsinki. To do so, they can initiate a SCT payment, which transfers EUR between European countries. If there are enough funds in the customer's account, the Payments Hub API can be used to transfer the money to the other account. This tutorial describes how you can first make the SCT payment using the ISO pacs.008 message.
Request body
The request must include a JSON payload object in the request body. The JSON payload is a pacs.008 ISO message with the fitoFICstmrCdtTrf root element, and it contains the request details for submitting a payment.
The following table only provides information about some especially important fields. For details on all the required and optional message fields, see Message field definition for pacs.008.
Message field | Description | Data type | Required/Optional |
|---|---|---|---|
grpHdr.msgId | Message ID, which must uniquely identify each request you send. The instructing party must make sure that the Message Identification is unique as this reference is used internally for the idempotency of the API. | String | Required |
grpHdr.creDtTm | Date and time of the payment request | String | Required |
grpHdr.nbOfTxs | Number of transactions within the message. Value: 1 | Number | Required |
grpHdr.sttlmInf.sttlmMtd | Settlement method. Value: CLRG | String | Required |
cdtTrfTxInf.pmtId.endToEndId | End-to-end ID, which can be used to track the transaction between payment systems. If no value is provided, NOT PROVIDED is used. | String | Required |
cdtTrfTxInf.pmtId.txId | Transaction ID. If the message includes multiple transactions, this field uniquely identifies each transaction. | String | Required |
cdtTrfTxInf.pmtTpInf.svcLvl.cd | Payment scheme type. Value: SEPA | String | Required |
cdtTrfTxInf.intrBkSttlmAmt | Data structure containing the payment currency and the amount to be transferred. The currency must be EUR and the amount must be a positive value. | Object | Required |
cdtTrfTxInf.intrBkSttlmDt | Date when the interbank settlement amount moves from the instructing agent to the instructed agent Format: aaaa-mm-dd | String | Required |
cdtTrfTxInf.chrgBr | Charge bearer type. Value: SLEV | String | Required |
cdtTrfTxInf ► .dbtr ► .dbtrAcct ► .dbtrAgt | Data structures containing the details for the debtor, the debtor’s account, and the debtor agent | Object | Required |
cdtTrfTxInf ► .cdtr ► .cdtrAcct ► .cdtrAgt | Data structures containing the details for the creditor agent, the creditor, and the creditor’s account | Object | Required |
Example request body:
{
"fitoFICstmrCdtTrf": {
"grpHdr": {
"msgId": "MsgId-2581783930",
"creDtTm": "2021-02-03T04:05:06.000Z",
"nbOfTxs": "1",
"sttlmInf": {
"sttlmMtd": "CLRG"
}
},
"cdtTrfTxInf": [
{
"pmtId": {
"endToEndId": "e2eId-2581783930",
"txId": "txId-2581783930"
},
"pmtTpInf": {
"svcLvl": [
{
"cd": "SEPA"
}
]
},
"intrBkSttlmAmt": {
"value": 1,
"ccy": "EUR"
},
"chrgBr": "SLEV",
"ultmtDbtr": {
"nm": "Ultimate Debtor",
"pstlAdr": {
"twnNm": "Seville",
"ctry": "ES",
"adrLine": [
"Somewhere in Seville"
]
},
"id": {
"prvtId": {
"othr": [
{
"id": "ultmt-dtr-id"
}
]
}
}
},
"dbtr": {
"nm": "pacs008-debtorName",
"pstlAdr": {
"ctry": "ES",
"adrLine": [
"Somewher in Seville"
]
}
},
"dbtrAcct": {
"id": {
"iban": "ES9300492060833000002503"
}
},
"dbtrAgt": {
"finInstnId": {
"bicfi": "DBTRAGTXBIC"
}
},
"cdtrAgt": {
"finInstnId": {
"bicfi": "CDTRAGTXBIC"
}
},
"cdtr": {
"nm": "pacs008-creditorrName"
},
"cdtrAcct": {
"id": {
"iban": "FI9580002811571214"
}
},
"ultmtCdtr": {
"nm": "Ultimate Creditor",
"pstlAdr": {
"twnNm": "Helsinki",
"ctry": "FI",
"adrLine": [
"Somewhere in Helsinki"
]
},
"id": {
"prvtId": {
"othr": [
{
"id": "ultmt-cdtr-id"
}
]
}
}
},
"rmtInf": {
"ustrd": [
"ACCP:IT00"
]
}
}
]
}
}