Buy Flow

Get an internal client account

GET /v1/accounts/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "client_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Orders will be linked to this account.

Add an external bank account

POST /v1/external-bank-accounts/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "client_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
data = {
    "name": "string",
    "iban": "string",
    "bank_code": "string",
    "bank_name": "string",
    "holder_name": "string"
}

Or get the client’s external bank account if it has already been added:

GET /v1/external-bank-accounts/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "client_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

The deposit must be sent from this client account.

Add an external crypto account

This requires some confirmation.

POST /v1/external-crypto-accounts/

Confirmation via WalletConnect is available on the Ethereum and Polygon networks. The following JSON fields must be added to the request to add client external crypto account:

data = {
    ...,
    "address": "string",
    "wallet_message": "string",
    "wallet_signature": "string"
}

Algorand, Ripple, Xinfin, Stellar networks will require additional verification of Satoshi. Get the address for Satoshi test:

GET /v1/external-crypto-accounts/satoshitest/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "client_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "network_type": "algorand"
}

Here you may need information about available network types:

GET /v1/references/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "type": ["network_types"]
}

Note: Satoshi test must be done before adding request. Confirmation is not required when adding an external crypto account in the sandbox.

Add a client’s external crypto account:

POST /v1/external-crypto-accounts/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "client_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
data = {
    "name": "string",
    "network_type": "ethereum",
    "address": "string"
}

Or get the client’s external crypto account if it has already been added:

GET /v1/external-crypto-accounts/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "client_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

The withdrawal will be sent to this client account.

Get bank account info

Obtain information about the bank account into which the client will need to make a deposit.

GET /v1/sellbuy/bank-info/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Get commissions

GET /v1/sellbuy/orders/calculate-trade/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "client_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "bank_transfer_type": "sepa",
    "incoming_provider_type": "bank",
    "incoming_provider_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "incoming_amount": 100,
    "outgoing_provider_type": "crypto",
    "outgoing_provider_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

In step Get bank account info you got bank_transfer_type and incoming_provider_uuid.

Make the following request to select an outgoing_provider_uuid:

GET /v1/references/providers/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "type": "crypto"
}

Create an order

POST /v1/sellbuy/orders/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "client_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
data = {
    "account_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "incoming_transfer_type": "sepa",
    "incoming_provider_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "incoming_asset_code": "EUR",
    "incoming_amount": 100,
    "outgoing_provider_type": "crypto",
    "outgoing_provider_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "outgoing_asset_code": "EURS",
    "outgoing_client_account_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

In step Get an internal client account you got account_uuid. In step Add an external crypto account you got outgoing_client_account_uuid. In step Get bank account info you got incoming_transfer_type and incoming_provider_uuid.

Make the following request to select an outgoing_provider_uuid:

GET /v1/references/providers/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "type": "crypto"
}

Make a deposit

The client needs to make a fiat deposit from the account specified in step Add an external bank account using the bank details received in step Get bank account info.

Please use ‘reference’ field value from step Create an order as a purpose of bank transfer.

Note: There is no need to make a real bank deposit in the sandbox. To do this, the sandbox API provides an inject deposit endpoint.

POST /v1/deposits/inject/

Get order status

GET /v1/sellbuy/orders/

query = {
    "legal_entity_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "client_uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}