GET POST

/user/info

Get general information about a user.

Query Params / Form Data

key string
abcdefghijklmnopqrstuvwxyz0123

Contains your API key.
Get it from here.

user_id string required
abcdefghijklmnopqrstuvwxyz0123

The unique ID of the user whose information you wish to retrieve.
This ID is required.

include_logo boolean

A flag to indicate whether to include the user's logo in the response.
Set to "1" to include, or "0" to exclude the logo.

Response JSON

status string required

Indicates the result of the API request.
For more details about error handling, check here.

uid string required
abcdefghijklmnopqrstuvwxyz0123

The unique ID of the user.

storename string
Example Store

The name of the user's store.

payment_methods arrayv
payment method specific

Payment method data for a user.

logo string
base64

The base64-encoded image string representing the user's logo.

rewards JSON object required
{}

Contains a list of rewards the user has claimed from our rewards page.

created int required
123456789

Contains the unix time at which the account was created.

GET POST

/user/transactions

Get a users transactions.

Query Params / Form Data

key string required
abcdefghijklmnopqrstuvwxyz0123

Contains your API key.
Get it from here.

user_id string required
abcdefghijklmnopqrstuvwxyz0123

The unique ID of the user whose transactions you wish to retrieve.
This ID is required.

rows integer
10

The number of transactions to return per page.
This parameter is optional. If provided, it must be used with the `page` parameter.
Capped at 100. Sending neither returns the first 20 rows - it no longer returns everything.

page integer
1

The page number to retrieve.
This parameter is optional. If provided, it must be used with the `rows` parameter.
Pages are 1-based; `page=0` is a 400.

Response JSON

status string required

Indicates the result of the API request.
For more details about error handling, check here.

transactions array required
uid, amount_topay, currency, status, payment_method, created, expires, cancelled, completed

A list of transactions associated with the user.

GET POST

/user/funds

Get a users funds.

Query Params / Form Data

key string required
abcdefghijklmnopqrstuvwxyz0123

Contains your API key.
Get it from here.

user_id string required
abcdefghijklmnopqrstuvwxyz0123

The unique ID of the user whose funds you wish to retrieve.
This ID is required.

rows integer
10

The number of funds records to return per page.
This parameter is optional. If provided, it must be used with the `page` parameter.
Capped at 100. Sending neither returns the first 20 rows - it no longer returns everything.

page integer
1

The page number to retrieve.
This parameter is optional. If provided, it must be used with the `rows` parameter.
Pages are 1-based; `page=0` is a 400.

Response JSON

status string required

Indicates the result of the API request.
For more details about error handling, check here.

funds array required
uid, amount, currency, type, time

A list of ledger entries associated with the user, newest first. "amount" is signed - credits positive, debits negative.

"uid" is the ledger entry's own identifier. It used to carry the id of whatever caused the entry, so it could be joined against a withdrawal or exchange id; entries written since the changeover no longer correlate that way.

"type" is one of: revenue, deposit, withdrawal, exchange_out, exchange_in, fee, reward, registration_bonus. The two exchange legs used to share the single value "exchange"; historical rows may also contain "is_deposit" and "registration bonus" with a space.

GET POST

/user/balances

Get a users balances.

Query Params / Form Data

key string required
abcdefghijklmnopqrstuvwxyz0123

Contains your API key.
Get it from here.

user_id string required
abcdefghijklmnopqrstuvwxyz0123

The unique ID of the user whose balances you wish to retrieve.

currency string
btc,xmr

A filter, not a conversion target: a comma-separated list naming which currencies to return. A named currency the user holds nothing of comes back as zero; an unknown code is a 400.
This parameter used to be the conversion target - use "convert_currency" for that now.

convert_currency string

Convert every balance into this currency.
Wins over "convert_currency_from_settings".

convert_currency_from_settings boolean
1

Convert into the user's own settings currency, configurable here.

Response JSON

status string required

Indicates the result of the API request.
For more details about error handling, check here.

converted_currency string when converting

The currency the balances were converted into.
Formerly called "currency". Conversion is opt-in, so this is absent unless "convert_currency" or "convert_currency_from_settings" was supplied.

total_balance string when converting
11.55

The total balance of the user, denominated in the converted currency. Excludes credit funds, which cannot be withdrawn.

balances object required
currency: actual, credit, converted, percent

An object containing the balances for currencies the user owns.
"actual" is withdrawable money only - exactly what withdraw and exchange will accept. It used to include credit funds, which both of those refuse.
"credit" is fee-only money that can never be withdrawn. The two never overlap, and the old "actual" is the sum of them.
"converted" and "percent" are only present when converting, and "converted" is null for a currency we currently have no rate for.

GET POST

/user/stats

Retrieve statistics about a user's transactions, including revenue, transaction count, and completion rates.

Query Params / Form Data

key string required
abcdefghijklmnopqrstuvwxyz0123

Contains your API key.
Get it from here.

user_id string required
abcdefghijklmnopqrstuvwxyz0123

The unique ID of the user whose statistics you wish to retrieve.

time integer
86400

The time period in seconds to filter the transactions.
Optional. Defaults to 24 hours (86400 seconds).

Response JSON

status string required

Indicates the result of the API request.
For more details about error handling, check here.

currency string required

The currency in which the stats are reported.
Can be configured here.

revenue string required
1500.25

The total revenue in the user's currency over the selected time period.
This is a decimal string, not a JSON number.
A currency we currently have no usable price for is left out of the revenue figure but still counted in transaction_count and completion_rate - this endpoint does not fail on a stale rate.

