LogoLogo
  • General
    • Welcome to 0xpay
    • Transaction Fees
    • Networks & Assets
  • Integration Cookbook
    • Getting Started
      • Merchant Setup
    • Receive assets
    • Send assets
    • Invoices
    • Exchanges
  • Public API
    • Authorization
      • Signature Examples
    • Endpoints
      • Merchant
      • Basic crypto operations
      • Crypto Invoices
      • Basic Fiat Operations
      • Fiat Invoices
      • Exchange
      • Exchange + Withdrawal
    • Notifications
      • Crypto Callbacks
      • Fiat Callbacks
      • Exchange Callbacks
    • JS/TS SDK
      • Getting started
      • Processing WebHook Notifications
      • Reference
  • Legal Info
    • Terms of Service
      • ANNEX 1: RISK DISCLOSURE
      • ANNEX 2: PROHIBITED BUSINESSES
      • ANNEX 3: HIGH-RISK STATES, TERRITORIES AND JURISDICTIONS
    • Privacy Policy
Powered by GitBook
On this page
  • Create permanent deposit address
  • Create rotating deposit address
  • Send cryptocurrency
  • Withdrawal fee
  • Replenishment risk score
  • Withdrawal risk score
  • Available crypto assets
  1. Public API
  2. Endpoints

Basic crypto operations

PreviousMerchantNextCrypto Invoices

Last updated 1 year ago

Every request listed on this page requires authorization to be successfully completed.

Create permanent deposit address

POST https://public.api.0xpay.app/merchants/addresses

As said , you can generate new deposit addresses with receiving addresses feature. For BEP20 & ERC20 networks: on creation, one wallet address will be generated and assigned for both networks, and monitored for incoming transactions.

Deposit Updates: After a receiving address is created on a dedicated blockchain, 0xpay will for all the assets supported on this blockchain.

Request Body

Name
Type
Description

meta

string

metadata, write your id here to catch it back later with a notification

blockchain*

string

target

object

ticker: string - the currency to which we will try to exchange all funds deposited to this address funds if target.ticker == amount.ticker no exchange will happen

address: string - the address, to which we will withdraw funds in the currency specified in target.ticker

{
  "address":  "0x8EB871bbB6F754a04bCa23881A7D25A30aAD3f23",
  "meta":  "some-user-id",
  "blockchain":  "ETHEREUM"
}

Create rotating deposit address

POST https://public.api.0xpay.app/merchants/rotating-addresses

An address will be active until the first incoming transaction is received, or for a specified timeframe (set with duration parameter)

Request Body

Name
Type
Description

meta

string

metadata, write your id here to catch it back later with a notification

blockchain*

string

duration

number

timeframe for which the address will be active.

(min: 1000 ms; max: 259200000 ms). By default, duration will be set to 86400000ms.

durationAfterReplenishment

number

additional timeframe after the first replenishment transaction, during which the address will still stay active for deposits.

(min: 1000 ms; max: 86400000 ms). By default, duration will be set to 7200000 ms.

{
  "meta":  "some-user-id",
  "address":  "0x8EB871bbB6F754a04bCa23881A7D25A30aAD3f23",
  "duration": 16508758624753,
}

Send cryptocurrency

POST https://public.api.0xpay.app/merchants/withdrawals/crypto

Request Body

Name
Type
Description

ticker*

string

find values with "List available tickers" request

to*

string

Destination wallet address

blockchain*

string

amount*

string

amount in decimal format

fee

string

you can specify withdrawal fees that have to be greater than the actual fee, which can be useful for better fee calculation options on your side. If not the specified – fee will be set automatically

localId

string

meta

string

your metadata that will be passed along to you later with a notification

{
    "id": "123e4567-e89b-12d3-a456-426614174000" //internal ID has been assigned to the tx
}
Error codes:
//List of error codes:
//0 - Local id already placed 
//1 – Not enough balance
//2 – Fee less than required
//3 – Withdraw amount too low
//4 – Merchant not found
//5 – Balance not found
//6 – You don't have permission for this

{
    code: 0 
    description: "Local id already placed"
}

Withdrawal fee

GET https://public.api.0xpay.app/merchants/withdrawals/crypto/fee

Request Body

Name
Type
Description

ticker*

string

find values with "List all supported assets" request

blockchain*

string

amount*

string

amount in decimal format

address

string

destination wallet address (fill in to check if tx is an internal zero-fee transfer)

{
  "value":  "0.1" //decimal fee value
}
Error codes:
{
    code: 0 
    description: "Asset not supported"
}

Replenishment risk score

GET https://public.api.0xpay.app/merchants/replenishment/crypto/:id/compliance

This method is used to get replenishment risk score by it's id.

We recommend you to check risk score in 5 minutes after transaction is being broadcasted to blockchain.

