POST
/
omni-omni
/
v1
/
transfers
curl --request POST \
  --url https://backend.sandbox.ecrop.de/ecrop-command/omni-omni/v1/transfers \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "amount": 123,
  "assetName": "<string>",
  "bankType": "PRIVATE_BANK",
  "clientWebhook": "<string>",
  "currency": "<string>",
  "idInClient": "<string>",
  "paymentType": "CASH",
  "quantity": 123,
  "recipientPartyEmail": "<string>",
  "recipientPayoutIdentifier": "<string>",
  "senderPartyEmail": "<string>",
  "senderPayoutIdentifier": "<string>",
  "transferDateTime": "2023-11-07T05:31:56Z",
  "transferDocument": {
    "content": "<string>",
    "description": "<string>",
    "fileExtension": "<string>",
    "fileType": "PICTURE",
    "title": "<string>"
  }
}'
{
  "amount": 123,
  "assetName": "<string>",
  "bankType": "PRIVATE_BANK",
  "clientWebhook": "<string>",
  "currency": "<string>",
  "errorMessage": "<string>",
  "idInClient": "<string>",
  "paymentType": "CASH",
  "quantity": 123,
  "recipientPartyEmail": "<string>",
  "recipientPayoutIdentifier": "<string>",
  "senderPartyEmail": "<string>",
  "senderPayoutIdentifier": "<string>",
  "state": "WAITING_FOR_SIGNATURES",
  "transferDateTime": "2023-11-07T05:31:56Z",
  "transferDocument": {
    "description": "<string>",
    "fileType": "PICTURE",
    "id": 123,
    "title": "<string>",
    "url": "<string>"
  },
  "webhookResult": "<string>"
}

Workflow and API Interactions

  1. Trade Execution or investment: A trade is executed on your platform, a third-party marketplace or crowdinvestment platform. Your system captures the trade details, including the sender (seller), recipient (buyer), quantity of tokens, and price.
  2. Submit Transfer Request: Your system sends a POST request to /omni-omni/v1/transfers to initiate the ownership transfer on ecrop’s register.
  3. Proof of Action (PoA) and Transfer Authorization: Both the sender (seller) and recipient (buyer) must provide PoA for the transfer. The authorization process is done either via OmniPersona notifications or direct API calls with PoA headers. The latter has to be sent to this endpoint via PATCH.
  4. Transfer Finalization and Client Notification: After successful PoA from both parties, ecrop finalizes the transfer, updates the token ownership on the register, and sends a notification to the provided clientWebhook URL (if supplied).

KYC/AML Requirements

Before submitting a transfer request for a secondary market trade, ensure that both the sender (seller) and the recipient (buyer) are KYC/AML approved by ecrop. This is essential for regulatory compliance and helps prevent illicit activities on the platform.

  • Existing KYC/AML: If both parties are already registered and KYC/AML approved in the ecrop system (e.g., through previous investments or through your own KYC/AML integration with ecrop), you can proceed with the transfer request.
  • New Parties: If either the sender or recipient is a new party, you must first onboard them and complete the KYC/AML process as described in Party Management.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
idInClient
string
required
amount
number
assetName
string
bankType
enum<string>
Available options:
PRIVATE_BANK,
CROSS_BORDER,
STATE_BANK
clientWebhook
string
currency
string
paymentType
enum<string>
Available options:
CASH,
CRYPTO_CURRENCY,
CHECKS,
DIGITAL_WALLETS,
CREDIT_DEBIT_CARD,
LETTER_OF_CREDIT,
WIRED_TRANSFER,
ELECTRONIC_FUNC_TRANSFER
quantity
number
recipientPartyEmail
string
recipientPayoutIdentifier
string
senderPartyEmail
string
senderPayoutIdentifier
string
transferDateTime
string
transferDocument
object

Response

201
application/json
Transfer saved successfully
idInClient
string
required
amount
number
assetName
string
bankType
enum<string>
Available options:
PRIVATE_BANK,
CROSS_BORDER,
STATE_BANK
clientWebhook
string
currency
string
errorMessage
string
paymentType
enum<string>
Available options:
CASH,
CRYPTO_CURRENCY,
CHECKS,
DIGITAL_WALLETS,
CREDIT_DEBIT_CARD,
LETTER_OF_CREDIT,
WIRED_TRANSFER,
ELECTRONIC_FUNC_TRANSFER
quantity
number
recipientPartyEmail
string
recipientPayoutIdentifier
string
senderPartyEmail
string
senderPayoutIdentifier
string
state
enum<string>
Available options:
WAITING_FOR_SIGNATURES,
PROCESSING,
FAILED,
DONE
transferDateTime
string
transferDocument
object
webhookResult
string