Introduction
| Status | UAT |
| Certificate | Production |
| URL | https://mci-xtransfer.saltedge.com |
| Launch date | TBD |
PSD2 Regulation
Article 31 (PSD2 RTS) - Outlines the access interface options, according to which the ASPSPs can provide access:
- via a dedicated interface (generally understood to refer to an API-based solution);
- by allowing the use by TPPs, the interfaces used for authentication and communication with the ASPSP's payment service users.
Article 33 (PSD2 RTS) - Outlines the requirements of contingency interface.
MCI Description
Modified Customer Interface (MCI) enables TPPs to access the designated payment accounts of PSUs for inscope banking entities under PSD2.
TPP is able to retrieve account information and transaction data by using the XTransfer authentication mechanism and forwarding the issued access token to the MCI interface.
Using the MCI
Authentication
The authentication URL is provided as static. The TPP shall generate the full authentication URL themselves by appending the required query parameters to the base URL below.
Base URL:
https://siths80.xtrfr.cn/login/mci-fallback
Authentication URL Example
https://siths80.xtrfr.cn/login/mci-fallback?scope=ais&channel=MCI&state={value}&tpp_name={name}&tpp_redirect_uri={link}&client_id={value}
Query Parameters
- The customer is redirected to the generated authentication URL, which initiates the consent and authentication process on the XTransfer side.
- The customer authenticates using their XTransfer credentials and confirms the consent.
- After successful authentication, XTransfer redirects the customer back to the TPP's tpp_redirect_uri with the access token appended as a query parameter.
TPP Callback
The TPP must define a callback endpoint to handle the following parameters, which are appended to the %code tpp_redirect_uri upon redirection:
Redirect
GET
https://tppCallbackUrl
Example of parameters
![]()
{"state":"4f168760-20e6-4d6b-9ab5-ee9e34054fd5","accessToken":"ada9123x-uuid-token"}
Parameters
Accounts
Retrieves the list of accounts and balances belonging to a PSU.
Request
GET
https://mci-xtransfer.saltedge.com/api/priora/v2/accounts
CURL
![]()
curl -i \ -H "TPP-Signature-Certificate: base64encodedCertificate" \ -H "TPP-Signature: eyJhbGciOiJSUzI1NiJ9..." \ -H "Client-Id: your-client-id" \ -H "Access-Token: ada9123x-uuid-token" \ -H "Channel: MCI" \ -H "Content-Type: application/json" \ -H "MCI-TYPE: ais" \ -X GET "https://mci-xtransfer.saltedge.com/api/priora/v2/accounts"
Example response body
![]()
{"data":{"id":"acc-123456","name":"XTransfer Business Account","currency":"EUR","cash_account_type":"CACC","status":"enabled","balances":{"type":"closingBooked","amount":"1500.00","currency":"EUR"}}}
Headers
| Header | Type | Description |
|---|---|---|
TPP-Signature-Certificate
|
string, required | The certificate used for signing the request, in base64 encoding that should comply with RFC 4648 (No line feeds). Can raise: TppCertificateInvalid |
TPP-Signature
|
string, required |
JSON Web Signature containing payload, signed using RS256 and
application.private_key.
Can raise:
MciSignatureInvalid
|
Client-Id
|
string, required | TPP unique identifier. |
Access-Token
|
string, required | Access token received in the TPP callback (%code accessToken parameter). |
Channel
|
string, required | Indicates the channel of the request. Allowed value: MCI |
Content-Type
|
string, required | The media type of the body of the request. Accepted value: application/json |
MCI-TYPE
|
string, required | MCI target type. Accepted value: ais |
TPP-Signature Payload
Response
Upon successful request, 200 status code will be returned. See 'Related Errors' table for other possibilities.
Related Errors
| Class | Code | Description |
|---|---|---|
| TppCertificateInvalid | 400 |
Invalid certificate or given certificate doesn't have permissions.
Details are stored in
error_message.
|
| MciSignatureInvalid | 400 | Given signature is invalid or malformed. |
Transactions
Retrieves the list of transactions belonging to a PSU account.
Request
GET
https://mci-xtransfer.saltedge.com/api/priora/v2/accounts/:account_id/transactions
CURL
![]()
curl -i \ -H "TPP-Signature-Certificate: base64encodedCertificate" \ -H "TPP-Signature: eyJhbGciOiJSUzI1NiJ9..." \ -H "Client-Id: your-client-id" \ -H "Access-Token: ada9123x-uuid-token" \ -H "Channel: MCI" \ -H "Content-Type: application/json" \ -H "MCI-TYPE: ais" \ -X GET "https://mci-xtransfer.saltedge.com/api/priora/v2/accounts/acc-123456/transactions?from_date=2026-01-01&to_date=2026-04-27"
Example response body
![]()
{"data":{"id":"txn-789012","amount":"-250.00","status":"booked","currency":"EUR","value_date":"2026-04-01","extra":{"transaction_type":"TRANSFER","transaction_sub_type":"OUTGOING"}}}
Path Parameters
Query Parameters
Headers
| Header | Type | Description |
|---|---|---|
TPP-Signature-Certificate
|
string, required | The certificate used for signing the request, in base64 encoding that should comply with RFC 4648 (No line feeds). Can raise: TppCertificateInvalid |
TPP-Signature
|
string, required |
JSON Web Signature containing payload, signed using RS256 and
application.private_key.
Can raise:
MciSignatureInvalid
|
Client-Id
|
string, required | TPP unique identifier. |
Access-Token
|
string, required | Access token received in the TPP callback (%code accessToken parameter). |
Channel
|
string, required | Indicates the channel of the request. Allowed value: MCI |
Content-Type
|
string, required | The media type of the body of the request. Accepted value: application/json |
MCI-TYPE
|
string, required | MCI target type. Accepted value: ais |
TPP-Signature Payload
Response
Upon successful request, 200 status code will be returned. See 'Related Errors' table for other possibilities.
Related Errors
| Class | Code | Description |
|---|---|---|
| TppCertificateInvalid | 400 |
Invalid certificate or given certificate doesn't have permissions.
Details are stored in
error_message.
|
| MciSignatureInvalid | 400 | Given signature is invalid or malformed. |
PIS Authentication
The PIS authentication URL is returned in the response to the POST /payments request (in
_links.scaRedirect
field). The TPP shall generate the full authentication URL by appending the required query parameters to the base URL received in the response.
Base URL:
https://siths80.xtrfr.cn/login/mci-fallback
Authentication URL Example
https://siths80.xtrfr.cn/login/mci-fallback?type=pis&channel=MCI&state={value}&tpp_name={name}&tpp_redirect_uri={link}&authorized_id={value}
Query Parameters
Initiate Payment
Initiates a new payment and returns an authentication URL for the PSU to authorise the payment.
Request
POST
https://mci-xtransfer.saltedge.com/api/priora/v2/payments
CURL
![]()
curl -i \
-H "TPP-Signature-Certificate: base64encodedCertificate" \
-H "TPP-Signature: eyJhbGciOiJSUzI1NiJ9..." \
-H "Client-Id: your-client-id" \
-H "Access-Token: ada9123x-uuid-token" \
-H "Channel: MCI" \
-H "Content-Type: application/json" \
-H "MCI-TYPE: pis" \
-d '"{\"endToEndIdentification\":\"E2E-ref-001\",\"instructedAmount\":{\"amount\":\"100.00\",\"currency\":\"EUR\"},\"creditorName\":\"John Doe\",\"creditorAgentName\":\"XTransfer\",\"creditorType\":\"PRIVATE\",\"creditorAccount\":{\"iban\":\"DE89370400440532013000\"},\"creditorAddress\":{\"streetName\":\"Main St\",\"buildingNumber\":\"1\",\"townName\":\"Berlin\",\"postCode\":\"10115\",\"country\":\"DE\"},\"debtorAccount\":{\"bankAccountIdentifier\":\"your-account-id\"}}"' \
-X POST "https://mci-xtransfer.saltedge.com/api/priora/v2/payments"
Example response body
![]()
{"paymentId":123456,"transactionStatus":"PDNG","_links":{"self":{"href":"https://mci-xtransfer.saltedge.com/api/priora/v2/payments/123456"},"status":{"href":"https://mci-xtransfer.saltedge.com/api/priora/v2/payments/123456/status"},"scaRedirect":{"href":"https://siths80.xtrfr.cn/login/mci-fallback"}}}
Headers
| Header | Type | Description |
|---|---|---|
TPP-Signature-Certificate
|
string, required | The certificate used for signing the request, in base64 encoding that should comply with RFC 4648 (No line feeds). Can raise: TppCertificateInvalid |
TPP-Signature
|
string, required |
JSON Web Signature containing payload, signed using RS256 and
application.private_key.
Can raise:
MciSignatureInvalid
|
Client-Id
|
string, required | TPP unique identifier. |
Access-Token
|
string, required | Access token received in the TPP callback (%code accessToken parameter). |
Channel
|
string, required | Indicates the channel of the request. Allowed value: MCI |
Content-Type
|
string, required | The media type of the body of the request. Accepted value: application/json |
MCI-TYPE
|
string, required | MCI target type. Accepted value: pis |
TPP-Signature Payload
Request Body Parameters
Response
Upon successful request, 201 status code will be returned. See 'Related Errors' table for other possibilities.
Related Errors
| Class | Code | Description |
|---|---|---|
| TppCertificateInvalid | 400 |
Invalid certificate or given certificate doesn't have permissions.
Details are stored in
error_message.
|
| MciSignatureInvalid | 400 | Given signature is invalid or malformed. |
Payment Status
Retrieves the current status of an existing payment.
Request
POST
https://mci-xtransfer.saltedge.com/api/priora/v2/payments/authorized_id/status
CURL
![]()
curl -i \ -H "TPP-Signature-Certificate: base64encodedCertificate" \ -H "TPP-Signature: eyJhbGciOiJSUzI1NiJ9..." \ -H "Client-Id: your-client-id" \ -H "Access-Token: ada9123x-uuid-token" \ -H "Channel: MCI" \ -H "Content-Type: application/json" \ -H "MCI-TYPE: pis" \ -H "authorized_id: 123456" \ -X POST "https://mci-xtransfer.saltedge.com/api/priora/v2/payments/authorized_id/status"
Example response body
![]()
{"transactionStatus":"PDNG"}
Headers
| Header | Type | Description |
|---|---|---|
TPP-Signature-Certificate
|
string, required | The certificate used for signing the request, in base64 encoding that should comply with RFC 4648 (No line feeds). Can raise: TppCertificateInvalid |
TPP-Signature
|
string, required |
JSON Web Signature containing payload, signed using RS256 and
application.private_key.
Can raise:
MciSignatureInvalid
|
Client-Id
|
string, required | TPP unique identifier. |
Access-Token
|
string, required | Access token received in the TPP callback (%code accessToken parameter). |
Channel
|
string, required | Indicates the channel of the request. Allowed value: MCI |
Content-Type
|
string, required | The media type of the body of the request. Accepted value: application/json |
MCI-TYPE
|
string, required | MCI target type. Accepted value: pis |
authorized_id
|
string, required | The payment identifier returned in the POST /payments response (%code paymentId field). |
TPP-Signature Payload
Response
Upon successful request, 200 status code will be returned. See 'Related Errors' table for other possibilities.
Related Errors
| Class | Code | Description |
|---|---|---|
| TppCertificateInvalid | 400 |
Invalid certificate or given certificate doesn't have permissions.
Details are stored in
error_message.
|
| MciSignatureInvalid | 400 | Given signature is invalid or malformed. |