Incoming Transfers
Incoming transfers to all accounts are created as provisioned account credits, then matched with an account and also created as an incoming transfer record. This process is handled by IF when integration is also managed by IF. In this case you can skip Provisioned Account Credit APIs below and check Incoming Transfer APIs. If you have a custom bank connection where the integration is handled by your system, you can reflect incoming transfers to IF system using Provisioned Account Credit APIs below.
Create a Provisioned Account Credit
The first step in creating an incoming transfer is to create a provisioned account credit entity.
Creation of provisioned account credit starts the process of creating an incoming transfer to top up the account's balance.
When the integration is managed by IF, provisioned account credits are also created by IF using the integration. Therefore, this endpoint can only be used when there is custom connection integration in place which is managed by IFCustomer.
POST /provisioned-account-credits_
Sample Requests
{
"workflow": {
"code": "client.direct"
},
"data": {
"provisionedAccountCredit": {
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"amount": 15,
"currency": "EUR",
"scope": "external",
"scheme": "sepa",
"senderBankAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"senderName": "I.F. TECHNOLOGY",
"senderAddress": "",
"senderToReceiverInformation": "sender to receiver information",
"serviceProviderId": "00000000-0000-0000-0000-000000000000"
}
},
"connect": {},
"metadata": {}
}
Sample Responses
{
"workflow": {
"code": "client.direct"
},
"data": {
"provisionedAccountCredit": {
"id": "00000000-0000-0000-0000-000000000000",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"accountType": "client-account",
"amount": 15,
"currency": "EUR",
"scope": "external",
"scheme": "sepa",
"senderBankAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890124",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"senderName": "I.F. TECHNOLOGY",
"senderAddress": "",
"senderToReceiverInformation": "",
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB21",
"sort-code": "000000"
}
},
"serviceProvider": "currency-cloud",
"serviceProviderId": "00000000-0000-0000-0000-000000000000"
}
},
"connect": {},
"metadata": {}
}
Get a Provisioned Account Credit
GET /provisioned-account-credits/{id}
Supported path variable:
id:
ID of provisioned account credit in UUID format
Response
{
"workflow": {},
"data": {
"provisionedAccountCredit": {
"id": "00000000-0000-0000-0000-000000000000",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"accountType": "client-account",
"amount": 15,
"currency": "EUR",
"scope": "external",
"scheme": "sepa",
"senderBankAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890124",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"senderName": "I.F. TECHNOLOGY",
"senderAddress": "",
"senderToReceiverInformation": "",
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB21",
"sort-code": "000000"
}
},
"serviceProvider": "currency-cloud",
"serviceProviderId": "00000000-0000-0000-0000-000000000000"
}
},
"connect": {},
"metadata": {}
}
{
"workflow": {},
"data": {
"provisionedAccountCredit": {
"id": "00000000-0000-0000-0000-000000000000",
"clientId": null,
"accountId": "00000000-0000-0000-0000-000000000000",
"accountType": "transaction-account",
"amount": 15,
"currency": "EUR",
"scope": "external",
"scheme": "sepa",
"senderBankAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890124",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"senderName": "I.F. TECHNOLOGY",
"senderAddress": "",
"senderToReceiverInformation": "",
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB21",
"sort-code": "000000"
}
},
"serviceProvider": "currency-cloud",
"serviceProviderId": "00000000-0000-0000-0000-000000000000"
}
},
"connect": {},
"metadata": {}
}
List Provisioned Account Credits
GET /provisioned-account-credits
Request supports these query parameters:
parameter | description |
---|---|
metadata.page.number | 0-indexed, default=0 |
metadata.page.size | default=10 |
data.provisionedAccountCredit.accountId | any particular account id as UUID |
data.provisionedAccountCredit.currency | currency of account as String |
data.provisionedAccountCredit.amountFrom | the lowest amount to filter |
data.provisionedAccountCredit.amountTo | the highest amount to filter |
data.provisionedAccountCredit.accountType | Provisioned account type. It can be client-account or transaction-account. |
Response
{
"workflow": {},
"data": {
"provisionedAccountCredits": [
{
"id": "00000000-0000-0000-0000-000000000000",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"accountType": "client-account",
"amount": 15,
"currency": "EUR",
"scope": "external",
"scheme": "sepa",
"senderBankAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890124",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"senderName": "I.F. TECHNOLOGY",
"senderAddress": "",
"senderToReceiverInformation": "",
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB21",
"sort-code": "000000"
}
},
"serviceProvider": "currency-cloud",
"serviceProviderId": "00000000-0000-0000-0000-000000000000"
},
{
"id": "00000000-0000-0000-0000-000000000000",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"accountType": "client-account",
"amount": 15,
"currency": "EUR",
"scope": "external",
"scheme": "sepa",
"senderBankAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890124",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"senderName": "I.F. TECHNOLOGY",
"senderAddress": "",
"senderToReceiverInformation": "",
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB21",
"sort-code": "000000"
}
},
"serviceProvider": "currency-cloud",
"serviceProviderId": "00000000-0000-0000-0000-000000000000"
}
]
},
"connect": {},
"metadata": {}
}
Incoming Transfers
Incoming transfers are the transactions that increase the balance of the related account.
The owner of an incoming transfer can be one of the following:
1. Client : When the incoming transfer increases the balance of the client's account, the owner of the incoming transfer is determined as the client.
2. Organization : When the incoming transfer increases the balance of the organization's account, the owner of the incoming transfer is determined as the organization.
Actual & Virtual Transfer Relation:
When IF Platform identifies that a provisioned account credit is matched with a client account in Virtual Account or Shared Pool Account models, the provisioned account credit is converted to 2 incoming transfers. First one is created on the Client Money Account on organization level and second one is created on the client account itself. Transaction on the organization account is created first to prevent balance mismatches between IF Platform and the service provider. This means even if there is a problem on client transaction creation, organization account balance will be correct.
These 2 transfers are linked to each other over related transaction field on the transaction data:
...
"relatedTransaction": {
"nature": "actual/virtual",
"id": "00000000-0000-0000-0000-000000000000"
},
...
relatedTransaction is optional, so nature is only present if the underlying account model requires it and id is only present when both transactions are created successfully.
Please refer to Flow of Funds section for more details on this subject:
Incoming Transfer Types:
There are two types of incoming transfers. scope field reflects these types:
1. Internal transfers: You can create internal transfers between all of your client accounts or organization accounts. When an internal outgoing transfer that has no connection in the service provider is created, IF Platform automatically creates an incoming transfer on the receiver account. outgoingTransferId reflects the transaction that created this incoming transfer.
2. External transfers: External transfers are the transactions received from service providers. The scheme field includes the payment scheme used for external transfers.
Relation with an Outgoing Transfer:
Below diagram explains when outgoingTransferId of an incoming transfer will be present to expose the relationship between them.
Get Incoming Transfer
GET /incoming-transfers/{id}
Supported path variable:
id:
ID of incoming transfer in UUID format
Sample Response #1 :
{
"workflow": {},
"data": {
"incomingTransfer":{
"id": "00000000-0000-0000-0000-000000000000",
"owner": "client",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"transactionNumber": "20210101-ABC123",
"status": "completed",
"currency": "GBP",
"amount": 100.00,
"feeAmount": 3.00,
"feeCurrency": "GBP",
"provisionedAccountCreditId": "00000000-0000-0000-0000-000000000000",
"outgoingTransferId": null,
"serviceProvider": "railsbank",
"serviceProviderId": "",
"serviceProviderReference": "",
"senderInformation": null,
"senderName": "",
"transferDate": "2021-04-25",
"scheme": "sepa",
"scope": "external",
"totalAmount": 97.00,
"relatedTransaction": {
"nature": "actual",
"id": "00000000-0000-0000-0000-000000000000"
},
"senderAccount": {
"ledgerNumber": null,
"alias": null,
"accountHolderName": null,
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
}
}
},
"connect": {},
"metadata": {}
}
{
"workflow": {},
"data": {
"incomingTransfer": {
"id": "00000000-0000-0000-0000-000000000000",
"owner": "client",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"transactionNumber": "20240207-3QXMN7",
"status": "pending",
"currency": "GBP",
"amount": 675.00,
"feeAmount": 10.00,
"feeCurrency": "GBP",
"outgoingTransferId": "00000000-0000-0000-0000-000000000000",
"serviceProviderId": "00000000-0000-0000-0000-000000000000",
"serviceProviderReference": "BeneficiaryTest",
"senderInformation": null,
"senderName": "Serkan Akagunduz",
"transferDate": null,
"totalAmount": 665.00,
"provisionedAccountCreditId": "00000000-0000-0000-0000-000000000000",
"serviceProvider": "currencycloud",
"relatedTransaction": {
"nature": null,
"id": null
},
"receiverAccount": {
"accountHolderName": "Demo Company 005",
"alias": "Joint Account with Amar",
"country": "GB",
"currency": "GBP",
"routingCodes": {},
"accountNumber": null,
"iban": null,
"ledgerNumber": "41735154"
},
"senderAccount": {
"accountHolderName": "Serkan Akagunduz",
"alias": "Serkan Akagunduz GBP",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"sort-code": "040720"
},
"accountNumber": "00000718",
"iban": null,
"ledgerNumber": null
},
"scope": "external",
"scheme": null
}
},
"connect": {},
"metadata": {}
}
{
"workflow":{
},
"data":{
"incomingTransfer":{
"id":"00000000-0000-0000-0000-000000000000",
"owner":"organization",
"clientId":null,
"accountId":"00000000-0000-0000-0000-000000000000",
"transactionNumber":"20240716-QM747M",
"status":"completed",
"currency":"EUR",
"amount":50.00,
"feeAmount":null,
"feeCurrency":null,
"outgoingTransferId":"00000000-0000-0000-0000-000000000000",
"serviceProviderId":"00000000-0000-0000-0000-000000000000",
"serviceProviderReference":"BT-20240716-VQSQGV",
"senderInformation":null,
"senderName":null,
"transferDate":"2024-07-16",
"totalAmount":null,
"provisionedAccountCreditId":"00000000-0000-0000-0000-000000000000",
"serviceProvider":"currencycloud",
"relatedTransaction": {
"nature": null,
"id": null
},
"receiverAccount":{
"accountHolderName":"",
"alias":"Org Account",
"country":"",
"currency":"EUR",
"routingCodes":{
},
"accountNumber":"",
"iban":"",
"ledgerNumber":"44952820"
},
"senderAccount":{
"accountHolderName":"Integrated Finance Fee Collection",
"alias":null,
"country":"GB",
"currency":"EUR",
"routingCodes":{
"bic":"TCCLGB31"
},
"accountNumber":null,
"iban":"GB01TCCL15127531562918",
"ledgerNumber":null
},
"scope":"internal",
"scheme":null,
}
},
"connect":{
},
"metadata":{
}
}
Sample Response #2:
{
"timestamp": "2022-04-08T13:50:49.211369",
"message": "A valid incoming transfer record cannot be found with parameters (id)=(fe5d93ec-6c3c-4bb1-886d-56cffc6c307d).",
"code": "common.coding.internal.record_not_found",
"messageParameters": [
"incoming transfer",
"id",
"fe5d93ec-6c3c-4bb1-886d-56cffc6c307d"
]
}
List Incoming Transfers
GET /incoming-transfers
Supported query parameters:
parameter | description |
---|---|
metadata.page.number | 0-indexed, default=0 |
metadata.page.size | default=10 |
data.incomingTransfer.status | one of pending, on-hold, completed, failed |
data.incomingTransfer.transactionNumber | unique transaction number |
data.incomingTransfer.amountFrom | minimum amount |
data.incomingTransfer.amountTo | maximum amount |
data.incomingTransfer.currency | ISO 4217 currency code |
data.incomingTransfer.serviceProvider | |
data.incomingTransfer.clientId | UUID of client |
data.incomingTransfer.accountId | UUID of account |
data.incomingTransfer.senderInformation | free text filled by sender |
data.incomingTransfer.senderName | name of sender |
data.incomingTransfer.serviceProviderId | |
data.incomingTransfer.serviceProviderReference | |
data.incomingTransfer.transferDateFrom | |
data.incomingTransfer.transferDateTo | |
data.incomingTransfer.owner | owner of transfer. It can be client or organization |
data.incomingTransfer.hasRelatedTransaction | used to filter if the transfer has any related transaction. one of true , false |
data.incomingTransfer.relatedTransactionId | UUID of related transaction |
data.incomingTransfer.relatedTransactionNature | Nature of the related transaction. one of virtual, actual |
data.incomingTransfer.owner has a default value of client to be backward compatible. The default value will be removed in the future. Please send client explicitly if you'd like to list only the client transactions
{
"workflow": {},
"data": {
"incomingTransfers": [{
"id": "00000000-0000-0000-0000-000000000000",
"owner": "client",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"transactionNumber": "20210101-ABC123",
"status": "completed",
"currency": "GBP",
"amount": 100.00,
"feeAmount": 3.00,
"feeCurrency": "GBP",
"outgoingTransferId": null,
"serviceProvider": "railsbank",
"serviceProviderId": "",
"serviceProviderReference": "",
"senderInformation": null,
"senderName": "",
"transferDate": "2021-04-25",
"scheme": "sepa",
"scope": "external",
"totalAmount": 97.00,
"relatedTransaction": {
"nature": "actual",
"id": "00000000-0000-0000-0000-000000000000"
},
"senderAccount": {
"ledgerNumber": null,
"alias": null,
"accountHolderName": null,
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
}
}]
},
"connect": {},
"metadata": {}
}
Webhooks
Incoming transfer webhooks have "incoming-transfers" in the module field in the webhook container object.
There are a couple of types of webhooks sent for incoming transfers as follows:
- incoming-transfer-pending
- incoming-transfer-compliance-in-review
(only this webhook can have an optional complianceCheck object in payload) - incoming-transfer-completed
- incoming-transfer-failed
It is exposed in the webhook.type field.
{
"webhook": {
"module": "incoming-transfers",
"type": "incoming-transfer-pending"
},
"data": {
"incomingTransfer": {
"id": "00000000-0000-0000-0000-000000000000",
"owner": "client",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"transactionNumber": "20210101-ABC123",
"status": "pending",
"currency": "GBP",
"amount": 100.00,
"feeAmount": 3.00,
"feeCurrency": "GBP",
"outgoingTransferId": null,
"serviceProvider": "railsbank",
"serviceProviderId": "",
"serviceProviderReference": "",
"senderInformation": null,
"senderName": "",
"scheme": "sepa",
"scope": "external",
"totalAmount": 97.00,
"relatedTransaction": {
"nature": "actual",
"id": "00000000-0000-0000-0000-000000000000"
},
"senderAccount": {
"ledgerNumber": null,
"alias": null,
"accountHolderName": null,
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
}
}
},
"connect": {},
"metadata": {}
}
{
"webhook": {
"module": "incoming-transfers",
"type": "incoming-transfer-compliance-in-review"
},
"data": {
"incomingTransfer": {
"id": "00000000-0000-0000-0000-000000000000",
"owner": "client",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"transactionNumber": "20210101-ABC123",
"status": "pending",
"currency": "GBP",
"amount": 100.00,
"feeAmount": 3.00,
"feeCurrency": "GBP",
"outgoingTransferId": null,
"serviceProvider": "railsbank",
"serviceProviderId": "",
"serviceProviderReference": "",
"senderInformation": null,
"senderName": "",
"scheme": "sepa",
"scope": "external",
"totalAmount": 97.00,
"relatedTransaction": {
"nature": null,
"id": null
},
"senderAccount": {
"ledgerNumber": null,
"alias": null,
"accountHolderName": null,
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
}
},
"complianceCheck": {
"status": "in-review",
"procedureResults": {
"transaction-monitoring": {
"result": null
}
}
}
},
"connect": {},
"metadata": {}
}
{
"webhook": {
"module": "incoming-transfers",
"type": "incoming-transfer-completed"
},
"data": {
"incomingTransfer": {
"id": "00000000-0000-0000-0000-000000000000",
"owner": "client",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"transactionNumber": "20210101-ABC123",
"status": "completed",
"currency": "GBP",
"amount": 100.00,
"feeAmount": 3.00,
"feeCurrency": "GBP",
"outgoingTransferId": null,
"serviceProvider": "railsbank",
"serviceProviderId": "",
"serviceProviderReference": "",
"senderInformation": null,
"senderName": "",
"transferDate": "2021-04-25",
"scheme": "sepa",
"scope": "external",
"totalAmount": 97.00,
"relatedTransaction": {
"nature": "actual",
"id": "00000000-0000-0000-0000-000000000000"
},
"senderAccount": {
"ledgerNumber": null,
"alias": null,
"accountHolderName": null,
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
}
}
},
"connect": {},
"metadata": {}
}
{
"webhook": {
"module": "incoming-transfers",
"type": "incoming-transfer-failed"
},
"data": {
"incomingTransfer": {
"id": "00000000-0000-0000-0000-000000000000",
"owner": "client",
"clientId": "00000000-0000-0000-0000-000000000000",
"accountId": "00000000-0000-0000-0000-000000000000",
"transactionNumber": "20210101-ABC123",
"status": "failed",
"currency": "GBP",
"amount": 100.00,
"feeAmount": 3.00,
"feeCurrency": "GBP",
"outgoingTransferId": null,
"serviceProvider": "railsbank",
"serviceProviderId": "",
"serviceProviderReference": "",
"senderInformation": null,
"senderName": "",
"scheme": "sepa",
"scope": "external",
"totalAmount": 97.00,
"relatedTransaction": {
"nature": "actual",
"id": "00000000-0000-0000-0000-000000000000"
},
"senderAccount": {
"ledgerNumber": null,
"alias": null,
"accountHolderName": null,
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
},
"receiverAccount": {
"ledgerNumber": "12345678",
"alias": "GBP Account",
"accountHolderName": "",
"accountNumber": "00000000",
"iban": "GB99AAAA01234567890123",
"country": "GB",
"currency": "GBP",
"routingCodes": {
"bic": "AAAAGB22",
"sort-code": "000000"
}
}
}
},
"connect": {},
"metadata": {}
}
Compliance Check
Incoming transfers of client accounts can have compliance checks. Compliance checks can approve or deny the transaction depending on its result. There are two endpoints for compliance checks of incoming transfers.
Get Compliance Check
GET /incoming-transfers/{id}/compliance-check
Supported path variable:
id:
ID of incoming transfer in UUID format
Sample Response:
The response can have multiple procedureResults depending on configurations. The API supports transaction-monitoring procedures. As a result of the procedureResults, procedures can have these result values below:
Acceptable results of transaction-monitoring:
- all-passed
- soft-stop
- hard-stop
- hard-stop-accepted
- hard-stop-rejected
The status of the compliance check can be changed depending on the summarised result of procedure results. status can have these values below:
- in-review
- approved
- rejected
- skipped
{
"workflow": {},
"data": {
"complianceCheck": {
"status": "approved",
"procedureResults": {
"transaction-monitoring": {
"result": "all-passed"
}
}
}
},
"connect": {},
"metadata": {}
}
{
"workflow": {},
"data": {
"complianceCheck": {
"status": "in-review",
"procedureResults": {
"transaction-monitoring": {
"result": null
}
}
}
},
"connect": {},
"metadata": {}
}
{
"workflow": {},
"data": {
"complianceCheck": {
"status": "skipped",
"procedureResults": {}
}
},
"connect": {},
"metadata": {}
}
Update Compliance Check
PATCH /incoming-transfers/{id}/compliance-check
There is a single workflow to update compliance checks of incoming transfers.
1. Direct: The direct workflow aims to change the result of procedure. The results can be changed only if the configurations are settled to manage compliance checks externally.
Sample Request and Response:
{
"workflow": {
"code": "direct"
},
"data": {
"complianceCheck": {
"procedureResult": { // single procedure to update
"procedure": "transaction-monitoring",
"result": "hard-stop-rejected"
}
}
},
"connect": {},
"metadata": {}
}
{
"workflow": {
"code": "direct"
},
"data": {
"complianceCheck": {
"status": "rejected",
"procedureResults": {
"transaction-monitoring": {
"result": "hard-stop-rejected"
}
}
}
},
"connect": {},
"metadata": {}
}
Updated 10 days ago