{
    "url": "https://yourreport.com",
    "signals": {
        "atm": 0,
        "ico": 0,
        "scam": 0,
        "miner": 0,
        "mixer": 0,
        "other": 0,
        "ransom": 0,
        "wallet": 0,
        "payment": 0,
        "exchange": 0,
        "gambling": 0,
        "sanctions": 0,
        "fraud_shop": 0,
        "dark_market": 0,
        "marketplace": 0,
        "dark_service": 0,
        "p2p_exchange": 0,
        "stolen_coins": 0,
        "seized_assets": 0,
        "risky_exchange": 0,
        "smart_contract": 0,
        "illegal_service": 0,
        "liquidity_pools": 0,
        "online_pharmacy": 0,
        "unnamed_service": 0,
        "lending_contract": 0,
        "protocol_privacy": 0,
        "special_measures": 0,
        "illicit_actor_org": 0,
        "merchant_services": 0,
        "child_exploitation": 0,
        "enforcement_action": 0,
        "exchange_fraudulent": 0,
        "exchange_mlrisk_low": 0,
        "terrorism_financing": 0,
        "exchange_mlrisk_high": 0,
        "token_smart_contract": 0,
        "high_risk_jurisdiction": 0,
        "p2p_exchange_mlrisk_low": 0,
        "exchange_mlrisk_moderate": 0,
        "exchange_mlrisk_veryhigh": 0,
        "p2p_exchange_mlrisk_high": 0,
        "infrastructure_as_a_service": 0,
        "decentralized_exchange_contract": 0
    },
    "riskScore": 0,
    "timestamp": 1686991713000
}

Withdrawal risk score

GET https://public.api.0xpay.app/merchants/withdrawals/crypto/:id/compliance

This method is used to get withdrawal risk-score by it's id.

{
    "url": "https://yourreport.com",
    "signals": {
        "atm": 0,
        "ico": 0,
        "scam": 0,
        "miner": 0,
        "mixer": 0,
        "other": 0,
        "ransom": 0,
        "wallet": 0,
        "payment": 0,
        "exchange": 0,
        "gambling": 0,
        "sanctions": 0,
        "fraud_shop": 0,
        "dark_market": 0,
        "marketplace": 0,
        "dark_service": 0,
        "p2p_exchange": 0,
        "stolen_coins": 0,
        "seized_assets": 0,
        "risky_exchange": 0,
        "smart_contract": 0,
        "illegal_service": 0,
        "liquidity_pools": 0,
        "online_pharmacy": 0,
        "unnamed_service": 0,
        "lending_contract": 0,
        "protocol_privacy": 0,
        "special_measures": 0,
        "illicit_actor_org": 0,
        "merchant_services": 0,
        "child_exploitation": 0,
        "enforcement_action": 0,
        "exchange_fraudulent": 0,
        "exchange_mlrisk_low": 0,
        "terrorism_financing": 0,
        "exchange_mlrisk_high": 0,
        "token_smart_contract": 0,
        "high_risk_jurisdiction": 0,
        "p2p_exchange_mlrisk_low": 0,
        "exchange_mlrisk_moderate": 0,
        "exchange_mlrisk_veryhigh": 0,
        "p2p_exchange_mlrisk_high": 0,
        "infrastructure_as_a_service": 0,
        "decentralized_exchange_contract": 0
    },
    "riskScore": 0,
    "timestamp": 1686991713000
}

Available crypto assets

GET https://public.api.0xpay.app/merchants/assets/crypto/

//In response, you'll get an Array of all assets with their ticker , name, price, and blockchain network: 
[
    {
        "name": "Bitcoin", 
        "ticker": "BTC",
        "blockchains": [
            "BITCOIN"
        ],
        "price": {
            "value": "29931",
            "ticker": "USD"
        }
    },
    {
        "name": "Ethereum",
        "ticker": "ETH",
        "blockchains": [
            "ETHEREUM"
        ],
        "price": {
            "value": "1797.26",
            "ticker": "USD"
        }
    },
    {
        "name": "BNB",
        "ticker": "BNB",
        "blockchains": [
            "BINANCE_SMART_CHAIN"
        ],
        "price": {
            "value": "301.54",
            "ticker": "USD"
        }
    }
 ]

available values you can find ("API value" column)

blockchain: string - network in which withdrawal will be made, this field is required if target.address is provided, available values you can find ("API value" column)

As said , you can generate new deposit addresses with receiving addresses feature.

Deposit Updates: After a receiving address is created on a dedicated blockchain, 0xpay will for all the assets supported on this blockchain.

available values you can find ("API value" column)

Creates an outgoing cryptocurrency transaction. 0xpay API will produce according to status updates on your withdrawal.

available values you can find ("API value" column)

if was specified error will be thrown if not unique, can be useful on your side to avoid the issue

This method is used to get a fee for sending a desired amount of assets (ticker) on a chosen blockchain. Learn how fees work

available values you can find ("API value" column)

This method is used to fetch all available crypto assets of your merchant. You can learn about available assets .

here
here
double-spend
previously
previously
notify you about incoming transactions
notify you about an incoming transaction
notifications
here
here
here
here
here