Transfer Participants

How do I specify who is participating in a transfer of funds?

Understand how to create a transfer with participants

What is a participant?

Transfer participants are a high-level mechanism to describe the ultimate senders and receivers of funds in a transfer. This is to ensure that a partner's usage of the Cybrid Platform remains onside of all compliance requirements.

A participant is a bank, customer, or counterparty that is involved in a transfer as either a sender or as a receiver. Participants that are senders are considered source participants. Participants that are receivers are considered destination participants. In a transfer, there will be one or more source participants and one or more destination participants.

When do I have to specify participants?

Partners must specify participants for all transfers in the platform, with the exception of the inter_account transfer type. While the Cybrid Platform could potentially infer the participants, from a compliance point of view, the requirement is that partners must be explicit in describing the flow of funds. This is to avoid scenarios where partners accidentally omit these details when creating transfers.

How to I specify participants?

When creating a transfer, the source_participants and destination_participants fields must be used to supply the type and identifiers of the participants, as well as their corresponding amounts.

These fields are both arrays so that batch transfer scenarios (i.e. where funds are being ultimately dispersed to multiple parties) can be described. Note that the sum of each the source_participants and destination_participants must sum to the total transfer amount.

Example: Remittance partner withdrawing funds from the Cybrid Platform

In this example, a remittance partner on the Cybrid Platform is batch transferring funds in a single transfer to an external wallet that the partner controls before dispersing funds to external parties that are modelled as counterparties. In such a scenario, the destination participants would consist of all the counterparties that are ultimately receiving the funds, while the source participants may consist of a single entry for the partner's bank.

A partial example of a POST /api/transfers in such a scenario would consist of:

{
  ...
  "source_participants": [
    {
      "type": "bank",
      "amount":"<insert total amount>",
      "guid": "<insert bank_guid>"
    },
  ],
  "destination_participants": [
    {
      "type": "counterparty",
      "amount":"<insert first partial amount>",
      "guid": "<insert first counterparty_guid>"
    },
    {
      "type": "counterparty",
      "amount":"<insert second partial amount>",
      "guid": "<insert second counterparty_guid>"
    },
  ],
	...
}

Example: On-ramp partner depositing funds into the Cybrid Platform

In this example, an on-ramp/off-ramp partner on the Cybrid Platform is pulling funds from their customer's external bank account. In such a scenario, the source and destination participants would be simple to specify, with both consisting of the customer guid.

A partial example of a POST /api/transfers in such a scenario would consist of:

{
  ...
  "source_participants": [
    {
      "type": "customer",
      "amount":"<insert amount>",
      "guid": "<insert customer_guid>"
    }
  ],
  "destination_participants": [
    {
      "type": "customer",
      "amount":"<insert amount>",
      "guid": "<insert customer_guid>"
    }
  ],
  ...
}