Paxos API (2.0)
Download OpenAPI specification:Download
Welcome to Paxos APIs. At Paxos, our mission is to enable the movement of any asset, any time, in a trustworthy way. These APIs serve that mission by making it easier than ever for you to directly integrate our product capabilities into your application, leveraging the speed, stability, and security of the Paxos platform.
The documentation that follows gives you access to our Crypto Brokerage, Trading, and Exchange products. It includes APIs for market data, orders, and the held rate quote flow.
To test in our sandbox environment, sign up for an account. For more information about Paxos and our APIs, visit Paxos.com.
Each deposit to and withdrawal from a Paxos account is a Transfer. A Transfer is associated with a particular Profile, and increases or decreases the available balance of a single asset in that Profile.
List Transfers
List all transfers, optionally filtering and paging the results.
By default, transfers are returned in reverse chronological (descending) order by creation time.
The recommended polling workflow is to query the results in ascending
order (by setting order_by
to CREATED_AT
), keeping track of the
created_at
timestamp of the most recent transfer in the paged results.
Once transfers are discovered, the caller should store the returned ID
and query GetTransfer to retrieve status updates.
Authorizations:
query Parameters
profile_ids | Array of strings Optionally filter by the target profiles of the transfers. Limit 100. Can be combined with created_at.* or updated_at.* filtering options only. |
identity_ids | Array of strings Optionally filter by the Identities associated with the transfers. Limit 100. Can be combined with created_at.* or updated_at.* filtering options only. |
ref_ids | Array of strings The client-specified IDs provided during transfer creation. Limit 100. Can be combined with created_at.* or updated_at.* filtering options only. |
created_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
created_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
created_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
created_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
created_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
updated_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
updated_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
updated_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
updated_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
updated_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
limit | integer <int32> Number of results to return. Defaults to 100 if no limit is provided. Maximum 1000. |
order | string Enum: "DESC" "ASC" Determines whether the items are returned in ascending (ASC), or descending (DESC) order.
Defaults to ASC if |
order_by | string Enum: "CREATED_AT" "UPDATED_AT" The specific method by which the returned results will be ordered.
When specifying both
Using |
page_cursor | string Optional: Cursor for getting the next page of results. When the number of items returned is fewer than the limit, there is currently no next page. |
account_ids | Array of strings Optionally filter by the Accounts associated with the transfers. Limit 100. Can be combined with created_at.* or updated_at.* filtering options only. |
ids | Array of strings Optionally filter by the transfer ids. Limit 100. Can be combined with created_at.* or updated_at.* filtering options only. |
type | Array of strings Items Enum: "INTERNAL_TRANSFER_DEBIT" "INTERNAL_TRANSFER_CREDIT" "CRYPTO_DEPOSIT" "CRYPTO_WITHDRAWAL" "WIRE_DEPOSIT" "WIRE_WITHDRAWAL" "SEN_DEPOSIT" "SEN_WITHDRAWAL" "BANK_DEPOSIT" "BANK_WITHDRAWAL" "PAXOS_TRANSFER_DEBIT" "PAXOS_TRANSFER_CREDIT" "SIGNET_DEPOSIT" "SIGNET_WITHDRAWAL" "CBIT_WITHDRAWAL" "CBIT_DEPOSIT" "CUBIX_DEPOSIT" "CUBIX_WITHDRAWAL" Retrieve all (default) or the specified transfers.
Optionally filter by transfer |
group_ids | Array of strings Optionally filter by transfer |
crypto_tx_hashes | Array of strings Optionally filter by the on-chain transaction hash for crypto transactions. Limit 100. |
secondary_statuses | Array of strings Items Value: "TRAVEL_RULE_INFO_REQUESTED" Optionally filter by secondary status.
|
Responses
Response samples
- 200
{- "items": [
- {
- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "ref_id": "idempotence_id",
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "amount": "0.10000000",
- "total": "0.10000023",
- "fee": "0.00000023",
- "asset": "BTC",
- "balance_asset": "BTC",
- "direction": "WITHDRAWAL",
- "type": "CRYPTO_WITHDRAWAL",
- "status": "COMPLETED",
- "created_at": "2020-01-17T18:36:08.737Z",
- "updated_at": "2020-01-17T18:37:08.737Z",
- "crypto_network": "BITCOIN",
- "crypto_tx_hash": "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16",
- "crypto_tx_index": "0",
- "destination_address": "1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2",
- "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
], - "next_page_cursor": "string"
}
Get Transfer
Get a single transfer by ID.
In the polling workflow, this endpoint can be called to monitor transfer status changes.
Authorizations:
path Parameters
id required | string The Paxos transfer UUID. |
Responses
Response samples
- 200
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "ref_id": "idempotence_id",
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "amount": "0.10000000",
- "total": "0.10000023",
- "fee": "0.00000023",
- "asset": "BTC",
- "balance_asset": "BTC",
- "direction": "WITHDRAWAL",
- "type": "CRYPTO_WITHDRAWAL",
- "status": "COMPLETED",
- "created_at": "2020-01-17T18:36:08.737Z",
- "updated_at": "2020-01-17T18:37:08.737Z",
- "crypto_network": "BITCOIN",
- "crypto_tx_hash": "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16",
- "crypto_tx_index": "0",
- "destination_address": "1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2",
- "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
The Fiat Transfers API allows clients to deposit and withdraw fiat via the following Fiat Networks: Wire (Fedwire and SWIFT) and CUBIX. The supported asset is USD.
The full set of Fiat Transfers API endpoints is:
List Fiat Accounts
List all Fiat Accounts, optionally filtering and paging the results.
The response includes an abbreviated FiatAccount
object:
- Beneficiary name and address details are excluded.
- Only the last four (4) digits of the account number are included.
Use Get Fiat Account to retrieve the complete FiatAccount
object.
The paginated results default to the maximum limit of 1,000 Fiat Accounts, unless otherwise specified with the limit
parameter.
Every paginated response contains a next_page
field until the last page is reached.
Pass the next_page
value into the page_cursor
field of the next request to retrieve the next page of results.
Authorizations:
query Parameters
ids | Array of strings Optionally filter by the UUIDs of the accounts. Limit 100. |
ref_ids | Array of strings Optionally filter by the client-specified IDs provided during account creation. Limit 100. |
created_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
created_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
created_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
created_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
created_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
limit | integer <int32> Number of results to return. Defaults to 100 if no limit is provided. Maximum 1000. |
order | string Enum: "DESC" "ASC" Return items in ascending (ASC) or descending (DESC) order. Defaults to DESC. |
order_by | string Value: "CREATED_AT" The specific method by which the returned results will be ordered. Defaults to CREATED_AT. |
page_cursor | string Optional: Cursor for getting the next page of results. |
Responses
Response samples
- 200
{- "items": [
- {
- "id": "dde1b3c5-d02a-48f6-8d11-16b4f532ea49",
- "ref_id": "test_ref_id_1",
- "identity_id": "c6ea91da-8f33-4545-9bdf-3cf29b4041d7",
- "account_id": "91f91384-30d4-46c2-9118-7f3cec676a2c",
- "fiat_account_owner": {
- "person_details": null
}, - "fiat_network_instructions": {
- "wire": {
- "account_number": "XXXX5678",
- "fiat_account_owner_address": null,
- "routing_details": {
- "routing_number_type": "ABA",
- "routing_number": "123456789",
- "bank_name": "Customers Bank",
- "bank_address": null
}, - "status": "PENDING",
- "metadata": {
- "test_ref_id": "47aa7538-e2d2-47b3-8600-44a7965dd357",
- "transaction_attempt": 1
}
}
}, - "created_at": "2023-09-24T14:15:22Z",
- "updated_at": "2023-09-24T14:15:22Z"
}
]
}
Create Fiat Account
Create an account to initiate a fiat withdrawal.
For U.S. wires, set fiat_network_instructions
> wire
> routing_details
> routing_number_type
to ABA
. For international (SWIFT) wires, set fiat_network_instructions
> wire
> routing_details
> routing_number_type
to SWIFT
.
For CUBIX, set fiat_network_instructions
> cubix
> account_id
, and do not specify routing_number_type
. For CUBIX, the account_id
is the CUBIX account ID.
Authorizations:
Request Body schema: application/json
ref_id | string The optional client-specified ID (for idempotence). |
identity_id | string The Paxos Identity ( |
account_id | string The Paxos Account ( |
required | object (FiatAccountOwner) |
required | object (FiatNetworkInstructions) |
object Optional client-specified metadata. Up to 6 key/value pairs may be provided. Each key and value must be less than or equal to 100 characters. |
Responses
Request samples
- Payload
{- "identity_id": "54385e67-d7ef-40d1-b488-ceda6dd9b264",
- "fiat_network_instructions": {
- "wire": {
- "account_number": "12345678",
- "routing_details": {
- "routing_number": "031302971",
- "bank_name": "Customers Bank",
- "bank_address": {
- "country": "USA"
}
}, - "fiat_account_owner_address": {
- "address1": "456 Main Street",
- "city": "NY",
- "country": "USA"
}
}
}, - "fiat_account_owner": {
- "person_details": {
- "first_name": "Jane",
- "last_name": "Doe"
}
}
}
Response samples
- 200
- 400
- 403
- 404
{- "id": "dde1b3c5-d02a-48f6-8d11-16b4f532ea49",
- "ref_id": "test_ref_id_1",
- "identity_id": "c6ea91da-8f33-4545-9bdf-3cf29b4041d7",
- "account_id": "91f91384-30d4-46c2-9118-7f3cec676a2c",
- "fiat_account_owner": {
- "person_details": {
- "first_name": "Jane",
- "last_name": "Doe"
}, - "fiat_network_instructions": {
- "wire": {
- "account_number": "12345678",
- "fiat_account_owner_address": {
- "country": "USA",
- "address1": "456 Main Street, NY",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}, - "routing_details": {
- "routing_number_type": "ABA",
- "routing_number": "123456789",
- "bank_name": "Customers Bank",
- "bank_address": {
- "country": "USA",
- "address1": "123 Bank Street",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}
}
}, - "status": "PENDING",
- "metadata": {
- "test_ref_id": "47aa7538-e2d2-47b3-8600-44a7965dd357",
- "transaction_attempt": 1
}
}
}, - "created_at": "2023-09-24T14:15:22Z"
}
Get Fiat Account
Get a single Fiat Account by ID.
In the polling workflow, this endpoint can be called to monitor a FiatAccount's status. The Fiat Account response includes the full account number, beneficiary name and address details.
Authorizations:
path Parameters
id required | string The Paxos fiat account ID (UUID).
The Fiat Account ID ( |
Responses
Response samples
- 200
{- "id": "string",
- "ref_id": "string",
- "identity_id": "string",
- "account_id": "string",
- "fiat_account_owner": {
- "person_details": {
- "first_name": "string",
- "last_name": "string"
}, - "institution_details": {
- "name": "string"
}
}, - "fiat_network_instructions": {
- "wire": {
- "account_number": "string",
- "fiat_account_owner_address": {
- "country": "string",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "province": "string",
- "zip_code": "string"
}, - "routing_details": {
- "routing_number_type": "ABA",
- "routing_number": "string",
- "bank_name": "string",
- "bank_address": {
- "country": "string",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "province": "string",
- "zip_code": "string"
}
}, - "intermediary_routing_details": {
- "routing_number_type": "ABA",
- "routing_number": "string",
- "bank_name": "string",
- "bank_address": {
- "country": "string",
- "address1": "string",
- "address2": "string",
- "city": "string",
- "province": "string",
- "zip_code": "string"
}
}
}, - "cbit": {
- "wallet_address": "string"
}, - "dbs_act": {
- "account_number": "string"
}, - "cubix": {
- "account_id": "string"
}
}, - "status": "PENDING",
- "metadata": {
- "property1": "string",
- "property2": "string"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
Update Fiat Account
Change an existing value or add a new value on one or more fields for the given Fiat Account and return the modified Fiat Account in PENDING
status.
Update fields in either fiat_account_owner.person_details
or fiat_account_owner.institution_details
.
Attempts to convert the fiat_account_owner
type results in an error.
Empty strings or null values are ignored.
Upon successful response, Paxos initiates an automated review of the requested changes and then either sets the status to APPROVED
or REJECTED
.
Occasionally, a manual review may be required.
Use Get Fiat Account to check for status changes.
Authorizations:
path Parameters
id required | string The Paxos fiat account ID (UUID).
The Fiat Account ID ( |
Request Body schema: application/json
object (FiatAccountOwner) | |
object (FiatNetworkInstructions) | |
object Optional client-specified metadata. Up to 6 key/value pairs may be provided. Each key and value must be less than or equal to 100 characters. |
Responses
Request samples
- Payload
{- "fiat_account_owner": {
- "person_details": {
- "first_name": "John",
- "last_name": "Smith"
}
}
}
Response samples
- 200
- 400
- 403
- 404
{- "id": "dde1b3c5-d02a-48f6-8d11-16b4f532ea49",
- "ref_id": "test_ref_id_1",
- "identity_id": "c6ea91da-8f33-4545-9bdf-3cf29b4041d7",
- "account_id": "91f91384-30d4-46c2-9118-7f3cec676a2c",
- "fiat_account_owner": {
- "person_details": {
- "first_name": "John",
- "last_name": "Smith"
}, - "fiat_network_instructions": {
- "wire": {
- "account_number": "12345678",
- "fiat_account_owner_address": {
- "country": "USA",
- "address1": "456 Main Street, NY",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}, - "routing_details": {
- "routing_number_type": "ABA",
- "routing_number": "123456789",
- "bank_name": "Customers Bank",
- "bank_address": {
- "country": "USA",
- "address1": "123 Bank Street",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}
}
}, - "status": "PENDING",
- "metadata": {
- "test_ref_id": "47aa7538-e2d2-47b3-8600-44a7965dd357",
- "transaction_attempt": 1
}
}
}, - "created_at": "2023-09-24T14:15:22Z",
- "updated_at": "2023-09-24T14:15:22Z"
}
List Fiat Deposit Instructions
Return the associated Fiat Deposit Instructions matching the search criteria for the current Account.
The paginated results default to the maximum limit of 1,000 Fiat Deposit instructions, unless otherwise specified with the limit
parameter.
Every paginated response contains a next_page
field until the last page is reached.
Pass the next_page
value into the page_cursor
field of the next request to retrieve the next page of results.
Authorizations:
query Parameters
ids | Array of strings Optionally filter by the UUIDs of the instructions. Limit 100. |
ref_ids | Array of strings Optionally filter by the client-specified IDs provided during instructions creation. Limit 100. |
created_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
created_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
created_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
created_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
created_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
limit | integer <int32> Number of results to return. Defaults to 100 if no limit is provided. Maximum 1000. |
order | string Enum: "DESC" "ASC" Return items in ascending (ASC) or descending (DESC) order. Defaults to DESC. |
page_cursor | string Optional: Cursor for getting the next page of results. |
Responses
Response samples
- 200
- 400
- 404
{- "items": [
- {
- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "profile_id": "5fc6d191-193c-4e28-94fa-656bbdbdfaad",
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339",
- "ref_id": "idempotence_id",
- "status": "VALID",
- "memo_id": "9CFXQSCMSPLFHXLZ",
- "fiat_network_instructions": {
- "wire": {
- "account_number": "12345678",
- "fiat_account_owner_address": {
- "country": "USA",
- "address1": "456 Main Street, NY",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}, - "routing_details": {
- "routing_number_type": "ABA",
- "routing_number": "123456789",
- "bank_name": "Customers Bank",
- "bank_address": {
- "country": "USA",
- "address1": "123 Bank Street",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}
}
}, - "fiat_account_owner": {
- "person_details": {
- "first_name": "Jane",
- "last_name": "Doe"
}
}, - "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
}
]
}
Create Fiat Deposit Instructions
Create instructions for depositing fiat.
Authorizations:
Request Body schema: application/json
ref_id | string The optional client-specified ID (for idempotence). |
profile_id required | string The Profile ( |
identity_id required | string The Identity ( |
account_id | string The Account ( |
fiat_network required | string (FiatNetwork) Enum: "WIRE" "DBS_ACT" "CUBIX" |
routing_number_type | string (FiatWireAccountType) Enum: "ABA" "SWIFT" |
object Optional client-specified metadata. Up to 6 key/value pairs may be provided. Each key and value must be less than or equal to 100 characters. |
Responses
Request samples
- Payload
{- "profile_id": "5fc6d191-193c-4e28-94fa-656bbdbdfaad",
- "fiat_network": "WIRE",
- "identity_id": "8a398cb6-4e3b-4868-9cea-a1c567856e68",
- "account_ id": "91f91384-30d4-46c2-9118-7f3cec676a2c",
- "ref_id": "idempotence_id",
- "routing_number_type": "SWIFT",
- "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
Response samples
- 200
- 400
- 404
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "profile_id": "5fc6d191-193c-4e28-94fa-656bbdbdfaad",
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339",
- "ref_id": "idempotence_id",
- "status": "VALID",
- "memo_id": "9CFXQSCMSPLFHXLZ",
- "fiat_network_instructions": {
- "wire": {
- "account_number": "12345678",
- "fiat_account_owner_address": {
- "country": "USA",
- "address1": "456 Main Street, NY",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}, - "routing_details": {
- "routing_number_type": "ABA",
- "routing_number": "123456789",
- "bank_name": "Customers Bank",
- "bank_address": {
- "country": "USA",
- "address1": "123 Bank Street",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}
}
}, - "fiat_account_owner": {
- "person_details": {
- "first_name": "Jane",
- "last_name": "Doe"
}
}, - "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
}
Get Fiat Deposit Instructions
Get instructions for depositing fiat using a Paxos Fiat Deposit Instructions ID.
The Fiat Deposit Instructions ID (id
) is provided in the response of the Create Fiat Deposit Instructions.
Authorizations:
path Parameters
id required | string Retrieve the Paxos Fiat Deposit Instructions for the given |
Responses
Response samples
- 200
- 400
- 404
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "profile_id": "5fc6d191-193c-4e28-94fa-656bbdbdfaad",
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339",
- "ref_id": "idempotence_id",
- "status": "VALID",
- "memo_id": "9CFXQSCMSPLFHXLZ",
- "fiat_network_instructions": {
- "wire": {
- "account_number": "12345678",
- "fiat_account_owner_address": {
- "country": "USA",
- "address1": "456 Main Street, NY",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}, - "routing_details": {
- "routing_number_type": "ABA",
- "routing_number": "123456789",
- "bank_name": "Customers Bank",
- "bank_address": {
- "country": "USA",
- "address1": "123 Bank Street",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}
}
}, - "fiat_account_owner": {
- "person_details": {
- "first_name": "Jane",
- "last_name": "Doe"
}
}, - "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
}
Create Fiat Withdrawal
Withdraw fiat to the given destination.
Authorizations:
Request Body schema: application/json
ref_id | string The optional client-specified ID (for idempotence). |
amount | string^[0-9]*\.?[0-9]{1,2}$ Amount to withdraw, excluding fees. Specify exactly one of |
asset required | string The asset to withdraw. Current supported asset: "USD". |
fiat_account_id required | string The fiat account ( |
profile_id required | string The Profile ( |
identity_id required | string The Identity ( |
account_id | string The Account ( |
object Optional client-specified metadata. Up to 6 key/value pairs may be provided. Each key and value must be less than or equal to 100 characters. | |
memo | string <= 100 characters ^[0-9A-Za-z /?:().,&'+-]*$ Optional additional memo to be set on the outgoing wire. Only used for wire withdrawals. |
total | string Total to withdraw, including fees. Specify exactly one of |
Responses
Request samples
- Payload
{- "amount": "12.34",
- "asset": "USD",
- "fiat_account_id": "caa82b32-8abd-4899-afdc-f9d4bf9b4e98",
- "profile_id": "5fc6d191-193c-4e28-94fa-656bbdbdfaad",
- "identity_id": "54385e67-d7ef-40d1-b488-ceda6dd9b264"
}
Response samples
- 200
- 400
- 403
- 404
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339",
- "profile_id": "5fc6d191-193c-4e28-94fa-656bbdbdfaad",
- "identity_id": "54385e67-d7ef-40d1-b488-ceda6dd9b264",
- "amount": "10.00",
- "total": "10.00",
- "fee": "0.0000000",
- "asset": "USD",
- "balance_asset": "USD",
- "direction": "DEBIT",
- "type": "CUBIX_WITHDRAWAL",
- "status": "PENDING",
- "created_at": "2023-07-13T18:36:08.737Z",
- "updated_at": "2023-07-13T18:36:08.737Z",
- "fiat_account_id": "caa82b32-8abd-4899-afdc-f9d4bf9b4e98"
}
List Deposit Addresses
List all deposit addresses, optionally filtering and paging the results.
Authorizations:
query Parameters
profile_ids | Array of strings Optionally filter by the profile IDs associated with the deposit addresses. Limit 100. |
identity_ids | Array of strings Optionally filter by the Identities associated with the deposit addresses. Limit 100. |
ids | Array of strings Optionally filter by the UUIDs of the deposit addresses. Limit 100. |
ref_ids | Array of strings The client-specified IDs provided during transfer creation. Limit 100. |
created_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
created_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
created_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
created_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
created_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
limit | integer <int32> Number of results to return. Defaults to 100 if no limit is provided. Maximum 1000. |
order | string Enum: "DESC" "ASC" Return items in ascending (ASC) or descending (DESC) order. Defaults to DESC. |
order_by | string Value: "CREATED_AT" The specific method by which the returned results will be ordered. |
page_cursor | string Optional: Cursor for getting the next page of results. |
account_ids | Array of strings Optionally filter by the Accounts associated with the deposit address. Limit 100. |
Responses
Response samples
- 200
{- "items": [
- {
- "id": "34bd61ed-cf0a-4012-8be4-d347667b6154",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339",
- "identity_id": "54385e67-d7ef-40d1-b488-ceda6dd9b264",
- "ref_id": "deposit_address_0",
- "crypto_network": "ETHEREUM",
- "address": "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7",
- "conversion_target_asset": "USD",
- "compatible_crypto_networks": [
- "ETHEREUM"
], - "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
], - "next_page_cursor": "string"
}
Create Deposit Address
Create a deposit address on a blockchain network for depositing to a profile.
Authorizations:
Request Body schema: application/json
profile_id required | string The target profile for deposit crediting. |
crypto_network required | string (CryptoNetwork) Enum: "BITCOIN" "ETHEREUM" "BITCOIN_CASH" "LITECOIN" "SOLANA" "POLYGON_POS" "ARBITRUM_ONE" A CryptoNetwork is a blockchain transmitting cryptocurrencies. |
identity_id | string The Identity of the end user who will make deposits to the created address. |
ref_id | string Client-specified ID for replay protection and lookup. |
object Optional client-specified metadata, which will be added to both the deposit address itself and transfers to the created address. Up to 6 key/value pairs may be provided. Each key and value must be less than or equal to 100 characters. | |
account_id | string The Account associated to the identity of the user that will be linked to the created address. |
conversion_target_asset | string (DepositAddressConversionTargetAsset) Enum: "NO_CONVERSION" "USD" Asset to credit for deposits of Paxos-minted USD stablecoin. |
Responses
Request samples
- Payload
{- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "crypto_network": "ETHEREUM",
- "identity_id": "54385e67-d7ef-40d1-b488-ceda6dd9b264",
- "ref_id": "deposit_address_0",
- "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
Response samples
- 200
- 409
{- "id": "34bd61ed-cf0a-4012-8be4-d347667b6154",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339",
- "identity_id": "54385e67-d7ef-40d1-b488-ceda6dd9b264",
- "ref_id": "deposit_address_0",
- "crypto_network": "ETHEREUM",
- "address": "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7",
- "conversion_target_asset": "USD",
- "compatible_crypto_networks": [
- "ETHEREUM"
], - "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
For Paxos Global PTE Ltd users, update or reject a crypto deposit that does not contain the required travel rule information.
Deposits with the NEEDS_INFO
status require additional sender information before they can be processed.
- For individuals, both first and last name are required.
- For institutions, the institution name is required.
If a deposit is rejected, the funds will no longer be available.
Reject Crypto Deposit
Reject a crypto deposit which is waiting for required travel rule information about the originator address.
If the rejected deposit has any status other than NEEDS_INFO
, the request will return an error.
Only the creator of the crypto deposit can reject it.
Authorizations:
path Parameters
id required | string Paxos ID of the crypto deposit to reject. To retrieve the ID, log in to your Paxos account and go to the Activity tab. Download the CSV activity file and check the ID column. |
Request Body schema: application/json
identity_id required | string The Identity ( |
Responses
Request samples
- Payload
{- "identity_id": "54385e67-d7ef-40d1-b488-ceda6dd9b264"
}
Response samples
- 200
- 400
- 404
- 409
{ }
Update Crypto Deposit
Crypto deposits that do not meet the minimum travel rule requirements are blocked. To update a crypto deposit, provide the required travel rule information about the originator address.
Authorizations:
path Parameters
id required | string Paxos ID of the crypto deposit to update. To retrieve the ID, log in to your Paxos account and go to the Activity tab. Download the CSV activity file and check the ID column. |
Request Body schema: application/json
identity_id required | string The Identity ( |
required | object (AddressInfo) |
Responses
Request samples
- Payload
{- "identity_id": "54385e67-d7ef-40d1-b488-ceda6dd9b264",
- "originator_address_info": {
- "first_name": "John",
- "last_name": "Doe"
}
}
Response samples
- 200
- 400
- 404
- 409
{ }
Create Crypto Withdrawal
Withdraw a cryptocurrency asset to a specified destination address.
Authorizations:
Request Body schema: application/json
ref_id | string Client-specified ID for replay protection and lookup. |
profile_id required | string The profile from which to withdraw. |
identity_id | string The Identity of the user making the withdrawal. |
destination_address required | string The destination address. |
asset required | string The asset to withdraw, e.g. "BTC" , "ETH". Always specify the |
balance_asset | string The asset's balance to debit for withdrawals of Paxos-minted USD stablecoin. |
object Optional client-specified metadata. Up to 6 key/value pairs may be provided. Each key and value must be less than or equal to 100 characters. | |
account_id | string The Account associated to the identity of the user making the withdrawal. |
fee_id | string Optional id of the guaranteed fee. |
crypto_network required | string (CryptoNetwork) Enum: "BITCOIN" "ETHEREUM" "BITCOIN_CASH" "LITECOIN" "SOLANA" "POLYGON_POS" "ARBITRUM_ONE" A CryptoNetwork is a blockchain transmitting cryptocurrencies. |
amount | string^[0-9]*\.?[0-9]+$ The amount to withdraw.
Specify exactly one of |
total | string^[0-9]*\.?[0-9]+$ Total amount to withdraw, including fees.
Specify exactly one of |
object (Beneficiary) |
Responses
Request samples
- Payload
{- "ref_id": "idempotence_id",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "asset": "BTC",
- "amount": "0.05",
- "destination_address": "1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2",
- "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}, - "crypto_network": "BITCOIN"
}
Response samples
- 200
- 403
- 404
- 409
{- "id": "373b7966-4290-4be3-a604-51929173437b",
- "customer_id": "72b2b4e6-d395-43d2-9b09-690fa6c1a664",
- "profile_id": "1db50793-0a22-4d2a-8696-66fc4fd8e360",
- "ref_id": "ABCZYX123",
- "amount": "0.001",
- "total": "0.00100223",
- "fee": "0.00000223",
- "asset": "BTC",
- "balance_asset": "BTC",
- "direction": "DEBIT",
- "type": "CRYPTO_WITHDRAWAL",
- "status": "PENDING",
- "created_at": "2022-06-14T15:19:20.034294Z",
- "updated_at": "2022-06-14T15:19:20.034294Z",
- "destination_address": "1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2",
- "crypto_network": "BITCOIN",
- "auto_conversion": { }
}
Create Crypto Withdrawal Fee
Get a guaranteed fee for the given currency, valid for a period of time.
Specify exactly one of amount
or total
, otherwise an error is returned.
The Create Crypto Withdrawal request that uses the guaranteed fee endpoint
must specify an amount
less than or equal to the guaranteed fee amount
, otherwise the withdrawal is rejected.
Authorizations:
Request Body schema: application/json
asset required | string The currency to withdraw. |
destination_address required | string The destination address. |
crypto_network required | string (CryptoNetwork) Enum: "BITCOIN" "ETHEREUM" "BITCOIN_CASH" "LITECOIN" "SOLANA" "POLYGON_POS" "ARBITRUM_ONE" A CryptoNetwork is a blockchain transmitting cryptocurrencies. |
amount | string^[0-9]*\.?[0-9]+$ The amount to withdraw. Must be greater than |
total | string^[0-9]*\.?[0-9]+$ Total amount to withdraw, including fees. Must be greater than |
Responses
Request samples
- Payload
{- "asset": "ETH",
- "amount": "0.00005",
- "destination_address": "0xF0Aa84466e353E5390be37FE2934301c07c19a55",
- "crypto_network": "ETHEREUM"
}
Response samples
- 200
{- "id": "34bd61ed-cf0a-4012-8be4-d347667b6154",
- "fee": "0.00005",
- "asset": "ETH",
- "amount": "0.001",
- "expires_at": "2021-02-10T23:00:00Z",
- "destination_address": "0xF0Aa84466e353E5390be37FE2934301c07c19a55",
- "crypto_network": "ETHEREUM"
}
Create Internal Transfer
Transfer assets between two profiles belonging to the same customer.
Authorizations:
Request Body schema: application/json
ref_id | string Client-specified ID for replay protection and lookup. |
from_profile_id required | string The profile from which to send funds. |
to_profile_id required | string The destination profile. |
amount required | string^[0-9]*\.?[0-9]+$ The amount to transfer. |
asset required | string The asset to transfer, e.g. "USD", "BTC", "ETH". |
object Optional client-specified metadata. Up to 6 key/value pairs may be provided. Each key and value must be less than or equal to 100 characters. |
Responses
Request samples
- Payload
{- "ref_id": "idempotence_id",
- "from_profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "to_profile_id": "37867177-f88c-45cc-b9b5-d786e7079609",
- "asset": "BTC",
- "amount": "0.05",
- "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}
}
Response samples
- 200
- 403
- 404
- 409
{- "amount": "10",
- "asset": "BTC",
- "auto_conversion": { },
- "balance_asset": "BTC",
- "created_at": "2022-04-28T22:07:56.436854Z",
- "customer_id": "66325f47-455d-4e0c-9d38-70c047b41dbe",
- "direction": "DEBIT",
- "fee": "0",
- "id": "5ab7e995-5589-4b3f-a333-c14b42ac6eaf",
- "metadata": {
- "my_id": "TEST-v2-Profile-transfer-428169"
}, - "profile_id": "0acfa5a6-6f2e-41af-a833-48e301197ffd",
- "ref_id": "TEST-v2-profile-transfer-ref_id-428169",
- "status": "PENDING",
- "total": "10",
- "type": "INTERNAL_TRANSFER_DEBIT",
- "group_id": "55e98066-d9ad-483b-9f10-d3aa252ebbe3"
}
Move assets between two Entities belonging to the same Organization or to a different Organization on the Paxos platform.
Transferring USD between Entities is prohibited in some jurisdictions. Contact Support if you run into any problems with this restriction.
Ensure the destination Profile already exists before beginning the transfer. This may require contacting someone outside your Organization to get the destination Profile ID.
Create Paxos Transfer
Transfer assets between two Profiles belonging to different Entities.
Authorizations:
Request Body schema: application/json
ref_id | string Client-specified ID for replay protection and lookup. |
from_profile_id required | string The profile from which to send funds. |
to_profile_id required | string The destination profile. |
amount required | string The amount to transfer. |
asset required | string The asset to transfer, e.g. "USD", "BTC", "ETH". |
object Optional client-specified metadata on the sender side of the transaction. Up to 6 key/value pairs may be provided. Each key and value must be less than or equal to 100 characters. | |
object Optional client-specified metadata for the recipient side of the transaction. Up to 6 key/value pairs may be provided. Each key and value must be less than or equal to 100 characters. |
Responses
Request samples
- Payload
{- "ref_id": "idempotence_id",
- "from_profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "to_profile_id": "37867177-f88c-45cc-b9b5-d786e7079609",
- "asset": "BTC",
- "amount": "0.05",
- "metadata": {
- "my_id": "4024ee50-eefb-4f2e-85c7-e7899c0b7da5"
}, - "recipient_metadata": {
- "your_id": "43ab8d28-be1e-4729-8731-37fd976b167b"
}
}
Response samples
- 200
- 403
- 404
- 409
{- "amount": "0.03",
- "asset": "USDP",
- "auto_conversion": { },
- "balance_asset": "USDP",
- "created_at": "2024-12-11T17:45:14.423911Z",
- "customer_id": "be05ac89-d1dc-4be7-b64e-a003012e9359",
- "direction": "DEBIT",
- "fee": "0",
- "group_id": "b7b6cde7-9053-47e7-bbc0-22d5fa4344ef",
- "id": "fe6bc170-a5be-43ff-bf5b-63c8b6489597",
- "profile_id": "e6b30762-0689-46fa-b208-35eb347e284c",
- "ref_id": "92528c72-4962-4d14-ae4d-6b262df698b2",
- "status": "COMPLETED",
- "total": "0.03",
- "type": "PAXOS_TRANSFER_DEBIT",
- "updated_at": "2024-12-11T17:45:14.479258Z"
}
List Transfer Limits
List all limits that apply to the given transaction type.
Authorizations:
query Parameters
transfer_type required | string Enum: "INTERNAL_TRANSFER_DEBIT" "INTERNAL_TRANSFER_CREDIT" "CRYPTO_DEPOSIT" "CRYPTO_WITHDRAWAL" "WIRE_DEPOSIT" "WIRE_WITHDRAWAL" "SEN_DEPOSIT" "SEN_WITHDRAWAL" "BANK_DEPOSIT" "BANK_WITHDRAWAL" "PAXOS_TRANSFER_DEBIT" "PAXOS_TRANSFER_CREDIT" "SIGNET_DEPOSIT" "SIGNET_WITHDRAWAL" "CBIT_WITHDRAWAL" "CBIT_DEPOSIT" "CUBIX_DEPOSIT" "CUBIX_WITHDRAWAL" Type of transfer to fetch limits for. |
Responses
Response samples
- 200
{- "items": [
- {
- "id": "string",
- "rule_id": "string",
- "transfer_types": [
- "INTERNAL_TRANSFER_DEBIT"
], - "period_seconds": "string",
- "limit": "string",
- "remaining": "string",
- "limit_asset": "string"
}
], - "next_page_cursor": "string"
}
An Identity represents an individual person or institution entity with funds held in custody by Paxos, either directly or indirectly. To fully onboard an individual to Paxos, There are 2 key features that are both necessary : id verification and sanctions screening. Whereas to onboard an institution to Paxos, sanctions screening along with some additional documents must be submitted and then our compliance team will review the information and approve the identity if it is verified.
The Identity API enables you to create and update the details associated with an identity on the Paxos platform. You can also use it to monitor the approval status of an identity to understand when they are cleared to transact.
List Identities
This endpoint enables you to fetch a list of identities that you have created within the Paxos platform. You can use query parameters to filter the results returned by:
- Summary Status of the Identity
- Date created
- Date updated
Note that this endpoint supports pagination and returns a cursor token for fetching next pages.
Authorizations:
query Parameters
summary_status | string Enum: "PENDING" "ERROR" "APPROVED" "DENIED" "DISABLED" Summary Status of the Identity. |
created_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
created_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
created_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
created_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
created_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
updated_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
updated_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
updated_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
updated_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
updated_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
limit | integer <int32> Number of results to return. |
order | string Enum: "DESC" "ASC" Return items in ascending (ASC) or descending (DESC) order. Defaults to DESC. |
order_by | string Value: "CREATED_AT" The specific method by which the returned results will be ordered. |
page_cursor | string Cursor token for fetching the next page. |
identity_type | string Enum: "PERSON" "INSTITUTION" Optionally filter by Identity type |
Responses
Response samples
- 200
{- "next_page_cursor": "string",
- "items": [
- {
- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "summary_status": "PENDING"
}
]
}
Create Identity
This enables you to create a new identity within the Paxos platform. Depending upon the fields provided, the identity will either be person or an institution.
A successful response indicates that the identity has been created. This does not mean that it has already been processed. You can use the unique ID returned within the response to check the approval status of the identity.
Create Person Identity
The Person identity type is used to represent individuals on the platform. Attributes of the Person identity type are recorded in the person_details field.
Note that fields not listed below are forbidden in this request.
Field | Notes |
---|---|
person_details | Required |
metadata | Optional |
tax_details | Optional |
ref_id | Optional |
For US based identities, if the tax_details
attribute is empty, it will be backfilled with the cip_id
and cip_id_country
fields from the person_details
attribute.
For international identities, the tax_details
attribute must be present.
Currently both JUMIO
or PASSTHROUGH
are supported for verification, but only JUMIO
is enabled by default.
Automatic ID Verification with Jumio
To use Jumio, you must submit the fields listed below as part of the person_details
attribute in your request.
Field | Notes |
---|---|
person_details.verifier_type | Required. Must be JUMIO |
person_details.verifier_id | Required |
person_details.address | Required |
Please note that when using this method:
- You must ensure that the identity has already been validated by Jumio before submitting the identity to Paxos.
- You must have previously set the API credentials for Jumio access.
Paxos will compare the provided information with the information returned from the Jumio API.
In the event that there is a conflict between the submitted data and the data returned from the identity provider, the information from the identity provider will be preferred.
Example Request
{
"person_details": {
"verifier_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
"verifier_type": "JUMIO",
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "1980-01-01",
"cip_id": "111-11-1111",
"cip_id_type": "SSN",
"cip_id_country": "USA",
"nationality": "USA",
"profession": "Engineer",
"country_of_birth": "USA",
"address": {
"country": "USA",
"address1": "1 Example St",
"city": "New York",
"province": "NY",
"zip_code": "10001"
},
"ref_id": "33ece656-eef1-43b5-a851-b6b9099089a5"
}
}
Automatic ID Verification with Passthrough
To use Passthrough, Paxos Compliance must first confirm your eligibility.
Once confirmed, you can submit the fields listed below as part of the the person_details
attribute in your request.
Field | Notes |
---|---|
person_details.verifier_type | Required. Must be PASSTHROUGH |
person_details.passthrough_verifier_type | Required. Specifies the ID Verification provider you originally used |
person_details.passthrough_verified_at | Required |
person_details.passthrough_verification_id | Unique identifier for the underlying individual's ID verification record. |
person_details.passthrough_verification_status | Status of the ID verification indicating whether the identity was approved or denied. |
person_details.passthrough_verification_fields | List of verification fields used by the external verifier to validate the individual's identity. |
person_details.address | Required |
Note that the following field is forbidden in the request:
person_details.verifier_id
Example Request
{
"person_details": {
"verifier_type": "PASSTHROUGH",
"passthrough_verifier_type": "JUMIO",
"passthrough_verified_at": "2021-06-16T09:28:14Z",
"passthrough_verification_id": "775300ef-4edb-47b9-8ec4-f45fe3cbf41f",
"passthrough_verification_status": "APPROVED",
"passthrough_verification_fields": ["FULL_LEGAL_NAME", "DATE_OF_BIRTH"]
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "1980-01-01",
"cip_id_type": "SSN",
"cip_id": "111-11-1111",
"cip_id_country": "USA",
"nationality": "USA",
"profession": "Engineer",
"country_of_birth": "USA",
"address": {
"country": "USA",
"address1": "1 Example St",
"city": "New York",
"province": "NY",
"zip_code": "10001"
},
"ref_id": "33ece656-eef1-43b5-a851-b6b9099089a5"
}
}
Create Institution Identity
Institution identities are used to represent all non-person entities.
Details for institution identity type are recorded in institution_details
. An institution identity also has institution_members
associated with it. This defines persons or other entities that have some relationship to the institution.
We support the following types and sub-types of institutions. Note that all institution types listed do share some common validations that can also be found below.
Supported Institution Types
institution_type | Supported institution_member roles | Notes |
---|---|---|
TRUST |
BENEFICIAL_OWNER BENEFICIARY GRANTOR TRUSTEE |
See Trusts |
CORPORATION LLC PARTNERSHIP |
ACCOUNT_OPENER AUTHORIZED_USER BENEFICIAL_OWNER MANAGEMENT_CONTROL_PERSON |
See other Institutions |
Industry Type to Institution Subtypes Mapping
institution_sub_type | industry |
---|---|
ACCOMMODATION_FOOD_SERVICES |
Food or Beverage Services |
ADMINISTRATIVE_SUPPORT_WASTE_MANAGEMENT_REMEDIATION_SERVICES |
Administrative and Support Services |
ADULT_ENTERTAINMENT |
Adult Entertainment / Pornography |
AGRICULTURE_FORESTRY_FISHING_HUNTING |
Agriculture |
ARTS_ENTERTAINMENT_RECREATION |
Arts, Entertainment, and Recreation |
AUCTIONS |
Auction Houses / Art Galleries |
AUTOMOBILES |
Automobiles / Automotives |
BLOCKCHAIN |
Blockchain Technology |
CONSTRUCTION |
Construction |
CRYPTO |
Crypto Services and Products (Mining, Exchange, Broker) |
DRUGS |
Illicit Drugs / Drug Paraphernalia |
E_COMMERCE |
E-Commerce |
EDUCATIONAL_SERVICES |
Educational Services |
EXPORT_IMPORT |
Export / Import Companies |
FINANCE_INSURANCE |
Other Financial & Insurance Services (Not Referenced Elsewhere) |
FINANCIAL_INSTITUTION |
Financial Institution |
GAMBLING |
Gaming, Gambling, Casinos, or Sports Betting |
HEALTH_CARE_SOCIAL_ASSISTANCE |
Health Care and Social Assistance |
HEDGE_FUND |
Pooled Investment Vehicle / Investment Fund / Hedge Fund |
INFORMATION |
Information, Communications, and Media |
INSURANCE |
Insurance |
INVESTMENT |
Investment |
MANAGEMENT_OF_COMPANIES_ENTERPRISES |
Management of Companies & Enterprises (Holding Companies) |
MANUFACTURING |
Manufacturing |
MARKET_MAKER |
Market Maker / Proprietary Trading |
MINING |
Oil & Gas |
MONEY_SERVICE_BUSINESS |
Money Services Business / Money Transmitters (including ATMs) |
NON_PROFIT |
Non-Profit, Charity or Political Organizations |
OTHER_SERVICES |
Other |
PRECIOUS_METALS |
Jewelry or Precious Metals (Mining, Transportation, Dealing or Retail) |
PROFESSIONAL_SCIENTIFIC_TECHNICAL_SERVICES |
Professional Services (Consulting, Legal, Accounting, etc.) |
PUBLIC_ADMINISTRATION |
Public or Government Services |
RANSOMWARE |
Ransomware / Facilitators of Ransomware Transactions |
REAL_ESTATE_RENTAL_LEASING |
Real Estate and Rental and Leasing |
REGISTERED_INVESTMENT_ADVISOR |
Registered Investment Advisor |
RETAIL_TRADE |
Retail Trade |
SHELL_BANK |
Shell Banks or Shell Companies |
STO_ISSUER |
Security Token Offering (STO) Issuer |
TRANSPORTATION_WAREHOUSING |
Transportation and Services |
TRAVEL_TRANSPORT |
Travel, Accomodation or Transport |
UTILITIES |
Utilities |
WEAPONS |
Weapons or Arms (Manufacturing, Sales or Transportation) |
WHOLESALE_TRADE |
Wholesale Trade |
Notes:
INVESTMENT
is only supported by the institution typeTRUST
.- All other subtypes are only supported by types
CORPORATION
,LLC
andPARTNERSHIP
.
Prohibited Institution Subtypes
Paxos prohibits certain types of business activity (“Prohibited Businesses”) in accordance with its Compliance policies. The following non-exhaustive list is representative of the type of activity that Paxos prohibits on its platform. By creating a Paxos Identity, Paxos customers agree not to use Paxos services in connection with any of the following Prohibited Businesses.
ADULT_ENTERTAINMENT
DRUGS
RANSOMWARE
SHELL_BANK
WEAPONS
Shared Validations Across All Institution Types
Field | Notes |
---|---|
cip_id | One of EIN, REGISTRATION_NUMBER, SSN, ITIN. SSN and ITIN are only supported for passthrough/revocable entities. |
tax_details | Automatically populated if the cip_id_type is SSN, ITIN or EIN. |
tax_details_not_required | Can be set for non-US institutions where tax details are not required. |
metadata | Optional |
ref_id | Optional |
Specifying Institution Members and Their Roles
Field | Notes |
---|---|
identity_id | Required |
roles | Required. |
ownership | Optional. Must be between 0 and 100 |
position | Optional |
Note See supported institution types for details on which roles are supported by which institution type.
Fields Required for Trusts
Type | Fields |
---|---|
Required | name, cip_id, cip_id_type, cip_id_country, institution_type, institution_sub_type, business_address, govt_registration_date |
Optional | phone_number, email, incorporation_address, regulation_status, trading_type, listed_exchange, ticker_symbol, parent_institution_name, regulator_jurisdiction, regulator_name, regulator_register_number |
Notes
Fields not listed are forbidden in the request. institution_type
must be set to TRUST. institution_sub_type
must be set to Investment.
incorporation_address
is required for Trusts where their cip_id_type is not SSN or ITIN.
Example Request for a Trust
{
"institution_members": [{
"identity_id": "33ece656-eef1-43b5-a851-b6b9099089a5",
"roles": ["GRANTOR"]
},
{
"identity_id": "44ece656-eef1-43b5-a851-b6b9099089a6",
"roles": ["TRUSTEE"]
}],
"institution_details": {
"name": "Trust A",
"business_address": {
"country": "United States",
"address1": "1 Example St",
"city": "New York",
"province": "NY",
"zip_code": "10001"
},
"email": "institution_a@acorp.com",
"institution_type": "CORPORATION",
"institution_sub_type": "HEDGE_FUND",
"cip_id": "11-1111111",
"cip_id_type": "EIN",
"cip_id_country": "USA",
"govt_registration_date": "2021-04-14T00:00:00Z",
"incorporation_address": {
"country": "United States",
"address1": "1 Example St",
"city": "New York",
"province": "NY",
"zip_code": "10001"
},
"regulation_status": "US_REGULATED",
"trading_type": "PUBLIC",
"listed_exchange": "NASDAQ",
"ticker_symbol": "ABC",
"regulator_name": "SEC",
"regulator_jurisdiction": "USA",
"regulator_register_number": "111-111111"
}
}
Fields Required for Institutions (excluding Trusts and Registered Investment Advisors)
Type | Fields |
---|---|
Required | name, cip_id, cip_id_type, cip_id_country, institution_type, institution_sub_type, business_address, incorporation_address, govt_registration_date, regulation_status, trading_type |
Optional | phone_number, email, listed_exchange, ticker_symbol, parent_institution_name, regulator_jurisdiction, regulator_name, regulator_register_number |
Creating Financially Regulated Institutions
Please refer to the following table for creating institutions which are financially regulated.
regulation_status | Notes |
---|---|
US_REGULATED | Institution financially regulated in the US |
INTL_REGULATED | Institution financially regulated by an international entity |
NON_REGULATED | Non-financially regulated institution |
Note that each category of regulation_status
then has additional validations tied to trading type
and other required fields.
regulation_status | trading_type | fields required | Notes |
---|---|---|---|
US_REGULATED | PRIVATE | regulator_name, regulator_jurisdiction, regulator_register_number | Not publicly traded |
US_REGULATED | PUBLIC | listed_ exchange, ticker_symbol, regulator_name, regulator_jurisdiction, regulator_register_number | Publicly traded |
US_REGULATED | PUBLICLY_TRADED_SUBSIDIARY | listed_exchange, ticker_symbol, regulator_name, regulator_jurisdiction, regulator_register_number, parent_institution_name | Subsidiary of a publicly traded company |
INTL_REGULATED | PRIVATE | regulator_name, regulator_jurisdiction, regulator_register_number | Not publicly traded |
INTL_REGULATED | PUBLIC | listed_ exchange, ticker_symbol, regulator_name, regulator_jurisdiction, regulator_register_number | Publicly traded |
INTL_REGULATED | PUBLICLY_TRADED_SUBSIDIARY | listed_exchange, ticker_symbol, regulator_name, regulator_jurisdiction, regulator_register_number, parent_institution_name | Subsidiary of a publicly traded company |
NON_REGULATED | PRIVATE | PRIVATE | Not publicly traded |
NON_REGULATED | PUBLIC | listed_exchange, ticker_symbol | Publicly traded |
Fields required for Registered Investment Advisors (RIA)
RIAs are a special sub-type of Institution. Usage of this sub-type requires prior authorization and approval from Paxos.
Notes
institution_sub_type
must be set to REGISTERED_INVESTMENT_ADVISOR. The list of required and optional fields below varies slightly from other supported institutions
while certain fields are optional (e.g. trading_type), if they are specified in the request, their input will been validated
Type | Fields |
---|---|
Required | name, cip_id, cip_id_type, cip_id_country, institution_type, institution_sub_type, business_address, regulation_status, regulator_jurisdiction, regulator_name, regulator_register_number |
Optional | phone_number, email, listed_exchange, ticker_symbol, parent_institution_name, incorporation_address, govt_registration_date, trading_type |
Authorizations:
Request Body schema: application/json
object (PersonDetails) | |
object (API User-facing metadata) | |
ref_id | string A user-facing ID to prevent duplicate identity creation. Unique for all identities created by the same API user. |
object (InstitutionDetails) | |
Array of objects (Institution members if identity type is institution) | |
Array of objects (TaxDetail) List of tax details associated with the identity. Must be set if tax_details_not_required is false or not set. | |
tax_details_not_required | boolean Set to true if tax details are not legally required. |
object (CustomerDueDiligence) | |
is_merchant | boolean Set to true to indicate that this identity is a merchant. |
Responses
Request samples
- Payload
{- "person_details": {
- "verifier_type": "PASSTHROUGH",
- "passthrough_verifier_type": "JUMIO",
- "passthrough_verified_at": "2021-06-16T09:28:14Z",
- "first_name": "John",
- "last_name": "Doe",
- "date_of_birth": "1980-01-01",
- "phone_number": "+1 555 678 1234",
- "email": "example@somemail.org",
- "cip_id": "111-11-1234",
- "cip_id_type": "SSN",
- "cip_id_country": "USA",
- "nationality": "USA",
- "address": {
- "country": "USA",
- "address1": "1 Example St",
- "city": "New York",
- "province": "NY",
- "zip_code": "10001"
}, - "metadata": {
- "custom_property1": "custom value 1",
- "custom_property2": "custom value 2"
}
}, - "ref_id": "33ece656-eef1-43b5-a851-b6b9099089a5"
}
Response samples
- 200
- 409
{- "created_at": "2022-02-15T05:46:50.957068Z",
- "id": "36ae1728-c54a-4046-86df-8a413e0ab9b3",
- "person_details": {
- "additional_screening_status": "PENDING",
- "address": {
- "address1": "1 Example St",
- "city": "New York",
- "country": "USA",
- "province": "NY",
- "zip_code": "10001"
}, - "cip_id": "111-11-1234",
- "cip_id_country": "USA",
- "cip_id_type": "SSN",
- "date_of_birth": "1980-01-01",
- "first_name": "John",
- "govt_id": "111-11-1234",
- "govt_id_type": "SSN",
- "id_verification_status": "APPROVED",
- "last_name": "Doe",
- "nationality": "USA",
- "passthrough_verified_at": "2021-06-16T09:28:14Z",
- "passthrough_verifier_type'": "JUMIO",
- "sanctions_verification_status": "PENDING",
- "verifier_type": "PASSTHROUGH"
}, - "ref_id": "33ece656-eef1-43b5-a851-b6b9099089a5",
- "summary_status": "PENDING",
- "tax_details": [
- {
- "tax_payer_country": "USA",
- "tax_payer_id": "111-11-1234"
}
], - "type": "PERSON",
- "updated_at": "2022-02-15T05:46:50.957068Z"
}
Get Identity
Get an identity by ID. By default, the identity details (person_details or institution_details) will not be returned.
Set ?include_details=true
to receive them in the response. For institution type identities,
members will not be returned in the default response. Set ?include_institution_members=true
to get the members.
An identity is allowed to transact on the Paxos platform when summary_status
is "APPROVED"
.
Authorizations:
path Parameters
id required | string id associated with the identity |
query Parameters
include_details | boolean query param; details are encrypted, so we do not want to include them by default |
include_institution_members | boolean query param; to include institution members for institution identity |
Responses
Response samples
- 200
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "summary_status": "PENDING"
}
Update Identity
This enables you to update an existing identity with new information. Please note that:
- Updating any field other than
set_user_disabled
,metadata
,ref_id
, oris_merchant
will transition the identity to a PENDING status. This will restrict the identity until it has been re-verified. - Setting
set_user_disabled
totrue
will disable the identity, limiting its ability to be used within the Paxos platform. - Setting
is_merchant
totrue
will indicate that this identity is a merchant. - Details of the identity can be updated by providing
person_details
orinstitution_details
depending upon the type. - You can add, update or remove tax_details by providing the
tax_details
list. The tax_details will be updated to exactly comprise the given list
Note: Identity conversion from person to institution type or vice-versa is not permitted.
Authorizations:
path Parameters
id required | string |
Request Body schema: application/json
object (PersonDetails) | |
object (API User-facing metadata) | |
set_user_disabled | boolean
|
object (InstitutionDetails) | |
ref_id | string A user-facing ID to prevent duplicate identity creation. Unique for all identities created by the same API user. |
Array of objects (list of tax details associated with the identity) | |
set_tax_details_not_required | boolean Set to true if tax details are not legally required. |
object (CustomerDueDiligence) | |
is_merchant | boolean Set to true to indicate that this identity is a merchant. |
Responses
Request samples
- Payload
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "person_details": {
- "first_name": "John"
}
}
Response samples
- 200
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "summary_status": "PENDING"
}
An institution identity can have one or more institution members. Each institution member references a single identity.
Institution members are effectively immutable. In order to update properties of an existing member, clients should remove the existing member and add a new member with the desired state.
To use this API, clients must have write access to the institution and all identities given membership. Otherwise, a client error is returned.
Add Institution Members
Add one or more institution members to a given institution.
Adding new members doesn't affect existing members. For example, if an institution has three members, and adds two members using this API, then the institution would end up with five total members.
For details on the properties that can be specified when creating institution members, see Specifying Institution Members and Their Roles.
Authorizations:
Request Body schema: application/json
institution_id required | string ID of institution identity to which members will be added. |
required | Array of objects (InstitutionMember) A non-empty array of institution members to be added. |
Responses
Request samples
- Payload
{- "institution_id": "2908fa8b-427a-4089-b2cf-17654c604623",
- "members": [
- {
- "identity_id": "31abdcbd-2801-4dbc-8986-adec3828391b",
- "roles": [
- "GRANTOR"
]
}, - {
- "identity_id": "58def33e-b68f-47d3-bc2b-62b1f68f21e5",
- "roles": [
- "TRUSTEE"
]
}
]
}
Response samples
- 200
{- "institution_id": "2908fa8b-427a-4089-b2cf-17654c604623",
- "members": [
- {
- "identity_id": "31abdcbd-2801-4dbc-8986-adec3828391b",
- "roles": [
- "GRANTOR"
], - "id": "23ebbcd3-0fe6-48c8-9a2c-a35572b0e8ba"
}, - {
- "identity_id": "58def33e-b68f-47d3-bc2b-62b1f68f21e5",
- "roles": [
- "TRUSTEE"
], - "id": "a0a0d270-0dd1-40b7-85ce-de713c47bcec"
}
]
}
Retry Id Verification
This endpoint enables you to retry the ID verification for an identity with verifier type PAXOS by setting the id verification status to PENDING and returning a new id verification URL.
Authorizations:
path Parameters
id required | string id associated with the identity |
Request Body schema: application/json
Responses
Request samples
- Payload
{ }
Response samples
- 200
{- "url": "string"
}
Set Verifier Credentials
Set the credentials used for automatic verification with a supported identity provider. This applies for only
PERSON
type identities.
Supported Identity Providers
Provider | verifier_type | Verifier Scope |
---|---|---|
Jumio | JUMIO | Retrieve & Delete |
Authorizations:
Request Body schema: application/json
verifier_type required | string (identityprotoVerifierType) Enum: "JUMIO" "PAXOS" "PASSTHROUGH" "MANUAL" |
auth_token | string |
auth_secret | string |
Responses
Request samples
- Payload
{- "verifier_type": "JUMIO",
- "auth_token": "AUTHTOKEN",
- "auth_secret": "AUTHSECRET"
}
Response samples
- 200
{ }
An identity can have one or more Accounts on the Paxos platform. Accounts maintain additional context, such as tax status and can also be used to represent Joint Accounts where more than one identity has access or control over transaction activity.
List Accounts
List accounts with pagination. Every response will contain a next_page
field,
as long as the end of the list has not been reached. Pass this value into the page_cursor
field of the next request
to retrieve the next page of results.
Authorizations:
query Parameters
page_cursor | string |
order | string Enum: "DESC" "ASC" Return items in ascending (ASC) or descending (DESC) order. Defaults to DESC. |
order_by | string Value: "CREATED_AT" The specific method by which the returned results will be ordered. |
limit | integer <int32> Number of results to return. |
created_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
created_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
created_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
created_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
created_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
identity_id | string Optionally filter by primary identity identity. |
updated_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
updated_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
updated_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
updated_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
updated_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
Responses
Response samples
- 200
{- "next_page_cursor": "string",
- "items": [
- {
- "id": "string",
- "identity_id": "string",
- "description": "string",
- "admin_disabled": true,
- "user_disabled": true,
- "metadata": {
- "property1": "string",
- "property2": "string"
}, - "ref_id": "string",
- "members": [
- {
- "identity_id": "string",
- "type": "BENEFICIAL_OWNER",
- "roles": [
- "BENEFICIAL_OWNER"
], - "id": "string"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "summary_status": "PENDING",
- "updated_at": "2019-08-24T14:15:22Z",
- "profile_id": "string",
- "type": "BROKERAGE"
}
]
}
Create Account
Create an account for a given identity, via the identity_id
field.
This identity is the primary owner of the account for all tax-related purposes.
To track user balances using Paxos Profiles, use create_profile=true
when creating the account.
Once an account has been created, it is not possible to associate it with a Profile.
Account Members
In addition to the primary owner, other identities may be associated with the account, by using members
.
The identity on the account is treated as a BENEFICIAL_OWNER.
To add a financial advisor to an account, add a member with the FINANCIAL_ADVISOR role.
Example
This example request creates a joint account for John and Jane Doe. John has identity_id=82c338f4-3cb7-4d9b-be2a-4b077c82ee3a, and Jane has identity_id=0f5d8475-33f3-4ebd-88a0-66dedc2581c1. John is the primary owner of the account for tax-purposes, but Jane is a full beneficial owner.
Additionally, this account has an associated financial advisor with identity_id=0d26f878-298e-4d47-81be-cdf4e982a3d3.
{
"account": {
"identity_id": "82c338f4-3cb7-4d9b-be2a-4b077c82ee3a",
"members": [{
"identity_id": "0f5d8475-33f3-4ebd-88a0-66dedc2581c1",
"roles": ["BENEFICIAL_OWNER"]
}, {
"identity_id": "0d26f878-298e-4d47-81be-cdf4e982a3d3",
"roles": ["FINANCIAL_ADVISOR"]
}]
}
}
Fields
Any fields not listed are forbidden in this request.
Field | Notes |
---|---|
identity_id | Required |
description | Optional |
metadata | Optional |
ref_id | Optional |
members | Optional |
Authorizations:
Request Body schema: application/json
required | object (Account) |
create_profile | boolean Create a new profile for this account.
Set to |
Responses
Request samples
- Payload
{- "account": {
- "identity_id": "82c338f4-3cb7-4d9b-be2a-4b077c82ee3a",
- "ref_id": "fec36070-4c23-48ac-9ee1-df338b8233fc",
- "description": "Individual account for John Doe",
- "metadata": {
- "custom_field": "custom_value"
}
}
}
Response samples
- 200
{- "id": "e69e4e31-6dca-4a46-bb85-af40b5fe2d59",
- "identity_id": "82c338f4-3cb7-4d9b-be2a-4b077c82ee3a",
- "ref_id": "fec36070-4c23-48ac-9ee1-df338b8233fc",
- "description": "Individual account for John Doe",
- "metadata": {
- "custom_field": "custom_value"
}, - "admin_disabled": false,
- "user_disabled": false
}
Update Account
This enables you to update an existing account with new information. Please refer to the following table for fields that can be updated via this endpoint.
Field | Notes |
---|---|
account.id | Required |
account.description | Optional |
account.ref_id | Optional |
account.metadata | Optional. This will overwrite any existing metadata added to the account. |
account.members | Optional. The only roles that can be added/removed are FINANCIAL_ADVISOR or AUTHORIZED_USER. You must always specify the full members object as we do not currently support differential member updates. |
set_user_disabled | Optional. Setting this to true will disable the account, limiting its ability to be used within the Paxos platform. |
Example Requests
Disabling an account
{
"set_user_disabled": true,
"account": {
"id": "82c338f4-3cb7-4d9b-be2a-4b077c82ee3a",
"description": "Account Description",
"ref_id": "82c338f4-3cb7",
}
}
Adding an account member
To retain the existing account members and add a new account member, the members
field must contain the existing account members and the
new member. The below example adds an AUTHORIZED_USER
to the account.
In order to add account members while leaving existing account members unaffected, clients should use the Add Account Members API.
{
"account": {
"id": "82c338f4-3cb7-4d9b-be2a-4b077c82ee3a",
"members": [{
"identity_id": "0f5d8475-33f3-4ebd-88a0-66dedc2581c1",
"roles": ["BENEFICIAL_OWNER"]
}, {
"identity_id": "0d26f878-298e-4d47-81be-cdf4e982a3d3",
"roles": ["FINANCIAL_ADVISOR"]
}, {
"identity_id": "012k23eb-298e-4d47-81be-cdf4e982a3d3",
"roles": ["AUTHORIZED_USER"]
}]
}
}
Removing an account member
To remove an existing account member and retain other needed members, the members
field must contain
the existing account members without the account member you'd like to remove. The below example removes an AUTHORIZED_USER
from the account.
Note, this API requires the members
array to have at least one element. In order to delete all members
from an account, clients should use the Delete Account Member API.
{
"account": {
"id": "82c338f4-3cb7-4d9b-be2a-4b077c82ee3a",
"members": [{
"identity_id": "0f5d8475-33f3-4ebd-88a0-66dedc2581c1",
"roles": ["BENEFICIAL_OWNER"]
}]
}
}
Updating an account members' roles
To update an account members' roles, the members
field must contain all the existing members with their roles along
with the additional role that you'd like to add or remove. The below example adds the FINANCIAL_ADVISOR
role to an member that is already a BENEFICIAL_OWNER
.
{
"account": {
"id": "82c338f4-3cb7-4d9b-be2a-4b077c82ee3a",
"members": [{
"identity_id": "0f5d8475-33f3-4ebd-88a0-66dedc2581c1",
"roles": ["BENEFICIAL_OWNER", "FINANCIAL_ADVISOR"]
}]
}
}
Authorizations:
Request Body schema: application/json
required | object (Account) |
set_user_disabled | boolean true if the account is required to be disabled by the API user. |
Responses
Request samples
- Payload
{- "account": {
- "id": "79c27a0e-46a2-4276-9769-e1ebc055fa72",
- "members": [
- {
- "identity_id": "11a3122a-0c50-4950-9934-2ad48a782b78",
- "roles": [
- "FINANCIAL_ADVISOR"
]
}, - {
- "identity_id": "08ba6b70-bcc0-4e4a-a67f-1d28842dedfc",
- "roles": [
- "AUTHORIZED_USER"
]
}, - {
- "identity_id": "2dedfc70-a67f-4e4a-bcc0-1d288408ba6b",
- "roles": [
- "BENEFICIAL_OWNER"
]
}
]
}
}
Response samples
- 200
{- "created_at": "2014-02-20 04:22:22 UTC",
- "id": "79c27a0e-46a2-4276-9769-e1ebc055fa72",
- "identity_id": "0acd56b7-140b-4b29-83e4-7e717f03afd9",
- "members": [
- {
- "identity_id": "11a3122a-0c50-4950-9934-2ad48a782b78",
- "roles": [
- "FINANCIAL_ADVISOR"
]
}, - {
- "identity_id": "08ba6b70-bcc0-4e4a-a67f-1d28842dedfc",
- "roles": [
- "AUTHORIZED_USER"
]
}, - {
- "identity_id": "2dedfc70-a67f-4e4a-bcc0-1d288408ba6b",
- "roles": [
- "BENEFICIAL_OWNER"
]
}
], - "summary_status": "PENDING",
- "updated_at": "2022-02-24 04:20:22 UTC"
}
Response samples
- 200
{- "id": "string",
- "identity_id": "string",
- "description": "string",
- "admin_disabled": true,
- "user_disabled": true,
- "metadata": {
- "property1": "string",
- "property2": "string"
}, - "ref_id": "string",
- "members": [
- {
- "identity_id": "string",
- "type": "BENEFICIAL_OWNER",
- "roles": [
- "BENEFICIAL_OWNER"
], - "id": "string"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "summary_status": "PENDING",
- "updated_at": "2019-08-24T14:15:22Z",
- "profile_id": "string",
- "type": "BROKERAGE"
}
The Account Members API allows clients to manage account members.
Account members are effectively immutable. In order to update an account member, clients should remove then re-add the account member with the desired state.
The API requires clients to have write access on the account and all identities associated with the account.
Add Account Members
Add one or more account members to a given account.
The account members added by this API do not affect existing account members. For example, if an account has two members, and one member is added using this API, then the account will end up with three members.
For more information on properties of account members, see Account Members.
Authorizations:
Request Body schema: application/json
account_id required | string ID of account to which members will be added. |
required | Array of objects (AccountMember) A non-empty array of account members to be added. |
Responses
Request samples
- Payload
{- "account_id": "79c27a0e-46a2-4276-9769-e1ebc055fa72",
- "members": [
- {
- "identity_id": "11a3122a-0c50-4950-9934-2ad48a782b78",
- "roles": [
- "FINANCIAL_ADVISOR"
]
}, - {
- "identity_id": "08ba6b70-bcc0-4e4a-a67f-1d28842dedfc",
- "roles": [
- "AUTHORIZED_USER"
]
}
]
}
Response samples
- 200
{- "account_id": "79c27a0e-46a2-4276-9769-e1ebc055fa72",
- "members": [
- {
- "identity_id": "11a3122a-0c50-4950-9934-2ad48a782b78",
- "roles": [
- "FINANCIAL_ADVISOR"
], - "id": "01516495-031a-4c6c-b277-5734ea9cb99c"
}, - {
- "identity_id": "08ba6b70-bcc0-4e4a-a67f-1d28842dedfc",
- "roles": [
- "AUTHORIZED_USER"
], - "id": "1039d953-808f-495f-902d-c15480942885"
}
]
}
NOTICE: The following section is under a CLOSED BETA thus it is not available for all clients. Using these endpoints when outside the closed beta will result in a 403 result.
The Identity Documents API allows clients to send documents to Paxos to validate identities during the KYC process. Files can be updated multiple times by re-sending the document type for processing.
We currently accept the following file formats:
pdf
jpg
png
Steps to upload a document are as follows:
- Send a
PUT
request to/identity/identities/{id}/documents
to get the upload URL. - Send your document to the provided URL via a PUT request. Take the following example using curl:
$ curl --upload-file Proof_of_residence.jpg $URI
Uploaded document metadata will be availiable via GET
request to /identity/identities/{id}/documents
List Identity Documents
This endpoint enables you to get a list of all documents associated with an identity.
Authorizations:
path Parameters
identity_id required | string id associated with the identity |
query Parameters
include_pending_docs | boolean Add a list of pending document types for the identity |
Responses
Response samples
- 200
- 403
- 404
{- "documents": [
- {
- "file_id": "e1959b03-8c3d-4bdd-9437-403ccf8772f5",
- "name": "test_file.png",
- "document_types": [
- "OTHER_DOCUMENTS",
- "APPLICATION"
], - "created_at": "2023-07-07T23:03:19.170481Z"
}
]
}
Document Upload
This endpoint enables you to receive a URL to upload a document to Paxos. When uploading a document one must specify the document type, you will receive a URL to upload a document into using a POST request. (see curl documentation)
Authorizations:
path Parameters
identity_id required | string The id of the identity the document is associated with. |
Request Body schema: application/json
name required | string The file name. |
document_types | Array of strings (DocumentType) Items Enum: "OTHER_DOCUMENTS" "APPLICATION" "ORGANIZATIONAL_DOCUMENTS" "CERTIFICATE_OF_GOOD_STANDING" "TAX_IDENTIFICATION" "IDENTITY_VERIFICATION" "PROOF_OF_RESIDENCY" "PROOF_OF_FUNDS" "SAMPLE_INVOICE" "OPERATING_AGREEMENT" "TRUST_DOCUMENTS" "MONEY_SERVICE_DOCUMENTS" "INVESTMENT_DOCUMENTS" "CURP" "AML_DOCUMENTS" "FUND_STRUCTURE_CHART" "FUND_MANAGER_REGISTRATION" "MEMORANDUM_OF_ASSOCIATION" "ORGANIZATIONAL_CHART" "FOUNDATION_BY_LAWS" "APPOINTMENT_OF_GUARDIAN_EVIDENCE" "LEGAL_DOMICILE_OF_BENEFICIAL_OWNERS" "GOVERNING_BODY_MEMBER_NAMES" A list of document types contained within the uploaded file. |
Responses
Request samples
- Payload
{- "name": "Proof_of_residence.jpg",
- "document_types": [
- "PROOF_OF_RESIDENCY"
]
}
Response samples
- 200
- 400
- 403
- 404
- 409
{- "file_id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "name": "Proof_of_residence.jpg",
}
Profiles hold asset balances, and every Paxos transaction is on a particular profile. Depending on your integration type, Profiles may be used to reflect both corporate balances or individual user balances. There are two types of Profiles:
DEFAULT
Profiles are system-generated.NORMAL
Profiles are created using the Create Profile endpoint and are the only type of Profile you can create.
List Profiles
Return the associated Profiles for the current Account.
The paginated results default to the maximum limit of 1,000 Profiles, unless otherwise specified with the limit
parameter.
Every paginated response contains a next_page
field until the last page is reached.
Pass the next_page
value into the page_cursor
field of the next request to retrieve the next page of results.
Authorizations:
query Parameters
created_at.lt | string <date-time> Include timestamps strictly less than lt. RFC3339 format, like |
created_at.lte | string <date-time> Include timestamps less than or equal to lte. RFC3339 format, like |
created_at.eq | string <date-time> Include timestamps exactly equal to eq. RFC3339 format, like |
created_at.gte | string <date-time> Include timestamps greater than or equal to lte. RFC3339 format, like |
created_at.gt | string <date-time> Include timestamps strictly greater than gt. RFC3339 format, like |
limit | integer <int32> Number of results to return. |
order | string Enum: "DESC" "ASC" Return items in ascending (ASC) or descending (DESC) order. Defaults to ASC. |
order_by | string Value: "CREATED_AT" The specific method by which the returned results will be ordered. |
page_cursor | string Cursor token for fetching the next page. |
Responses
Response samples
- 200
{- "items": [
- {
- "id": "1a763ac5-13d9-4568-bb8b-747c416b105c",
- "nickname": "default",
- "type": "DEFAULT"
}, - {
- "id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "nickname": "MyProfileName",
- "type": "NORMAL"
}
]
}
Create Profile
Create a new profile for this account. Profiles created using this endpoint always have a type of NORMAL
.
Authorizations:
Request Body schema: application/json
nickname required | string The display name of the profile. Must be unique. |
description | string The description of the created profile. |
Responses
Request samples
- Payload
{- "nickname": "string",
- "description": "string"
}
Response samples
- 200
{- "id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "nickname": "MyProfileName",
- "type": "NORMAL"
}
Get Profile
Read a single profile by its UUID, or read the default profile using the alias "default".
Authorizations:
path Parameters
profile_id required | string The UUID of the profile, or "default" for the default profile. |
Responses
Response samples
- 200
{- "id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "nickname": "MyProfileName",
- "type": "NORMAL"
}
Update Profile
Change the nickname
label for the given profile_id
(Profile).
Authorizations:
path Parameters
profile_id required | string |
Request Body schema: application/json
nickname required | string |
Responses
Request samples
- Payload
{- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "nickname": "MyProfileName"
}
Response samples
- 200
{- "id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "nickname": "MyProfileName",
- "type": "NORMAL"
}
List Profile Balances
Retrieve the Profile’s available and trading balances. Use query parameters to retrieve a defined set of assets. Omit query parameters to retrieve all asset balances.
Authorizations:
path Parameters
profile_id required | string |
query Parameters
assets | Array of strings |
Responses
Response samples
- 200
{- "items": [
- {
- "asset": "BTC",
- "available": "1.23103715",
- "trading": ".25"
}, - {
- "asset": "USD",
- "available": "1510.23",
- "trading": "100.00"
}
]
}
Create Sandbox Deposit
Create a test deposit to fund a profile in the sandbox environment.
Always specify crypto_network
when making a crypto sandbox deposit. Omit the parameter when depositing fiat.
This functionality is only available in the sandbox environment.
Authorizations:
path Parameters
profile_id required | string The ID of the profile that will credited with the assets. |
Request Body schema: application/json
asset required | string The kind of asset to deposit. |
amount required | string^[0-9]*\.?[0-9]+$ The amount to deposit. |
crypto_network | string (CryptoNetwork) Enum: "BITCOIN" "ETHEREUM" "BITCOIN_CASH" "LITECOIN" "SOLANA" "POLYGON_POS" "ARBITRUM_ONE" A CryptoNetwork is a blockchain transmitting cryptocurrencies. |
Responses
Request samples
- Payload
{- "asset": "string",
- "amount": "string",
- "crypto_network": "BITCOIN"
}
Response samples
- 200
{- "activity_id": "string"
}
Sandbox Set Identity Status
Set the various statuses for the given Identity. To enable the Person Identity to transact,
set both id_verification_status
and sanctions_verification_status
to "APPROVED"
.
To enable the Institution to transact, set both sanctions_verification_status
to "APPROVED"
.
This endpoint also allows you to set the statuses for document_verification_status
and
additional_screening_status
Authorizations:
path Parameters
id required | string |
Request Body schema: application/json
id_verification_status | string (IdentityStatus) Enum: "PENDING" "ERROR" "APPROVED" "DENIED" "DISABLED" |
sanctions_verification_status | string (IdentityStatus) Enum: "PENDING" "ERROR" "APPROVED" "DENIED" "DISABLED" |
object (SetDisable) | |
object (SetDisable) | |
document_verification_status | string (IdentityStatus) Enum: "PENDING" "ERROR" "APPROVED" "DENIED" "DISABLED" |
additional_screening_status | string (IdentityStatus) Enum: "PENDING" "ERROR" "APPROVED" "DENIED" "DISABLED" |
Responses
Request samples
- Payload
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "id_verification_status": "APPROVED",
- "sanctions_verification_status": "APPROVED"
}
Response samples
- 200
{ }
Initiate Sandbox Fiat Deposit
Initiate a test fiat deposit in the sandbox environment.
The deposit will be processed based on memo_id
from a previous Fiat Deposit Instructions response.
This functionality is only available in the sandbox environment.
Authorizations:
Request Body schema: application/json
amount required | string^[0-9]*\.?[0-9]{1,2}$ The amount to deposit. |
asset required | string The asset to deposit. Current supported asset: "USD". |
memo_id required | string The string that the client must provide in the memo field on their deposit to credit their Paxos platform balance. |
required | object (FiatNetworkInstructions) |
object (FiatAccountOwner) |
Responses
Request samples
- Payload
{- "amount": "10.00",
- "asset": "USD",
- "memo_id": "3CFXQSCMSPLFHXLZ",
- "fiat_network_instructions": {
- "wire": {
- "account_number": "12345678",
- "fiat_account_owner_address": {
- "country": "USA",
- "address1": "456 Main Street, NY",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}, - "routing_details": {
- "routing_number_type": "ABA",
- "routing_number": "123456789",
- "bank_name": "Customers Bank",
- "bank_address": {
- "country": "USA",
- "address1": "123 Bank Street",
- "city": "New York",
- "province": "NY",
- "address2": "",
- "zip_code": "10101"
}
}
}
}, - "fiat_account_owner": {
- "institution_details": {
- "name": "SomeCorp, Inc."
}
}
}
Response samples
- 200
- 400
{ }
Use the Settlements API to facilitate simultaneous exchange of pre-funded assets. Automate a variety of use cases that require two-party approval, including net settlement of over-the-counter trades, withdrawal requests for tri-party collateral, payment requests, and bilateral settlement for marketplace end users.
The simple request-and-approval workflow supports both one-directional and bidirectional transactions to allow a user to receive an asset (for example, send USDP) or simultaneously send and receive assets (for example, send USD and receive BTC and ETH). Only when all parties are in agreement and assets are fully funded does the Settlements API allow for change of custody. Upon completion, all settled assets are immediately available for trading, transferring, withdrawal or other supported activities.
The Source Profile initiates the transaction for the Target Profile to approve. The DIRECTION
of each asset is always relative to the Source Profile and only the owner of the Source Profile can cancel a transaction if it hasn’t been approved by the Target Profile.
List Transactions
This endpoint enables you to fetch a list of Settlement Transactions that you have created (own the source_profile_id
) or have been alleged against you (own the target_profile_id
).
You can use query parameters to filter the results returned by statuses
, source_profile_id
and target_profile_id
.
Note that this endpoint supports pagination and returns a cursor token for fetching next pages.
Authorizations:
query Parameters
statuses | Array of strings Items Enum: "PENDING" "SETTLED" "EXPIRED" "CANCELLED" "AFFIRMED" Transaction statuses to filter on
|
source_profile_id | string The |
target_profile_id | string The |
limit | integer <int64> Number of results to return. Defaults to 100 if no limit is provided. |
page_cursor | string Cursor for getting the next page of results. |
Responses
Response samples
- 200
- 403
[- {
- "id": "d99a03ee-6b88-4362-89da-087c2c8cd4a7",
- "ref_id": "d840cf31-352f-4190-a476-7522bf3eafda",
- "settlement_window_start": "2023-08-25 14:25:41 UTC",
- "settlement_window_end": "2023-08-25 14:25:41 UTC",
- "source_profile_id": "4fd025ab-f29f-47e6-a02e-df90a61c7ec9",
- "target_profile_id": "47db6271-50d6-4934-8c81-c42d87bfb390",
- "legs": [
- {
- "id": "ace21517-447e-4764-8733-765cb12a7fab",
- "direction": "DELIVER",
- "asset": "BTC",
- "amount": "100"
}
], - "status": "PENDING",
- "created_at": "2023-08-25 14:25:41 UTC",
- "updated_at": "2023-08-25 14:25:41 UTC"
}, - {
- "id": "738b465a-7bea-42cf-be8d-63572f5745e7",
- "ref_id": "8f1dcf84-56e7-4e84-80aa-f01ef2eb1ab0",
- "settlement_window_start": "2023-08-26 00:25:41 UTC",
- "settlement_window_end": "2023-08-29 19:25:41 UTC",
- "source_profile_id": "4fd025ab-f29f-47e6-a02e-df90a61c7ec9",
- "target_profile_id": "47db6271-50d6-4934-8c81-c42d87bfb390",
- "legs": [
- {
- "id": "ace21517-447e-4764-8733-765cb12a7fab",
- "direction": "RECEIVE",
- "asset": "ETH",
- "amount": "39.231"
}
], - "status": "PENDING",
- "created_at": "2023-08-24 18:29:41 UTC",
- "updated_at": "2023-08-24 18:29:41 UTC"
}
]
Create Transaction
Creates a new bilateral Settlement Transaction with one or more legs. The customer must own the
source_profile_id
specified in the transaction.
A successful response indicates the transaction has been accepted and will be in an initial status
of "PENDING"
for settlement, the transaction is only eligible for settlement once the status
is "AFFIRMED"
by the
target_profile_id
and the current time is between the provided settlement_window_start
and settlement_window_end
.
Settlement will only be enacted once both source_profile_id
and target_profile_id
have sufficient balances to
fulfill all legs specified as settlement is atomic.
Authorizations:
Request Body schema: application/json
Request to create a bilateral settlement transaction with one or more legs.
ref_id | string Idempotency key. |
settlement_window_start | string <date-time> The start of the window which the transaction is eligible for settlement.
If omitted, transactions are immediately eligible for settlement upon success.
RFC3339 format, like |
settlement_window_end | string <date-time> The end of the window which the transaction is eligible for settlement.
Transactions which are not cancelled or settled by this time will expire.
RFC3339 format, like |
source_profile_id | string The |
target_profile_id | string The |
Array of objects (CreateObligationRequest) The obligations (representing one-way asset movements) to be settled atomically. |
Responses
Request samples
- Payload
{- "ref_id": "d840cf31-352f-4190-a476-7522bf3eafda",
- "settlement_window_start": "2023-08-25 14:25:41 UTC",
- "settlement_window_end": "2023-08-25 16:25:41 UTC",
- "source_profile_id": "4fd025ab-f29f-47e6-a02e-df90a61c7ec9",
- "target_profile_id": "47db6271-50d6-4934-8c81-c42d87bfb390",
- "legs": [
- {
- "direction": "DELIVER",
- "asset": "BTC",
- "amount": "100"
}
]
}
Response samples
- 200
- 400
- 403
- 409
{- "id": "d99a03ee-6b88-4362-89da-087c2c8cd4a7",
- "ref_id": "d840cf31-352f-4190-a476-7522bf3eafda",
- "settlement_window_start": "2023-08-25 14:25:41 UTC",
- "settlement_window_end": "2023-08-25 14:25:41 UTC",
- "source_profile_id": "4fd025ab-f29f-47e6-a02e-df90a61c7ec9",
- "target_profile_id": "47db6271-50d6-4934-8c81-c42d87bfb390",
- "legs": [
- {
- "id": "ace21517-447e-4764-8733-765cb12a7fab",
- "direction": "DELIVER",
- "asset": "BTC",
- "amount": "100"
}
], - "status": "PENDING",
- "created_at": "2023-08-25 14:25:41 UTC",
- "updated_at": "2023-08-25 14:25:41 UTC"
}
Get Transaction
Get a Settlement Transaction by its (transaction) id, you must have created the transaction (own the source_profile_id
) or
have had the transaction alleged against you (own the target_profile_id
).
Authorizations:
path Parameters
transaction_id required | string The unique |
Responses
Response samples
- 200
- 403
- 404
[- {
- "id": "d99a03ee-6b88-4362-89da-087c2c8cd4a7",
- "ref_id": "d840cf31-352f-4190-a476-7522bf3eafda",
- "settlement_window_start": "2023-08-25 14:25:41 UTC",
- "settlement_window_end": "2023-08-25 14:25:41 UTC",
- "source_profile_id": "4fd025ab-f29f-47e6-a02e-df90a61c7ec9",
- "target_profile_id": "47db6271-50d6-4934-8c81-c42d87bfb390",
- "legs": [
- {
- "id": "ace21517-447e-4764-8733-765cb12a7fab",
- "direction": "DELIVER",
- "asset": "BTC",
- "amount": "100"
}
], - "status": "PENDING",
- "created_at": "2023-08-25 14:25:41 UTC",
- "updated_at": "2023-08-25 17:53:23 UTC"
}
]
Cancel Transaction
Cancels the Settlement Transaction, this action can only be done by the customer owning the source profile (source_profile_id
).
The transaction must be in a "PENDING"
status for this to take effect, you cannot cancel a transaction which
is "AFFIRMED"
.
Authorizations:
path Parameters
transaction_id required | string The unique |
Responses
Response samples
- 200
- 403
- 409
{- "id": "d99a03ee-6b88-4362-89da-087c2c8cd4a7",
- "ref_id": "d840cf31-352f-4190-a476-7522bf3eafda",
- "settlement_window_start": "2023-08-25 14:25:41 UTC",
- "settlement_window_end": "2023-08-25 14:25:41 UTC",
- "source_profile_id": "4fd025ab-f29f-47e6-a02e-df90a61c7ec9",
- "target_profile_id": "47db6271-50d6-4934-8c81-c42d87bfb390",
- "legs": [
- {
- "id": "ace21517-447e-4764-8733-765cb12a7fab",
- "direction": "DELIVER",
- "asset": "BTC",
- "amount": "100"
}
], - "status": "CANCELLED",
- "created_at": "2023-08-25 14:25:41 UTC",
- "updated_at": "2023-08-25 17:53:23 UTC"
}
Affirm Transaction
Affirms the Settlement Transaction for settlement, the transaction is now eligible for settlement once the current time is
between the provided settlement_window_start
and settlement_window_end
. This action can only be done by the
customer owning the target profile (target_profile_id
).
The transaction must be in a "PENDING"
status for this to take effect.
Authorizations:
path Parameters
transaction_id required | string The unique |
Responses
Response samples
- 200
- 400
- 403
{- "id": "d99a03ee-6b88-4362-89da-087c2c8cd4a7",
- "ref_id": "d840cf31-352f-4190-a476-7522bf3eafda",
- "settlement_window_start": "2023-08-25 14:25:41 UTC",
- "settlement_window_end": "2023-08-25 14:25:41 UTC",
- "source_profile_id": "4fd025ab-f29f-47e6-a02e-df90a61c7ec9",
- "target_profile_id": "47db6271-50d6-4934-8c81-c42d87bfb390",
- "legs": [
- {
- "id": "ace21517-447e-4764-8733-765cb12a7fab",
- "direction": "DELIVER",
- "asset": "BTC",
- "amount": "100"
}
], - "status": "AFFIRMED",
- "created_at": "2023-08-25 14:25:41 UTC",
- "updated_at": "2023-08-25 17:53:23 UTC"
}
Convert between fiat and stablecoin using Create Stablecoin Conversion and check the status of a single conversion or retrieve a list of conversions.
List Stablecoin Conversions
List all conversions, optionally filtering and paging the results.
By default, conversions are returned in reverse chronological (descending) order by creation time. If no query parameters are supplied, the response will include up to the last 100 conversions which were created.
The paginated results default to display up to 100 conversions, unless
otherwise specified with the limit
parameter. The maximum limit
value is 1000.
Every paginated response contains a next_page_cursor
field until the last page is reached.
Pass the next_page_cursor
value into the page_cursor
field of a new
request to retrieve the next page of results.
Authorizations:
query Parameters
profile_id | string The Profile associated with a conversion. Required in the Create Stablecoin Conversion request. |
ref_id | string Client provided, unique Reference ID included the Create Stablecoin Conversion request. |
created_at.begin | string <date-time> Only return records after this timestamp, inclusive. RFC3339 format, like |
created_at.end | string <date-time> Only return records before this timestamp, inclusive. RFC3339 format, like |
updated_at.begin | string <date-time> Only return records after this timestamp, inclusive. RFC3339 format, like |
updated_at.end | string <date-time> Only return records before this timestamp, inclusive. RFC3339 format, like |
order | string Enum: "DESC" "ASC" Return items in ascending (ASC) or descending (DESC) order by Default order is descending (DESC). |
page_cursor | string Cursor token for fetching the next page. |
limit | integer <int32> Number of results to return. Default is 100 items. Maximum is 1000 items. |
Responses
Response samples
- 200
- 403
{- "items": [
- {
- "account_id": "00000000-0000-0000-0000-000000000000",
- "amount": "100.01",
- "created_at": "2023-09-16T02:01:15.941902Z",
- "id": "38a2c6b4-167c-4c98-a190-406efc4121aa",
- "identity_id": "00000000-0000-0000-0000-000000000000",
- "metadata": {
- "skey": "svalue"
}, - "profile_id": "b821ff88-fdb4-49ba-b30f-99c40f01fcfc",
- "ref_id": "497266c5214043a29f9854096e9a9103",
- "settled_at": "2023-09-16T02:01:16.613995Z",
- "source_asset": "USD",
- "status": "SETTLED",
- "target_asset": "USDP",
- "updated_at": "2023-09-16T02:01:16.018493Z"
}, - {
- "account_id": "00000000-0000-0000-0000-000000000000",
- "amount": "100.01",
- "created_at": "2023-09-16T03:34:50.555200Z",
- "id": "a490536f-3842-4823-8c84-056728243064",
- "identity_id": "00000000-0000-0000-0000-000000000000",
- "metadata": {
- "skey": "svalue"
}, - "profile_id": "b821ff88-fdb4-49ba-b30f-99c40f01fcfc",
- "ref_id": "4fecc881b73744e4a4e858017689da7d",
- "settled_at": "2023-09-16T03:34:51.060002Z",
- "source_asset": "USD",
- "status": "SETTLED",
- "target_asset": "USDP",
- "updated_at": "2023-09-16T03:34:50.610541Z"
}
]
}
Create Stablecoin Conversion
Create a Conversion request to exchange assets 1:1.
A request to create a conversion can fail with one of the following types of errors:
- Insufficient Funds
if the Profile (
profile_id
) has insufficient available balance to fund the execution. - Already Exists
if a conversion with the same external ID (
ref_id
) has already been created.
Authorizations:
Request Body schema: application/json
profile_id required | string The Profile associated with a conversion. |
amount required | string^[0-9]*\.?[0-9]+$ Asset amount to convert. Details. |
source_asset required | string The asset to convert from. Details. |
target_asset required | string The asset to convert to. Details. |
ref_id | string Client provided, unique Reference ID for lookup and replay protection. |
identity_id | string The Identity ID associated with the user requesting the conversion. Required only for customers with 3rd-Party integrations. |
account_id | string The Account ID associated with the user requesting the conversion. Required only for customers with 3rd-Party integrations. |
object Optional client-specified stored metadata. | |
recipient_profile_id | string For directed settlement, the receiving side |
Responses
Request samples
- Payload
{- "amount'": "3",
- "metadata": {
- "skey": "svalue",
- "custom_key": "custom_value"
}, - "profile_id": "b821ff88-fdb4-49ba-b30f-99c40f01fcfc",
- "ref_id": "refid-24d25de7f5bd47ab978cbbd428b74199",
- "source_asset": "USD",
- "target_asset": "USDP"
}
Response samples
- 200
- 400
- 403
- 409
{- "account_id'": "00000000-0000-0000-0000-000000000000",
- "amount'": "3",
- "created_at": "2023-10-19T15:37:18.929305155Z",
- "id": "8dbce0e0-510f-4edc-9249-15f8c6214569",
- "identity_id": "00000000-0000-0000-0000-000000000000",
- "metadata": {
- "skey": "svalue",
- "custom_key": "custom_value"
}, - "profile_id": "b821ff88-fdb4-49ba-b30f-99c40f01fcfc",
- "ref_id": "refid-24d25de7f5bd47ab978cbbd428b74199",
- "source_asset": "USD",
- "status": "CREATED",
- "target_asset": "USDP",
- "updated_at": "2023-10-19T15:37:18.990343Z"
}
Get Stablecoin Conversion
Retrieve a single conversion using the transaction id
from the Create Stablecoin Conversion response.
Authorizations:
path Parameters
id required | string System provided UUID for the conversion is provided in the Create Stablecoin Conversion response. |
Responses
Response samples
- 200
- 403
- 404
{- "account_id": "00000000-0000-0000-0000-000000000000",
- "amount": "3",
- "created_at'": "2023-10-19T15:37:18.929305Z",
- "id": "8dbce0e0-510f-4edc-9249-15f8c6214569",
- "identity_id": "00000000-0000-0000-0000-000000000000",
- "metadata": {
- "skey": "svalue",
- "custom_key": "custom_value"
}, - "profile_id": "b821ff88-fdb4-49ba-b30f-99c40f01fcfc",
- "ref_id": "refid-24d25de7f5bd47ab978cbbd428b74199",
- "source_asset": "USD",
- "status": "CREATED",
- "target_asset": "USDP",
- "updated_at": "2023-10-19T15:37:18.990343Z"
}
Cancel Stablecoin Conversion
Cancel a single conversion using the id
from the
Create Stablecoin Conversion response.
Authorizations:
path Parameters
id required | string System provided UUID for the conversion is provided in the Create Stablecoin Conversion response. |
Responses
Response samples
- 200
- 403
- 404
{- "id": "e5ca4d90-dff1-488a-ac04-04540f776ae1",
- "profile_id": "c3680989-c04e-4000-9d96-8aca09eedee1",
- "amount": "11.1",
- "source_asset": "USD",
- "target_asset": "USDP",
- "status": "CANCELLED",
- "identity_id": "d6aee44c-c169-405d-b14e-d78818577531",
- "account_id": "47bb49d7-4e6c-43bf-9fd6-6ccd7d7f15d1",
- "created_at": "2023-10-19T21:21:46.497863Z",
- "updated_at": "2023-10-19T21:21:53.297594Z",
- "cancelled_at": "2023-10-19T21:21:53.297594Z"
}
All tax forms are associated to a single account_id. An account_id can have multiple tax forms associated with it. US 1099-B and 1099-Misc tax forms for the previous fiscal year will be available in February of the current calendar year. Previous years tax forms are also available by request.
List Tax Form Revisions
Used for more granular file retrieval for specific accounts that require updated tax forms. Lists all versions of a tax form for single account and tax year. Revisions will increment up as new tax forms are issued for the same account, tax year, and form type pairing. The highest value revision is the most recent. Tax Form URL links will expire after 60 seconds.
Authorizations:
query Parameters
account_id required | string Required. Account ID |
tax_year required | string Required. Tax Year |
form_types | Array of strings Items Enum: "FORM_1099_B" "FORM_1099_MISC" Tax forms 1009 B or Misc |
revision | string Revision |
Responses
Response samples
- 200
{- "tax_form_urls": [
- {
- "account_id": "string",
- "type": "FORM_1099_B",
- "tax_year": "string",
- "revision": "string",
- "url": "string"
}
]
}
List Tax Forms
Used for bulk file transfer use cases. List tax forms for given account ids and tax year. The most recent revision number will be returned (revisions increment up; highest value revision for a specific account, tax year, and form type pairing is the most recent). Tax Form URL links will expire after 60 seconds. Please call ListTaxFormRevisions endpoint for all versions of a single accounts tax forms.
Authorizations:
query Parameters
account_ids | Array of strings Optional. A list of Account IDs. Maximum 50. |
tax_year required | string Required. Tax year |
form_types | Array of strings Items Enum: "FORM_1099_B" "FORM_1099_MISC" Form types |
users_limit | integer <int32> Number of results to return. Defaults to 50. |
order_by | string Value: "ID" The specific method by which the returned results will be ordered. Defaults to ID. |
order | string Enum: "DESC" "ASC" Return items in ascending (ASC) or descending (DESC) order. Defaults to ASC. |
page_cursor | string Cursor token for fetching the next page. |
Responses
Response samples
- 200
{- "tax_form_urls": [
- {
- "account_id": "string",
- "type": "FORM_1099_B",
- "tax_year": "string",
- "revision": "string",
- "url": "string"
}
], - "next_page_cursor": "string"
}
Get Order Book
Retrieves the full list of bids and asks of the order book at individual price levels with resting quantities per level.
path Parameters
market required | string Enum: "ETHEUR" "ETHSGD" "ETHUSD" "BTCEUR" "BTCSGD" "BTCUSD" "PAXGUSD" "BCHUSD" "LTCUSD" "USDPUSD" "ETHBRL" "BTCBRL" "LTCBRL" "BCHBRL" "USDPGBP" "USDPBRL" "LINKUSD" "MATICUSD" "AAVEUSD" "UNIUSD" "AAVEMXN" "BCHMXN" "BTCMXN" "ETHMXN" "LTCMXN" "USDPMXN" "AAVEEUR" "BCHEUR" "LTCEUR" "LINKEUR" "MATICEUR" "PAXGEUR" "SOLEUR" "USDPEUR" "UNIEUR" "PYUSDEUR" Market of Order Book. |
Responses
Response samples
- 200
{- "market": "BTCUSD",
- "asks": [
- {
- "price": "9240.25",
- "amount": "1.2341300"
}, - {
- "price": "9260.75",
- "amount": "0.8134231"
}
], - "bids": [
- {
- "price": "9220.50",
- "amount": "3.7441300"
}, - {
- "price": "9123.00",
- "amount": "0.2334231"
}
]
}
List Recent Executions
Retrieves the list of 2000 most recent executions by all users to occur in the order book.
path Parameters
market required | string Enum: "ETHEUR" "ETHSGD" "ETHUSD" "BTCEUR" "BTCSGD" "BTCUSD" "PAXGUSD" "BCHUSD" "LTCUSD" "USDPUSD" "ETHBRL" "BTCBRL" "LTCBRL" "BCHBRL" "USDPGBP" "USDPBRL" "LINKUSD" "MATICUSD" "AAVEUSD" "UNIUSD" "AAVEMXN" "BCHMXN" "BTCMXN" "ETHMXN" "LTCMXN" "USDPMXN" "AAVEEUR" "BCHEUR" "LTCEUR" "LINKEUR" "MATICEUR" "PAXGEUR" "SOLEUR" "USDPEUR" "UNIEUR" "PYUSDEUR" Market of the executions. |
Responses
Response samples
- 200
{- "items": [
- {
- "match_number": "5K8U4TTBKS1E",
- "price": "9245.50",
- "amount": "0.23421231",
- "executed_at": "2020-01-17T18:36:38.737Z"
}, - {
- "match_number": "5K8U4TTBKRIO",
- "price": "9237.50",
- "amount": "1.68421231",
- "executed_at": "2020-01-17T18:36:52.737Z"
}
]
}
Get Ticker
Retrieves order book statistics of the exchange over the last 24 hours and from midnight UTC until current time.
path Parameters
market required | string Enum: "ETHEUR" "ETHSGD" "ETHUSD" "BTCEUR" "BTCSGD" "BTCUSD" "PAXGUSD" "BCHUSD" "LTCUSD" "USDPUSD" "ETHBRL" "BTCBRL" "LTCBRL" "BCHBRL" "USDPGBP" "USDPBRL" "LINKUSD" "MATICUSD" "AAVEUSD" "UNIUSD" "AAVEMXN" "BCHMXN" "BTCMXN" "ETHMXN" "LTCMXN" "USDPMXN" "AAVEEUR" "BCHEUR" "LTCEUR" "LINKEUR" "MATICEUR" "PAXGEUR" "SOLEUR" "USDPEUR" "UNIEUR" "PYUSDEUR" Market of the Ticker. |
Responses
Response samples
- 200
{- "market": "BTCUSD",
- "best_bid": {
- "price": "9245.25",
- "amount": "0.23124212"
}, - "best_ask": {
- "price": "9274.00",
- "amount": "1.82341000"
}, - "last_execution": {
- "price": "9273.75",
- "amount": "0.00002341"
}, - "last_day": {
- "high": "10425.25",
- "low": "8923.50",
- "open": "9324.50",
- "volume": "1423.12314232",
- "start_time": "2020-01-17T18:36:08.737Z",
- "end_time": "2020-01-18T18:36:08.737Z"
}, - "today": {
- "high": "10125.25",
- "low": "9100.25",
- "open": "9502.50",
- "volume": "872.12314232",
- "start_time": "2020-01-18T00:00:00.000Z",
- "end_time": "2020-01-18T18:36:08.737Z"
}, - "snapshot_at": "2020-01-17T18:36:08.737Z"
}
There are three types of orders: market, limit and post-only.
Market orders guarantee execution at a variable price and quantity. Limit orders guarantee price and quantity at the time of execution but do not guarantee execution. Post-only is an order type that will only be placed on the order book if it is the maker side of a trade.
List Executions
Retrieves full details of underlying executions with optional filters. Notes:
- This endpoint returns a maximum of 1000 items per page.
- Filtering options are
account_id
,profile_id
or neither (all executions).
Authorizations:
query Parameters
profile_id | string Filter executions by the Profile ID associated with the orders. |
account_id | string Filter executions by the Account ID associated with the orders. |
order_id | string Filter executions for a single order ID. |
since_execution_id | string Excludes executions after the given ID. |
range.begin | string <date-time> Only return records after this timestamp, inclusive. RFC3339 format, like |
range.end | string <date-time> Only return records before this timestamp, inclusive. RFC3339 format, like |
page_cursor | string Cursor token for fetching the next page. |
limit | integer <int32> Number of results to return. |
Responses
Response samples
- 200
{- "items": [
- {
- "execution_id": "12422531",
- "order_id": "cb379c30-a9f8-4685-aa38-47d6e87ff09d",
- "executed_at": "2022-08-01T21:01:27.217Z",
- "market": "BTCUSD",
- "side": "BUY",
- "amount": "0.00432539",
- "price": "23119.25",
- "commission": "0.34999920465125",
- "commission_asset": "USD",
- "rebate": "0",
- "rebate_asset": "USD",
- "gross_trade_amount": "99.9997727575"
}
], - "next_page_cursor": "CgwI-Iu6iQYQgPGVoQEQg5v2BQ"
}
List Orders
Retrieves full details of orders associated with a Profile ID, with optional filters.
- Historical data prior to May 16, 2022 is unavailable.
- Pagination Limit has a max of 1000. Pagination Offset is now deprecated and nonfunctional.
- Filtering options are
account_id
,profile_id
or neither (all orders).
Authorizations:
query Parameters
profile_id | string The profile associated with the orders. |
account_id | string The account under which these orders are placed. |
market | string Enum: "ETHEUR" "ETHSGD" "ETHUSD" "BTCEUR" "BTCSGD" "BTCUSD" "PAXGUSD" "BCHUSD" "LTCUSD" "USDPUSD" "LINKUSD" "MATICUSD" "AAVEUSD" "UNIUSD" Filter by the trading pair. |
status | string Enum: "PENDING_SUBMISSION" "SUBMITTED" "OPEN" "FILLED" "CANCELLED" "REJECTED" Filter by the status of the order. |
order_time.begin | string <date-time> Only return records after this timestamp, inclusive. RFC3339 format, like |
order_time.end | string <date-time> Only return records before this timestamp, inclusive. RFC3339 format, like |
ref_ids | Array of strings The idempotence IDs provided during order creation. |
page_cursor | string Cursor token for fetching the next page. If using this then do not use paginationLimit and paginationOffset fields. |
limit | integer <int32> Number of results to return. If using this then do not use paginationLimit and paginationOffset fields. |
Responses
Response samples
- 200
{- "items": [
- {
- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "ref_id": "my-order-1",
- "status": "FILLED",
- "market": "ETHUSD",
- "side": "BUY",
- "type": "LIMIT",
- "price": "190.23",
- "base_amount": "2.35781498",
- "quote_amount": "0",
- "metadata": {
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339"
}, - "amount_filled": "2.35781498",
- "volume_weighted_average_price": "190.23",
- "time_in_force": "GTC",
- "is_triggered": false
}, - {
- "id": "81e26e1d-eddb-455a-8b44-e3d845432de7",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "ref_id": "my-order-2",
- "status": "FILLED",
- "market": "BTCUSD",
- "side": "BUY",
- "type": "MARKET",
- "price": "0",
- "base_amount": "0",
- "quote_amount": "500.00",
- "metadata": {
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339"
}, - "amount_filled": "0.05142181",
- "volume_weighted_average_price": "9723.50",
- "time_in_force": "FOK",
- "is_triggered": false
}
], - "next_page_cursor": "CgsIxom6iQYQwO39XBDbsdVz"
}
Create Order
For limit orders, create an order for buying or selling an asset:
- To buy, set
side = BUY
and setbase_amount
to the crypto amount you want to buy. - To sell, set
side = SELL
and setbase_amount
to the crypto amount you want to sell.
For market orders, create an order for buying or selling an asset:
- To buy, set
side = BUY
and setquote_amount
to the dollar amount you want to spend. - To sell, set
side = SELL
and setbase_amount
to the crypto amount you want to sell.
There are five types of orders:
- Limit Orders: Buy or sell at a specified price or better. Execution not guaranteed. Taker orders will be rejected if price deviates 15% from midpoint.
- Post-Only Limit Orders: have the same properties as Limit Orders, but get rejected if they cross the orderbook.
- Market Orders: Operate as Immediate or Cancel (IOC) orders. Price is variable, executes at best available price at time of order.
- Stop Market Orders: Will convert to a market sell order with the specified quantity when the stop price is hit. The stop price does not guarantee that it will be executed at that price. Market conditions (price) might change between the order being triggered and order being executed. Currently only sell stop loss orders are supported.
- Stop Limit Orders: have a Stop Price which when hit, will convert to a limit sell order that will be executed at a specified price (or better)
Maximum notional order size by type:
Order Type | Market | Maximum Notional Value (USD) |
---|---|---|
Market | all | 500,000 |
Limit | BTCUSD | 1,500,000 |
Limit | ETHUSD | 1,500,000 |
Limit | other | 1,000,000 |
Authorizations:
path Parameters
profile_id required | string The profileId the order will be associated with. |
Request Body schema: application/json
ref_id | string The idempotence ID for order creation. Can be reused if the order has been closed for more than 24 hours. | ||||||||||||||||||||||||||||||
side required | string (OrderSide) Enum: "BUY" "SELL" Trade side. | ||||||||||||||||||||||||||||||
market required | string (Market) Enum: "ETHEUR" "ETHSGD" "ETHUSD" "BTCEUR" "BTCSGD" "BTCUSD" "PAXGUSD" "BCHUSD" "LTCUSD" "USDPUSD" "LINKUSD" "MATICUSD" "AAVEUSD" "UNIUSD" | ||||||||||||||||||||||||||||||
type required | string (OrderType) Enum: "LIMIT" "MARKET" "POST_ONLY_LIMIT" "STOP_MARKET" "STOP_LIMIT" Trade type. | ||||||||||||||||||||||||||||||
base_amount | string^[0-9]*\.?[0-9]+$ The base currency amount for any limit order or the exact amount to sell for a market sell order. | ||||||||||||||||||||||||||||||
price | string The quote price. | ||||||||||||||||||||||||||||||
quote_amount | string^[0-9]*\.?[0-9]+$ The quote currency amount of purchase for a market buy order. | ||||||||||||||||||||||||||||||
object Metadata to store on the quote and created order. Up to 6 key/value pairs may be stored, with each key and value at most 100 characters. | |||||||||||||||||||||||||||||||
await_fill_millis | integer <int64> <= 10000 The amount of time to wait for the order to fill, in milliseconds.
When
| ||||||||||||||||||||||||||||||
time_in_force | string (TimeInForce) Enum: "GTC" "FOK" "IOC" "GTT" How long an order will remain active before it expires.
Time in Force validity for Order Types
| ||||||||||||||||||||||||||||||
expiration_date | string <uint64> The date the order will expire if not completed when specified time in force is GTT. Format is a unix timestamp in milliseconds (13-digits) UTC (total milliseconds that have elapsed since January 1st, 1970 UTC). | ||||||||||||||||||||||||||||||
identity_id | string The end user that requests the trade. This field must be used in conjunction with | ||||||||||||||||||||||||||||||
identity_account_id | string The account under which this order is placed. The provided identity must be allowed to trade on behalf of this account. This field must be used in conjunction with | ||||||||||||||||||||||||||||||
stop_price | string (The stop price at which a stop order will trigger) | ||||||||||||||||||||||||||||||
recipient_profile_id | string The profileId that will receive settled currency (base for buy orders, quote for sell orders). | ||||||||||||||||||||||||||||||
self_match_prevention_id | string The string field used to prevent matching against an opposite side order submitted by the same Crypto Brokerage customer. If this field is not submitted, an order that matches against another order submitted by the same customer will cancel the original resting order. Up to 36 characters are supported. This field requires additional permissions only available to certain accounts. Reach out to your Paxos Representative for more information. |
Responses
Request samples
- Payload
{- "side": "BUY",
- "market": "ETHUSD",
- "type": "LIMIT",
- "price": "190.23",
- "base_amount": "2.35781498",
- "metadata": {
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339"
}
}
Response samples
- 200
- 400
- 403
- 409
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "ref_id": "my-order-1",
- "status": "SUBMITTED",
- "market": "ETHUSD",
- "side": "BUY",
- "type": "LIMIT",
- "price": "190.23",
- "base_amount": "2.35781498",
- "quote_amount": "",
- "metadata": {
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339"
}, - "amount_filled": "0.00000000",
- "volume_weighted_average_price": "0.00000000",
- "time_in_force": "GTC"
}
Get Order
Retrieves the current state of an order.
- Historical data prior to May 16, 2022 is unavailable.
Authorizations:
path Parameters
profile_id required | string The profile ID associated with the order. |
id required | string The UUID of the Order. |
Responses
Response samples
- 200
{- "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "ref_id": "my-order-1",
- "status": "SUBMITTED",
- "market": "ETHUSD",
- "side": "BUY",
- "type": "LIMIT",
- "price": "190.23",
- "base_amount": "2.35781498",
- "quote_amount": "",
- "metadata": {
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339"
}, - "amount_filled": "0.00000000",
- "volume_weighted_average_price": "0.00000000",
- "time_in_force": "GTC",
- "is_triggered": false
}
Cancel Order
Submits a cancellation request. A response indicates that the request has been acknowledged and provides no guarantee the order has been cancelled.
Authorizations:
path Parameters
profile_id required | string The profile ID associated with the order. |
id required | string The UUID of the Order. |
Responses
Response samples
- 200
- 403
{ }
Quotes are "held rates" offered by Paxos to buy or sell assets at a specific price within a period of time - for example, the option to buy BTC within the next 30 seconds for $8,000.
The typical Quotes workflow is as follows:
- Call List Quotes to get the latest available quoted prices for the assets you want to buy or sell.
- Present the offered price to one or more end-users, with a timer indicating the time to expiration.
- If a user accepts the price, call Create Quote Execution with the amount to buy or sell.
- Call Get Quote Execution to monitor for completion and know when the funds from the execution are available.
It's important to show end-users the latest available price. If you cache prices to show them to multiple users, you should refresh the cache once per second.
You can call List Quote Executions to review or construct reports on quote execution activity.
List Quotes
List quotes for buying or selling assets. By default, the list will include the latest available quotes for both buying and selling all supported assets.
Each quote is valid until expires_at
, and can be executed on by
calling Create Quote Execution.
Multiple calls to list quotes in quick succession may return the same quote values. Paxos currently issues new quotes at most once per second.
Authorizations:
query Parameters
markets required | Array of strings Items Enum: "ETHEUR" "ETHSGD" "ETHUSD" "BTCEUR" "BTCSGD" "BTCUSD" "PAXGUSD" "BCHUSD" "LTCUSD" "USDPUSD" "LINKUSD" "MATICUSD" "AAVEUSD" "UNIUSD" |
Responses
Response samples
- 200
{- "items": [
- {
- "id": "366a26d2-3098-4226-a520-4bb43ae4d922",
- "market": "BTCUSD",
- "side": "BUY",
- "price": "6001.2",
- "base_asset": "BTC",
- "quote_asset": "USD",
- "created_at": "2020-01-17T18:36:08Z",
- "expires_at": "2020-01-17T18:36:38Z"
}, - {
- "id": "71e2a297-f2d7-423c-8e4f-486aac70fa9f",
- "market": "BTCUSD",
- "side": "SELL",
- "price": "5999.8",
- "base_asset": "BTC",
- "quote_asset": "USD",
- "created_at": "2020-01-17T18:36:08Z",
- "expires_at": "2020-01-17T18:36:38Z"
}, - {
- "id": "ee018e41-0379-41c6-a099-1ea81204b192",
- "market": "ETHUSD",
- "side": "BUY",
- "price": "225.88",
- "base_asset": "ETH",
- "quote_asset": "USD",
- "created_at": "2020-01-17T18:36:08Z",
- "expires_at": "2020-01-17T18:36:38Z"
}, - {
- "id": "5a336768-5bc1-4401-9d95-9cb251ce4b58",
- "market": "ETHUSD",
- "side": "SELL",
- "price": "224.11",
- "base_asset": "ETH",
- "quote_asset": "USD",
- "created_at": "2020-01-17T18:36:08Z",
- "expires_at": "2020-01-17T18:36:38Z"
}
]
}
Quote Executions buy or sell assets using a Quote obtained from the Quotes flow.
List Quote Executions
List quote executions within a particular profile.
Authorizations:
path Parameters
profile_id required | string The profile ID associated with the orders. |
query Parameters
side | string Enum: "BUY" "SELL" Filter by buy or sell side. |
market | string Enum: "ETHEUR" "ETHSGD" "ETHUSD" "BTCEUR" "BTCSGD" "BTCUSD" "PAXGUSD" "BCHUSD" "LTCUSD" "USDPUSD" "LINKUSD" "MATICUSD" "AAVEUSD" "UNIUSD" Filter by the trading pair. |
status | string Enum: "CREATED" "SETTLED" Filter by the status of the order. |
created_at.begin | string <date-time> Only return records after this timestamp, inclusive. RFC3339 format, like |
created_at.end | string <date-time> Only return records before this timestamp, inclusive. RFC3339 format, like |
limit | integer <int32> Number of results to return. |
order | string Enum: "DESC" "ASC" Return items in ascending (ASC) or descending (DESC) order. Default order is descending (DESC). |
order_by | string Value: "CREATED_AT" The specific method by which the returned results will be ordered. |
page_cursor | string Cursor token for fetching the next page. If using this then do not use |
Responses
Response samples
- 200
{- "total_count": 0,
- "items": [
- {
- "id": "43a59965-be3a-45ab-841d-c55386e0ff90",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "quote_id": "366a26d2-3098-4226-a520-4bb43ae4d922",
- "status": "SETTLED",
- "market": "BTCUSD",
- "side": "BUY",
- "price": "6001.2",
- "base_amount": "2.35",
- "base_asset": "BTC",
- "quote_amount": "14102.82",
- "quote_asset": "USD",
- "created_at": "2020-01-17T18:36:31.345Z",
- "settled_at": "2020-01-17T18:36:32.123Z",
- "metadata": {
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339"
}
}
], - "next_page_cursor": "string"
}
Create Quote Execution
Execute on a quote for buying or selling an asset.
The side, market, and guaranteed price of the execution are specified by the quote
with ID quote_id
.
The amount to buy or sell must be specified in either fiat or crypto by setting exactly one of:
base_amount
to specify the amount of crypto to buy or sell.quote_amount
to specify the amount of fiat to spend or acquire.
An otherwise-valid request to create a quote execution may fail with the following types of errors:
- Expired if the quote
with ID
quote_id
has expired. - Insufficient Funds
if the profile with ID
profile_id
has insufficient available balance to fund the execution. - Rejected if extreme market conditions (e.g. a very large price swing) have invalidated the quote.
- Already Exists
if a Quote Execution with the same
ref_id
has already been created.
Authorizations:
path Parameters
profile_id required | string The ID of the profile under which to execute this order. |
Request Body schema: application/json
quote_id required | string The ID of the held Quote for buying or selling some asset. |
ref_id | string A unique identifier for the quote execution (for idempotence). |
base_amount | string^[0-9]*\.?[0-9]+$ The amount of the base asset (crypto) to buy or sell using the specified quote. The maximum precision is 8 decimals. |
quote_amount | string^[0-9]*\.?[0-9]+$ The amount of the quote asset (fiat) to spend or acquire using the specified quote. The maximum precision is 2 decimals. |
object Metadata to store on the quote execution. Up to 6 key/value pairs may be stored, with each key and value at most 100 characters. | |
identity_id | string The end user that requests the quote execution. |
account_id | string The account under which this quote execution is placed. The provided identity must be allowed to trade on behalf of this account. |
recipient_profile_id | string The ID of the profile under which to deposit the funds. |
Responses
Request samples
- Payload
{- "quote_id": "366a26d2-3098-4226-a520-4bb43ae4d922",
- "quote_amount": "100",
- "metadata": {
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339"
}
}
Response samples
- 200
- 403
- 404
- 409
{- "id": "43a59965-be3a-45ab-841d-c55386e0ff90",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "quote_id": "366a26d2-3098-4226-a520-4bb43ae4d922",
- "status": "CREATED",
- "market": "BTCUSD",
- "side": "BUY",
- "price": "6001.2",
- "base_amount": "0.016663334",
- "base_asset": "BTC",
- "quote_amount": "100.00",
- "quote_asset": "USD",
- "created_at": "2020-01-17T18:36:31.345Z",
- "metadata": {
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339"
}
}
Get Quote Execution
Get an existing quote execution for buying or selling an asset.
Authorizations:
path Parameters
profile_id required | string |
id required | string |
Responses
Response samples
- 200
{- "id": "43a59965-be3a-45ab-841d-c55386e0ff90",
- "profile_id": "b7b77d82-e6a7-4ae9-9904-36231aedf985",
- "quote_id": "366a26d2-3098-4226-a520-4bb43ae4d922",
- "status": "SETTLED",
- "market": "BTCUSD",
- "side": "BUY",
- "price": "6001.2",
- "base_amount": "2.35",
- "base_asset": "BTC",
- "quote_amount": "14102.82",
- "quote_asset": "USD",
- "created_at": "2020-01-17T18:36:31.345Z",
- "settled_at": "2020-01-17T18:36:32.123Z",
- "metadata": {
- "customer_id": "9b8c9cba-801e-4418-adc0-ede709df6339"
}
}
Pricing provides historical data related to charting of asset prices.
Note: Some Pricing API markets may be unavailable for trading.
List Prices
Retrieve current prices, as well as 24 hour prior (yesterday) prices, for the specified markets. Any single market that failed to be retrieved is excluded from the response.
query Parameters
markets required | Array of strings Items Enum: "ETHUSD" "BTCUSD" "PAXGUSD" "BCHUSD" "LTCUSD" "USDPUSD" "LINKUSD" "MATICUSD" "AAVEUSD" "UNIUSD" |
Responses
Response samples
- 200
{- "prices": [
- {
- "market": "BTCUSD",
- "current_price": "16627.62",
- "yesterday_price": "16703.29",
- "snapshot_at": "2023-01-03T18:27:40.294528Z"
}, - {
- "market": "ETHUSD",
- "current_price": "1206.93",
- "yesterday_price": "1216.55",
- "snapshot_at": "2023-01-03T18:27:40.294528Z"
}
]
}
List Tickers
Retrieves order book statistics of the exchange for all markets over the last 24 hours and from midnight UTC until current time.
Please note: List Tickers displays pricing from external venues when the itBit exchange is not available.
Responses
Response samples
- 200
[- {
- "market": "BTCUSD",
- "best_bid": {
- "price": "9245.25",
- "amount": "0.23124212"
}, - "best_ask": {
- "price": "9274.00",
- "amount": "1.82341000"
}, - "last_execution": {
- "price": "9273.75",
- "amount": "0.00002341"
}, - "last_day": {
- "high": "10425.25",
- "low": "8923.50",
- "open": "9324.50",
- "volume": "1423.12314232",
- "start_time": "2020-01-17T18:36:08.737Z",
- "end_time": "2020-01-18T18:36:08.737Z"
}, - "today": {
- "high": "10125.25",
- "low": "9100.25",
- "open": "9502.50",
- "volume": "872.12314232",
- "start_time": "2020-01-18T00:00:00.000Z",
- "end_time": "2020-01-18T18:36:08.737Z"
}, - "snapshot_at": "2020-01-17T18:36:08.737Z"
}, - {
- "market": "ETHUSD",
- "best_bid": {
- "price": "136.25",
- "amount": "0.14532168"
}, - "best_ask": {
- "price": "138.00",
- "amount": "1.72742000"
}, - "last_execution": {
- "price": "137.75",
- "amount": "0.00003156"
}, - "last_day": {
- "high": "136.75",
- "low": "135.25",
- "open": "135.25",
- "volume": "423.67235137",
- "start_time": "2020-01-17T18:36:08.737Z",
- "end_time": "2020-01-18T18:36:08.737Z"
}, - "today": {
- "high": "135.15",
- "low": "134.13",
- "open": "134.13",
- "volume": "472.12314232",
- "start_time": "2020-01-18T00:00:00.000Z",
- "end_time": "2020-01-18T18:36:08.737Z"
}, - "snapshot_at": "2020-01-17T18:36:08.737Z"
}
]
List Historical Prices
Retrieves a set of average prices at a certain increment of time for the requested market.
This endpoint is suitable for retrieving historical average price trends where price precision, execution, and
other detailed information is not required.
To control the count, use either increment
or max_data_points
.
List Historical Prices returns an error when an unexpected value is given, or when increment
and
max_data_points
are both given or omitted.
When range.begin
is omitted, the first data point shows the mid price, the average of the order book best bid
and ask price, or the earliest available date. It is possible to set range.begin
to a future date without error.
When range.end
is omitted, the last data point will display current mid price (average of order book best bid
and best ask) at the request timestamp. It is possible to set range.end
to a future date without error.
When pagination.limit
is omitted, the pagination limit will default to return the first 100 items.
If the pagination limit is set, the API will return up to the limit in one response. The pagination limit max is 1,000.
Time-series items are returned in chronological (ascending) order. All timestamps are in UTC.
Authorizations:
path Parameters
market required | string Enum: "ETHEUR" "ETHUSD" "BTCEUR" "BTCUSD" "PAXGUSD" "BCHUSD" "LTCUSD" "ETHGBP" "BTCGBP" "LTCGBP" "BCHGBP" "USDPUSD" "ETHBRL" "BTCBRL" "LTCBRL" "BCHBRL" "USDPGBP" "USDPBRL" "LINKUSD" "MATICUSD" "AAVEUSD" "UNIUSD" "AAVEMXN" "BCHMXN" "BTCMXN" "ETHMXN" "LTCMXN" "USDPMXN" "AAVEEUR" "BCHEUR" "LTCEUR" "LINKEUR" "MATICEUR" "PAXGEUR" "SOLEUR" "USDPEUR" "UNIEUR" "PYUSDEUR" Market of Order Book. |
query Parameters
max_data_points | integer <int64> Maximum number of data points to return. The time frame of the increments will be inferred by finding the most granular increment without breaching the |
range.begin | string <date-time> Only return records after this timestamp, inclusive. RFC3339 format, like |
range.end | string <date-time> Only return records before this timestamp, inclusive. RFC3339 format, like |
pagination.limit | integer <int32> Number of results to return |
pagination.offset | integer <int32> Number of results to skip |
increment | string Enum: "ONE_MINUTE" "FIVE_MINUTES" "FIFTEEN_MINUTES" "THIRTY_MINUTES" "ONE_HOUR" "TWO_HOURS" "TWELVE_HOURS" "ONE_DAY" "ONE_WEEK" "TWO_WEEKS" "FOUR_WEEKS" Time increment between prices. Returns data exclusive from |
Responses
Response samples
- 200
{- "market": "BTCUSD",
- "prices": [
- {
- "average_price": "9245.50",
- "timestamp": "2020-01-17T18:36:00.000Z"
}, - {
- "average_price": "9265.50",
- "timestamp": "2020-01-17T18:37:00.000Z"
}
], - "total_count": 50
}