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 Enum: "TRAVEL_RULE_INFO_REQUESTED" "TRAVEL_RULE_REJECTED" Optionally filter by secondary status.
|
statuses | Array of strings Items Enum: "PENDING" "COMPLETED" "FAILED" Optionally filter by 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",
- "notional_value": "1.02",
- "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",
- "notional_value": "1.02",
- "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. |
include_deleted | boolean Used to include deleted accounts in the response. |
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 ( |
query Parameters
include_deleted | boolean Used to include deleted accounts in the response. |
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"
}, - "scb": {
- "account_number": "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 | string The Identity ( |
account_id | string The Account ( |
fiat_network required | string (FiatNetwork) Enum: "WIRE" "DBS_ACT" "CUBIX" "SCB" |
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 | 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 <= 500 characters ^[0-9A-Za-z /?:().,&'+-]*$ Optional additional memo to be set on the outgoing withdrawal. For wire withdrawals the character limit is 100. For CUBIX intrabank withdrawals, the character limit is 40. For DBS intrabank withdrawals, the character limit is 100. For SCB intrabank withdrawals, the character limit is 140. |
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
- 409
{- "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" "BASE" "ARBITRUM_ONE" "INK" 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" "BASE" "ARBITRUM_ONE" "INK" 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) | |
memo | string Optional additional memo to be included with the withdrawal as an identifier. |
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" "BASE" "ARBITRUM_ONE" "INK" 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. | |
from_identity_id | string The Paxos Identity ( |
from_account_id | string The Paxos Account ( |
to_identity_id | string The Paxos Identity ( |
to_account_id | string The Paxos Account ( |
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. | |
from_identity_id | string The Paxos Identity ( |
from_account_id | string The Paxos Account ( |
to_identity_id | string The Paxos Identity ( |
to_account_id | string The Paxos Account ( |
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": "0.05",
- "asset": "BTC",
- "auto_conversion": { },
- "balance_asset": "BTC",
- "created_at": "2024-12-11T17:45:14.423911Z",
- "customer_id": "be05ac89-d1dc-4be7-b64a-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.05",
- "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 a person or institution who is able to take actions on the Paxos Platform. Depending on your integration type you might not need to create Identities for your end users.
Identities must pass a set of verifications and checks before they're able to transact on the Platform. Learn more about getting started with Identity and managing their onboarding lifecycle in the Identity Developer Guide.
List Identities
This endpoint enables you to fetch a list of Identities.
You can use query parameters to filter the results returned by created_at
, updated_at
, summary_status
and identity_type
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
Creates a new Person or Institution Identity on the Paxos Platform.
A successful response indicates that the identity has been created and is PENDING
approval. The identity is only
available to use on the Platform once it is APPROVED
. For a full description of statuses read the status guide here.
For detailed guidance on which fields are required for your integration or the lifecycle of an Identity on the platform, please read the Identity Developer Guide.
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 its (identity) id. You can only see identities created by you.
You can use the query parameter include_details
to include identity details (person_details
or institution_details
) in
the response and the query parameter include_institution_members
to include institution members in the response.
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
Updates an Identity, this action performs a delta of what is submitted in the update and the existing identity.
- Updating details (
person_details
orinstitution_details
) might lead to the identity being re-verified (e.g. re-screening name changes), which could impact the identity's ability to transact on the Platform. - Setting
set_user_disabled
totrue
will make the IdentityDISABLED
(read more here on what this means) - Setting
tax_details
will update all the tax details for the identity - Setting
last_kyc_refresh_date
indicates this is not an adhoc-update, and instead an update for a periodic kyc refresh
Changing an Institution Identity to a Person and vice-versa is not supported.
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. |
last_kyc_refresh_date | string <date-time> Set to the timestamp the identity has last undergone a periodic kyc refresh. If unset, the update is not for
periodic kyc refresh. RFC3339 format, like |
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"
}
Institution Members allow you to associate persons with an institution on our Platform. Each institution can have multiple members, with each member representing the relationship to a person identity.
When creating an institution identity, you must designate at least one institution member. This requirement ensures we have complete information about the institution's ownership structure and key personnel, which is necessary to onboard institutions.
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"
}
]
}
Accounts connect Identities (persons or institutions) to Profiles (asset balances). Key features include:
- Balance Management: Track and manage profile balances via Subledgering
- Joint Account Support: Link multiple Identities to a single Account for shared on platform balance
Accounts are required for all Identity API integrations.
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"
}
Account Members allow you to associate an Identity with an Account on our Platform. Each Account can be linked to multiple Identities, which supports Joint Accounts (where two Identities have the ability to transact against a single Profile)
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"
}
]
}
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 available 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 for identity verification or enhanced due diligence purposes. When uploading a document you must specify the document type. You will receive a URL where you can upload the document using a POST request.
Requirements:
- Uploaded documents must be less than 100 MB in size
- Supported formats include PDF, JPG, and PNG
For more information on document requirements for enhanced due diligence, see here.
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. |
nickname | string Optionally filter by Profile display name. Retrieves nickname(s) based on the beginning characters of the given display name (prefix matching). Case insensitive. WIldcards and regular expressions not supported. |
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. |
query Parameters
include_deactivated | boolean Used to include deactivated profiles in the response. |
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"
}
]
}
Deactivate Profile
Deactivate the given profile_id
. The default profile cannot be deactivated.
Deactivated profiles won't be visible for deposits.
Profiles with more than zero balances cannot be deactivated.
If a deactivated profile has a non-zero balance it will be reactivated.
Authorizations:
path Parameters
profile_id required | string The UUID of the profile. The default profile cannot be deactivated. The profile must have a zero balance to be deactivated. |
Responses
Response samples
- 200
{ }
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" "BASE" "ARBITRUM_ONE" "INK" A CryptoNetwork is a blockchain transmitting cryptocurrencies. |
crypto_address | string (The crypto address on which to deposit the asset. If not set, then a random address is used) |
Responses
Request samples
- Payload
{- "asset": "string",
- "amount": "string",
- "crypto_network": "BITCOIN",
- "crypto_address": "string"
}
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
}
A Monitoring Address is a blockchain address that Paxos monitors daily for eligible stablecoin activity and determines the amount of rewards your organization will earn. We recommend adding any addresses you expect to hold, receive, or mint Paxos stablecoins as a monitoring address in order to receive rewards for all of your qualifying on-chain activity.
Monitoring addresses must be added by month end (
23:59 UTC+0
) in order to earn rewards for that month. Addresses added after month end will start earning rewards for the following month.
These endpoints are only relevant for Global Dollar Network (GDN) partners.
List Monitoring Address
Retrieve a list of monitoring address
Filter by address, network or both to retrieve a single record
Authorizations:
query Parameters
address | string On-chain address Paxos will monitor for eligible reward activity. Must be valid for the specified network. Note: We only accept wallet addresses for Solana. Derived addresses (i.e. ATA’s) are not yet supported |
crypto_network | string Enum: "BITCOIN" "ETHEREUM" "BITCOIN_CASH" "LITECOIN" "SOLANA" "POLYGON_POS" "BASE" "ARBITRUM_ONE" "INK" Network the address belongs to. Supported: |
limit | integer <int32> Number of results to return. Defaults to 100 if no limit is provided. Maximum 1000. |
order | string Enum: "DESC" "ASC" Results are ordered by created_at. Specify the ordering of the results. |
page_cursor | string Cursor for pagination |
Responses
Response samples
- 200
{- "addresses": [
- {
- "address": "0xD6E012522DB5075694ac9907BABBDB4825A1c822",
- "id": "6477f17d-7c17-43a5-84cc-a6a104a89d81",
- "crypto_network": "ETHEREUM",
- "name": "Address 1",
- "created_at": "2025-03-21T14:45:22.682768Z"
}, - {
- "address": "0xD6E012522DB5075694ac9907BABBDB4825A1c822",
- "id": "6477f17d-7c17-43a5-84cc-a6a104a89d81",
- "crypto_network": "ETHEREUM",
- "created_at": "2025-02-20T14:45:22.682768Z"
}, - {
- "address": "14grJpemFaf88c8tiVb77W7TYg2W3ir6pfkKz3YjhhZ6",
- "id": "6477f17d-7c17-43a5-84cc-a6a104a89d81",
- "crypto_network": "SOLANA",
- "created_at": "2025-01-10T14:45:22.682768Z"
}
], - "next_page_cursor": "CgwI-Pr1vgYQyLLpswESJDM2NGU2MTgyLTRhZjctNDg4NC1iY2MxLTM0MThmNTA0MWYzYg"
}
Create Monitoring Address
Adds an address to be monitored for rewards distribution
Currently supporting only ETHEREUM
, SOLANA
& INK
addresses are supported
Authorizations:
Request Body schema: application/json
crypto_network | string (CryptoNetwork) Enum: "BITCOIN" "ETHEREUM" "BITCOIN_CASH" "LITECOIN" "SOLANA" "POLYGON_POS" "BASE" "ARBITRUM_ONE" "INK" A CryptoNetwork is a blockchain transmitting cryptocurrencies. |
address | string (On-chain address Paxos will monitor for eligible reward activity. Must be valid for the specified network.
Note: We only accept wallet addresses for Solana. Derived addresses (i.e. ATA’s) are not yet supported) |
name | string Optional display name. Useful for grouping or reporting. |
Responses
Request samples
- Payload
{- "crypto_network": "ETHEREUM",
- "address": "0x2D2849217C027494ae0D7Af2fC7f9b798Ddd5aB9",
- "name": "New Address"
}
Response samples
- 200
- 400
{- "address": {
- "address": "0x2D2849217C027494ae0D7Af2fC7f9b798Ddd5aB9",
- "crypto_network": "ETHEREUM",
- "name": "New Address",
- "created_at": "2025-03-21T15:22:05.474383Z"
}
}
Get Monitoring Address
Retrieves a monitoring address by id
Authorizations:
path Parameters
id required | string UUID for internal reference. |
Responses
Response samples
- 200
- 400
- 404
{- "address": "0xD6E012522DB5075694ac9907BABBDB4825A1c822",
- "id": "6477f17d-7c17-43a5-84cc-a6a104a89d81",
- "crypto_network": "ETHEREUM",
- "name": "Address 1",
- "created_at": "2025-03-21T14:45:22.682768Z"
}
Update Monitoring Address
Updates a monitored address name
Authorizations:
path Parameters
id required | string UUID for internal reference. |
Request Body schema: application/json
name | string Optional display name. Useful for grouping or reporting. |
Responses
Request samples
- Payload
{- "name": "Address name"
}
Response samples
- 200
- 400
{- "address": {
- "id": "6477f17d-7c17-43a5-84cc-a6a104a89d81",
- "address": "0x2D2849217C027494ae0D7Af2fC7f9b798Ddd5aB9",
- "crypto_network": "ETHEREUM",
- "name": "Address name",
- "created_at": "2025-03-21T15:22:05.474383Z"
}
}
A Statement summarizes all eligible stablecoin rewards for a given organization over a fixed time period. It aggregates earned reward types (e.g., custody, mint, acceptance) and records whether the statement was paid.
Statements are generated monthly and are immutable. Revised statements will be issued as a new statement with a unique ID. Statements can be used to reconcile balances or for accounting and accounts receivable purposes.
These endpoints are only relevant for Global Dollar Network (GDN) partners.
List Statements
List statements based on the provided filters
Authorizations:
query Parameters
customer_id | string customer_id is a required field. |
ref_ids | Array of strings Optionally filter by the ref_ids of the statements. |
statement_ids | Array of strings Optionally filter by the ids of the statements. |
statuses | Array of strings Items Enum: "STATEMENT_STATUS_UNSPECIFIED" "STATEMENT_STATUS_INITIATED" "STATEMENT_STATUS_GENERATED" "STATEMENT_STATUS_PAID" Optionally filter by the statuses of the statements to be returned. Defaults to all statuses. |
limit | integer <int32> Number of results to return. Defaults to 100. |
order | string Enum: "DESC" "ASC" Sort order for the results by period start, defaults to DESC if not provided. |
page_cursor | string Cursor for getting the next page of results. |
Responses
Response samples
- 200
{- "statements": [
- {
- "id": "704b4e48-bbb1-4086-b6e4-6e9b2e3e5d7a",
- "ref_id": "USDG_REWARDS-cdcbff8e-cf51-4536-ba6f-92ef6846e48a-2025-02",
- "customer_id": "cdcbff8e-cf51-4536-ba6f-92ef6846e48a",
- "type": "STATEMENT_TYPE_USDG_REWARD",
- "product": "USDG_REWARDS",
- "status": "STATEMENT_STATUS_PAID",
- "metadata": {
- "total_amount": "100.5"
}, - "statement_balances": [
- {
- "asset": "USDG",
- "amount_paid": "100.5",
- "total_amount_owed": "100.5"
}
], - "period_start": "2025-02-01T00:00:00Z",
- "period_end": "2025-02-28T23:59:59.999999Z",
- "generated_at": "2025-03-18T23:11:47.840321Z",
- "paid_at": "2025-03-19T19:21:57.172302Z",
- "created_at": "2025-03-18T23:11:47.627302Z"
}, - {
- "id": "30ed2047-6155-4b75-b235-6600aa7f65dd",
- "ref_id": "USDG_REWARDS-cdcbff8e-cf51-4536-ba6f-92ef6846e48a-2025-03",
- "customer_id": "cdcbff8e-cf51-4536-ba6f-92ef6846e48a",
- "type": "STATEMENT_TYPE_USDG_REWARD",
- "product": "USDG_REWARDS",
- "status": "STATEMENT_STATUS_PAID",
- "metadata": {
- "total_amount": "100.5"
}, - "statement_balances": [
- {
- "asset": "USDG",
- "amount_paid": "100.5",
- "total_amount_owed": "100.5"
}
], - "period_start": "2025-02-18T00:00:00Z",
- "period_end": "2025-03-18T00:00:00Z",
- "generated_at": "2025-03-18T19:11:54.606991Z",
- "paid_at": "2025-03-20T14:26:06.649645Z",
- "created_at": "2025-03-18T19:11:54.372336Z"
}
]
}
Payments represent actual transfers of rewards to the payout address associated with a given statement. Payments are made on-chain to a specified payout address. Payments tie 1:1 with a statement amount.
Use the ref_id
to link payments to statements.
Some fields (e.g.,
account_id
,profile_id
) are populated for consistency but are not relevant to reward-specific flows.
These endpoints are only relevant for Global Dollar Network (GDN) partners.
List Payments
List payments based on the provided filters
Authorizations:
query Parameters
ref_ids | Array of strings No other parameters are allowed if ref_ids are provided |
payment_ids | Array of strings No other parameters are allowed if payment_ids are provided |
customer_id | string Use together with product to list for a specific customer and product |
product | string Value: "USDG_REWARDS" Use together with product to list for a specific customer and product |
payment_status | string Enum: "PAYMENT_STATUS_PENDING" "PAYMENT_STATUS_COMPLETED" "PAYMENT_STATUS_FAILED" Optional, filter by payment status |
limit | integer <int32> Number of results to return. Defaults to 100 if no limit is provided. |
order | string Enum: "DESC" "ASC" Sort order for the results by created at, defaults to DESC if not provided. |
page_cursor | string Cursor for getting the next page of results. |
Responses
Response samples
- 200
{- "payments": [
- {
- "id": "08ae7260-0967-44e4-b2e3-e9c837a3de69",
- "customer_id": "cdcbff8e-cf51-4536-ba6f-92ef6846e48a",
- "profile_id": "00000000-0000-0000-0000-000000000000",
- "account_id": "00000000-0000-0000-0000-000000000000",
- "ref_id": "cdcbff8e-cf51-4536-ba6f-92ef6846e48a-USDG_REWARDS-cdcbff8e-cf51-4536-ba6f-92ef6846e48a-2025-02-USDG-100.5-seq#1",
- "product": "USDG_REWARDS",
- "payment_type": "PAYMENT_TYPE_CRYPTO_WITHDRAWAL",
- "payment_destination": "f45b7f18-a10d-4e19-bea2-9aa91cab6b69",
- "payment_asset": "USDG",
- "payment_amount": "100.5",
- "payment_status": "PAYMENT_STATUS_COMPLETED",
- "created_at": "2025-03-19T14:00:45.589886Z",
- "processed_at": "2025-03-19T19:21:57.172302Z"
}, - {
- "id": "b05683f7-28ac-43fa-8ed8-b332cf28051e",
- "customer_id": "cdcbff8e-cf51-4536-ba6f-92ef6846e48a",
- "profile_id": "00000000-0000-0000-0000-000000000000",
- "account_id": "00000000-0000-0000-0000-000000000000",
- "ref_id": "cdcbff8e-cf51-4536-ba6f-92ef6846e48a-USDG_REWARDS-cdcbff8e-cf51-4536-ba6f-92ef6846e48a-2025-03-USDG-100.5-seq#1",
- "product": "USDG_REWARDS",
- "payment_type": "PAYMENT_TYPE_CRYPTO_WITHDRAWAL",
- "payment_destination": "f45b7f18-a10d-4e19-bea2-9aa91cab6b69",
- "payment_asset": "USDG",
- "payment_amount": "100.5",
- "payment_status": "PAYMENT_STATUS_COMPLETED",
- "created_at": "2025-03-18T19:26:54.298637Z",
- "processed_at": "2025-03-20T14:26:06.649645Z"
}
], - "next_page_cursor": "CgwI-Pr1vgYQyLLpswESJDM2NGU2MTgyLTRhZjctNDg4NC1iY2MxLTM0MThmNTA0MWYzYg"
}
The Events API allows you to fetch events that occurred on the Paxos platform with the full event payload. This REST API can be used as part of your webhook integrations (including rebuilding your event history should your webhook consumer exceed its retries), or standalone by polling for events related to your identities.
List Events
This endpoint enables you to fetch a list of events that have been created by the system.
You can use query parameters to filter the results by the created_at
time using created_at.lt
, created_at.gt
, etc. and you can
limit
the number of events returned.
Using created_at
and limit
together will allow you to paginate through all events owned by you.
Events returned will always be order in created_at
ascending order.
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. Defaults to 100 if no limit is provided. |
type | string Retrieve all (default) or optionally filter by event type. |
Responses
Response samples
- 200
- 400
- 403
{- "events": [
- {
- "id": "d99a03ee-6b88-4362-89da-087c2c8cd4a7",
- "type": "identity.approved",
- "object_type": "identity_summary_status_change",
- "object": {
- "id": "d840cf31-352f-4190-a476-7522bf3eafda",
- "identity_id": "4fd025ab-f29f-47e6-a02e-df90a61c7ec9",
- "previous_summary_status": "PENDING",
- "next_summary_status": "APPROVED"
}, - "created_at": "2023-08-25 14:25:41 UTC",
- "undelivered_webhooks": 0
}, - {
- "id": "19c0ae8e-fdfc-4b27-88af-07762af8f2a8",
- "type": "identity.documents_required",
- "object_type": "identity_documents_required",
- "object": {
- "id": "d11aba88-39cd-4445-acbb-e4d127588def",
- "identity_id": "fc9dcae4-5411-464c-a20e-f0911ee1c5c1",
- "required_documents": [
- "TAX_IDENTIFICATION",
- "PROOF_OF_RESIDENCY",
- "PROOF_OF_FUNDS"
]
}, - "created_at": "2023-08-24 18:29:41 UTC",
- "undelivered_webhooks": 0
}
]
}
Get Event
Get an Event by its (event) id, the event must have been created by the system and you must be the owner of the the event, you can get an event id by either listing events or via a webhook integration.
Authorizations:
path Parameters
id required | string The unique |
Responses
Response samples
- 200
- 400
- 403
- 404
{- "id": "d99a03ee-6b88-4362-89da-087c2c8cd4a7",
- "type": "identity.approved",
- "object_type": "identity_summary_status_change",
- "object": {
- "id": "d840cf31-352f-4190-a476-7522bf3eafda",
- "identity_id": "4fd025ab-f29f-47e6-a02e-df90a61c7ec9",
- "previous_summary_status": "PENDING",
- "next_summary_status": "APPROVED"
}, - "created_at": "2023-08-25 14:25:41 UTC",
- "undelivered_webhooks": 0
}
Identity requires additional documents, use the UploadDocument endpoint to upload all required documents.
Identity is APPROVED
Identity is DENIED
Identity is DISABLED
Identity is required to undergo its periodic KYC refresh.
Identity has successfully completed its periodic KYC refresh.
Identity has not completed its required KYC refresh within the designated timeframe.
Note: We may add additional event types at any time. Your implementation should handle unexpected event types gracefully.
The following object schemas describe the structure of data that accompanies each event type.
Field | Type | Description |
---|---|---|
id
|
UUID | Unique identifier for this event object |
identity_id
|
UUID | Identifier for the identity requiring documents |
required_documents
|
list enum | List of required document types |
Field | Type | Description |
---|---|---|
id
|
UUID | Unique identifier for this event object |
identity_id
|
UUID | Identifier for the affected identity |
old_summary_status
|
enum |
Previous status:
PENDING
ERROR
APPROVED
DENIED
DISABLED
|
new_summary_status
|
enum |
New status:
PENDING
ERROR
APPROVED
DENIED
DISABLED
|
Field | Type | Description |
---|---|---|
id
|
UUID | Unique identifier for this event object |
identity_id
|
UUID | Identifier for the affected identity |
last_kyc_refresh_date
|
Datetime | Date of the most recent completed KYC refresh (optional) |
next_kyc_refresh_date
|
Datetime | Scheduled date for the next KYC refresh (optional) |