revenue_change decimal required
15.5

The percentage change in revenue compared to the previous period.

transaction_count integer required
500

The total number of transactions in the user's account over the selected time period.

transaction_count_change decimal required
10

The percentage change in the transaction count compared to the previous period.

completion_rate decimal required
80.5

The percentage of transactions marked as completed over the selected time period.

completion_rate_change decimal required
5.3

The percentage change in the completion rate compared to the previous period.

GET POST

/user/exchange

Perform an exchange from one currency to another for a user.
This endpoint allows users to exchange a specified amount of currency they hold for another currency based on the current exchange rate.

Query Params / Form Data

key string required
abcdefghijklmnopqrstuvwxyz0123

Contains your API key.
Get it from here.

user_id string required
abcdefghijklmnopqrstuvwxyz0123

The unique ID of the user performing the exchange.

currency_from string required

The currency the user is exchanging from.

currency_to string required

The currency the user is exchanging to.

currency_from_amount decimal required*
100.0

The amount of the source currency (currency_from) the user wants to exchange. Provide either currency_from_amount or currency_to_amount.

currency_to_amount decimal required*
100.0

The amount of the target currency (currency_to) the user wants to receive. Provide either currency_from_amount or currency_to_amount.
Supplying both, or neither, is a 400 - it is no longer resolved silently.

simulate boolean
1

Price the exchange without executing it. Returns the same body without an "exchange_id".

Response JSON

status string required

Indicates the result of the API request.
For more details about error handling, check here.

exchange_id string unless simulating
abcdefghijklmnopqrstuvwxyz0123

The unique identifier for the exchange transaction.

rate, currency_from, currency_from_amount, currency_to, currency_to_amount string required
0.0000105

The rate used and both sides of the exchange, with the amount you did not supply filled in.

fee string required
0.29

The exchange fee. It lands on whichever side you did not fix: denominated in currency_to when you supplied currency_from_amount, and in currency_from otherwise.
Exchange spends withdrawable balance only - credit funds are excluded.

GET POST

/user/withdraw

Withdraw an amount of a specific currency to a designated recipient address.
This endpoint allows users to withdraw their funds to an external crypto address.

Query Params / Form Data

key string required
abcdefghijklmnopqrstuvwxyz0123

Contains your API key.
Get it from here.

user_id string required
abcdefghijklmnopqrstuvwxyz0123

The unique ID of the user requesting the withdrawal.

currency string required

The currency the user wishes to withdraw.

amount decimal required
0.5

The amount of the currency to be withdrawn.
This is the amount before any withdrawal fees are applied.
The response tells you exactly what was charged and what will arrive, so the fee no longer has to be guessed at.

recipient_address string required
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

The recipient's crypto address where the funds will be sent.
The address is checksum-validated for this exact currency, so a typo or an address for the wrong chain is rejected with "invalid_recipient_address" instead of being accepted and lost.

Response JSON

status string required

Indicates the result of the API request.
For more details about error handling, check here.

withdrawal_id string required
abcdefghijklmnopqrstuvwxyz0123

The unique identifier for the withdrawal transaction.

private_key string required
abcdefghijklmnopqrstuvwxyz0123

The webhook signing secret for this withdrawal.

amount_charged string required
0.5

What was actually debited from your balance.

amount_sent string required
0.499

What the recipient will receive.

fee string required
0.001

The difference between the two.

GET POST

/user/changesettings

Change various user settings such as username, currency, password, and other details.
This endpoint allows the user to update settings like their username, currency, password, store name, terms of service, privacy policy, logo, banner, theme color, and payment methods.

Query Params / Form Data

key string required
abcdefghijklmnopqrstuvwxyz0123

Your API key.
Get it from here.

user_id string required
abcdefghijklmnopqrstuvwxyz0123

The unique ID of the user whose settings are being updated.

username string
new_username

The new username for the user.

currency string

The new currency for the user.

update_key boolean
True

Whether to generate a new API key for the user.
Accepts "True", "true" or "1". Requires "current_password".
The new key is returned in "data.new_key" and the old one stops working immediately.

password string
new_password

The new password for the user.
Between 12 and 256 characters. Requires "current_password".

current_password string required with password / update_key
old_password

Your existing password, in plaintext.
This replaces "confirm_password", which only compared two fields the same client supplied and proved nothing about who was holding the session. Do your confirm-field comparison in your own UI.
A missing or wrong value is a 403 "not_permitted".

storename string
new_store_name

The new store name for the user.

terms_of_service string
https://example.com/terms

The URL for the updated terms of service.

privacy_policy string
https://example.com/privacy

The URL for the updated privacy policy.

logo base64 string
base64encodedstring

The base64-encoded image for the user's logo.

theme_color hex color
FFFFFF

The new theme color for the user.

payment_methods JSON object
{"btc": {"status": "enabled"}}

A JSON object representing the user's payment methods and their statuses.

paypal_accounts JSON object
[{"email": "[email protected]", "gs": false, "ff": true, "status": "enabled"}, {"email": "[email protected]", "gs": true, "ff": true, "status": "disabled"}]

A JSON object representing the user's PayPal accounts, including email and status (can be set to "enabled/disabled/hold"), whether to accept gs (goods and services) and ff (friends and family) payments.

Response JSON

status string required

Indicates the result of the API request.
For more details about error handling, check here.

data array
{"new_key": "new_api_key_string"}

Contains additional data related to the update.
For example, if the API key is updated, this field may contain the new key.