Api Documentation

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 107

AlphaPo Documentation

General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
What makes us better than others? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Supported crypto currencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Supported fiat currencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Available trading pairs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
How can I test your service? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
How do I get a merchant account with AlphaPo? . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
How much does AlphaPo charge for its processing service? . . . . . . . . . . . . . . . . . . . . 10
What alternative payments do you support? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
How can I convert all these different coins to BTC? . . . . . . . . . . . . . . . . . . . . . . . . . 10
Can I convert coins to EUR? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
How often can I expect crypto settlements? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Is it safe to keep my money in your wallet? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Integration guide 12
Deposits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
How it works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Should I use deposits or invoices? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Reusing addresses vs. generating new addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Create and manage deposit addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Create deposit addresses using the API . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Create and manage deposit addresses in the back‐office . . . . . . . . . . . . . . . . . . 16
Fees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Exchange rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Tag field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Withdrawals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Typical withdrawal workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Withdrawal using the API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Exchanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Exchange using the API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Invoices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
General invoice workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Invoice statuses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Invoice types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Invoice without restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Invoice with time restriction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Invoice with time restriction and preselected currency . . . . . . . . . . . . . . . . . . . 23
Invoice failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
What is a crypto payment form? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
What is a crypto wallet URI format? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
What is a QR code? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
How to create a QR code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Best practice as a result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
A note about deposit callback statuses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Validating callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Callbacks in the back‐office . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Foreign IDs and distinguishing callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

API Documentation 31
Obtaining API Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Deposit workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Withdrawal workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Deposit with exchange workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Withdrawal with exchange workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Invoice workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
API endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Get list of supported currencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Get list of exchangeable currency pairs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Get list of currencies rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Get list of balances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Receive cryptocurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Withdraw cryptocurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Calculate exchange rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Exchange on fixed exchange rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Exchange regardless the exchange rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Create Invoice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Deposit data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Callback: BTC sent to a deposit address . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Callback: ETH sent to a deposit address . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Callback: ERC20 sent to a deposit address . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Callback: BTC sent to a deposit address with exchange to EUR . . . . . . . . . . . . . . 55
Withdrawal data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Callback: BTC withdrawn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Callback: ETH withdrawn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Callback: ERC20 withdrawn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Callback: EUR withdrawn with exchange to BTC . . . . . . . . . . . . . . . . . . . . . . 60
Exchange data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Callback: EUR exchanged for BTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Callback: BTC exchanged for USD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Invoices data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Request: invoice without restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Response: invoice without restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Request: invoice with time restriction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Response: invoice with time restriction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Request: invoice with time restriction and preselected currency . . . . . . . . . . . . . 66
Response: invoice with time restriction and preselected currency . . . . . . . . . . . . . 66
Callback: successful invoice payment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Callback: invoice transaction is in the mempool . . . . . . . . . . . . . . . . . . . . . . . 68
Callback: invoice payment by installments . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Callback: invoice timer expired . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Callback: invoice processing status for more than 24 hours . . . . . . . . . . . . . . . . 72
Callback: invoice payment is lesser than invoice amount . . . . . . . . . . . . . . . . . . 73
Callbacks with other statuses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Callback: transaction not confirmed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Callback: transaction cancelled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Confirmations and limits 76

Dynamic minimum deposit fee for BTC 77


How it works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
The minimum deposit fee calculation table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Crosschain recovery policy 78

How to start 79
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
API Set Up Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Whitelisting IP addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Enabling currencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
User Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
My addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
System addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Limits and Cold Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Balance management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Mass Payouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Mass payout file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Initiate a mass payout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
View a mass payout status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Retrying unsuccessful transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Transaction and address tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Transactions tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Risk scoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Payments tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Package Info tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Withdrawal Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Default interface withdrawal limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Custom withdrawal limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Starting Point of API Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Using the test environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Using testnet currencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Receiving callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
AlphaPo Documentation General description / 5

General description
AlphaPo is an organisation providing cryptocurrency payment services. We enable businesses to operate
worldwide, reduce costs, and reach new markets by empowering companies with reliable cryptocurrency
processing methods. We support over 50 cryptocurrencies and counting.

What makes us better than others?


• Simple and fast API for all operations
• Competitive pricing
• Annual security audit by an independent third party
• Turnkey business solutions and 24/7 technical support
• Comprehensive financial reporting for easy reconciliation
• Multi‐tiered access for your employees
• Training materials for team education
• Instant transaction confirmation for popular currencies
• Loyalty program
• Blockchain‐based risk score
AlphaPo Documentation General description / 6

Supported crypto currencies


• ADA — Cardano
• BCH — BitcoinCash
• BNB — Binance Coin
• BNB‐BSC — BNB (BNB Smart Chain)
• BTC — Bitcoin
• DAI — Dai Stablecoin (Erc20)
• DOGE — Dogecoin
• ETH — Ethereum (Ethereum network)
• EURS — STASIS EURS (Erc20)
• LTC — Litecoin
• SNACK — Crypto Snack (BNB Smart Chain)
• TRX — Tron
• USDC — USD Coin (Erc20)
• USDTB — Tether USD (BNB Smart Chain)
• USDTE — Tether USD (Erc20)
• USDTT — Tether USD (Trc20)
• XED — Exeedme (Erc20)
• XRP — Ripple
AlphaPo Documentation General description / 7

Supported fiat currencies


• EUR — Euro
• USD — US Dollar
• CAD — Canadian dollar
• SEK — Swedish krona
• AUD — Australian dollar
• NOK — Norwegian krone
• CHF — Swiss franc
• RUB — Russian rubble
• CNY — Renminbi
• JPY — Japanese yen
• NZD — New Zealand dollar
• MXN — Mexican peso
• ARS — Argentine peso
• BRL — Brazilian real
• GBP — Pound sterling
• INR — Indian Rupee
• KRW — South Korean won
• THB — Thai baht
• VND — Vietnamese dong
• IDR — Indonesian rupiah
• MYR — Malaysian ringgit
• PEN — Peruvian sol
• CLP — Chilean peso
• KZT — Kazakhstani tenge
• UAH — Ukrainian hryvnia
• CZK — Czech koruna
• PLN — Polish złoty
• ZAR — South African rand
• TJS — Somoni
• AZN — Azerbaijan Manat
• KGS — Som
• NGN — Naira
• MDL — Moldovan leu
• BYN — Belarusian ruble
• TRY — Turkish Lira
• ILS — New Israeli Sheqel
• GEL — Georgian Lari
• BDT — Bangladesh taka
• NPR — Nepalese rupee
• LKR — Sri Lankan rupee
• TMT — Turkmenistani Manat
• UZS — Uzbekistani Som
• COP — Colombian Peso
• PYG — Paraguayan guaraní
AlphaPo Documentation General description / 8

Available trading pairs


Convert from Convert to crypto Convert to fiat

ADA BTC ARS, AUD, AZN, BDT, BRL, BYN, CAD, CHF, CLP, CNY,
CZK, EUR, GBP, GEL, IDR, ILS, INR, JPY, KGS, KRW,
KZT, LKR, MDL, MXN, MYR, NGN, NOK, NPR, NZD,
PEN, PLN, RUB, SEK, THB, TJS, TRY, UAH, USD, VND,
ZAR
BCH BNB, BNB‐BSC, BTC, ETH, LTC, ARS, AUD, AZN, BDT, BRL, BYN, CAD, CHF, CLP, CNY,
USDC, USDTE, USDTT COP, CZK, EUR, GBP, GEL, IDR, ILS, INR, JPY, KGS, KRW,
KZT, LKR, MDL, MXN, MYR, NGN, NOK, NPR, NZD,
PEN, PLN, PYG, RUB, SEK, THB, TJS, TMT, TRY, UAH,
USD, UZS, VND, ZAR
BNB BCH, BTC, LTC, USDC, USDTE, AUD, CAD, CHF, EUR, GBP, INR, KZT, NOK, NZD, PLN,
USDTT RUB, TRY, UAH, USD
BNB‐BSC BCH, BTC, LTC, USDC, USDTE, AUD, CAD, CHF, EUR, GBP, INR, KZT, NOK, NZD, PLN,
USDTT RUB, TRY, UAH, USD
BTC ADA, BCH, BNB, BNB‐BSC, DOGE, ARS, AUD, AZN, BDT, BRL, BYN, CAD, CHF, CLP, CNY,
ETH, LTC, TRX, USDC, USDTE, COP, CZK, EUR, GBP, GEL, ILS, INR, JPY, KGS, KRW,
USDTT, XRP KZT, LKR, MDL, MXN, MYR, NGN, NOK, NPR, NZD,
PEN, PLN, PYG, RUB, SEK, THB, TJS, TMT, TRY, UAH,
USD, UZS, ZAR
DAI — EUR, USD
DOGE BTC, USDTE, USDTT EUR, USD, UZS
ETH BCH, BTC, LTC, USDC, USDTE, ARS, AUD, AZN, BDT, BRL, BYN, CAD, CHF, CLP, CNY,
USDTT, XRP COP, CZK, EUR, GBP, GEL, IDR, ILS, INR, JPY, KGS, KRW,
KZT, LKR, MDL, MXN, MYR, NGN, NOK, NPR, NZD,
PEN, PLN, PYG, RUB, SEK, THB, TJS, TMT, TRY, UAH,
USD, UZS, VND, ZAR
LTC BCH, BNB, BNB‐BSC, BTC, ETH, ARS, AUD, AZN, BDT, BRL, BYN, CAD, CHF, CLP, CNY,
USDC, USDTE, USDTT COP, CZK, EUR, GBP, GEL, IDR, ILS, INR, JPY, KGS, KRW,
KZT, LKR, MDL, MXN, MYR, NGN, NOK, NPR, NZD,
PEN, PLN, PYG, RUB, SEK, THB, TJS, TMT, TRY, UAH,
USD, UZS, VND, ZAR
TRX BTC, USDTE ARS, AUD, AZN, BDT, BRL, BYN, CAD, CHF, CLP, CNY,
COP, CZK, EUR, GBP, GEL, IDR, ILS, INR, JPY, KGS, KRW,
KZT, LKR, MDL, MXN, MYR, NGN, NOK, NPR, NZD,
PEN, PLN, PYG, RUB, SEK, THB, TJS, TRY, UAH, USD,
UZS, VND, ZAR
USDC BCH, BNB, BNB‐BSC, BTC, ETH, LTC ARS, EUR, USD
USDTB BCH, BNB, BNB‐BSC, BTC, ETH, LTC, ARS, AUD, AZN, BRL, BYN, CAD, CHF, CLP, CNY, CZK,
TRX, USDC EUR, GBP, GEL, IDR, ILS, INR, JPY, KGS, KRW, KZT,
MDL, MXN, MYR, NGN, NOK, NZD, PEN, PLN, RUB,
SEK, THB, TJS, TRY, UAH, USD, VND, ZAR;
AlphaPo Documentation General description / 9

Convert from Convert to crypto Convert to fiat

USDTE BCH, BNB, BNB‐BSC, BTC, DOGE, ARS, AUD, AZN, BRL, BYN, CAD, CHF, CLP, CNY, COP,
ETH, LTC, TRX CZK, EUR, GBP, GEL, IDR, ILS, INR, JPY, KGS, KRW,
KZT, MDL, MXN, MYR, NGN, NOK, NZD, PEN, PLN,
PYG, RUB, SEK, THB, TJS, TMT, TRY, UAH, USD, UZS,
VND, ZAR
USDTT BCH, BNB, BNB‐BSC, BTC, DOGE, ARS, AUD, AZN, BRL, BYN, CAD, CHF, CLP, CNY, COP,
ETH, LTC CZK, EUR, GBP, GEL, IDR, ILS, INR, JPY, KGS, KRW,
KZT, MDL, MXN, MYR, NGN, NOK, NZD, PEN, PLN,
PYG, RUB, SEK, THB, TJS, TMT, TRY, UAH, USD,
UZS, VND, ZAR
XRP BTC, ETH ARS, AUD, AZN, BDT, BRL, BYN, CAD, CHF, CLP, CNY,
COP, CZK, EUR, GBP, GEL, IDR, ILS, INR, JPY, KGS, KRW,
KZT, LKR, MDL, MXN, MYR, NGN, NOK, NPR, NZD,
PEN, PLN, PYG, RUB, SEK, THB, TJS, TRY, UAH, USD,
UZS, VND, ZAR

You can obtain all supported currency pairs via the /currencies/pairs API endpoint.
AlphaPo Documentation FAQ / 10

FAQ
Tips and answers from the AlphaPo team

How can I test your service?


We can provide you with a trial account at AlphaPo, where you can familiarise yourself with the merchant’s
dashboard and test all the tools. You just need to take some preliminary steps:

1. Download a testnet Bitcoin wallet.


2. Get testnet* coins by visiting one of the designated websites and entering your address generated in
the testnet Bitcoin wallet.
3. Wait for one confirmation to be able to spend your testnet coins.

*Please note that the testnet coins are never supposed to have any value. More information about the Bitcoin
Testnet is available here.
See also: Starting Point of API Testing.

How do I get a merchant account with AlphaPo?


Please apply by filling in the contact form on alphapo.net or send an email to sales@alphapo.net. Our sales
managers will contact you as soon as possible.

How much does AlphaPo charge for its processing


service?
The integration with AlphaPo is free. We only charge transaction fees. Our transaction types are deposit,
withdrawal and exchange. We also have combined transactions, such as deposits with instant exchange. The
fees depend on the required options and the merchant’s business model. Please apply at sales@alphapo.net
for an individual commercial offer.

What alternative payments do you support?


At the moment, we accept over 50 different altcoins (BTC, BCH, LTC, ETH, ETC, XRP, ADA, DOGE) and Tether
tokens (ERC20, TRC20 networks). We are working on adding more currencies.
You can see the full list of supported currencies in the Supported crypto currencies section.

How can I convert all these different coins to BTC?


AlphaPo provides an opportunity for both merchants and their end‐users to send and receive over 140 cryp‐
tocurrencies within their AlphaPo accounts, crediting the counterparty’s balance in the required coin. This
option is available in manual mode for end‐users and through the appropriate API for businesses.
See also: Exchanges.
AlphaPo Documentation FAQ / 11

Can I convert coins to EUR?


Yes. AlphaPo has a built‐in instant exchange function. It allows merchants to immediately exchange the
cryptocurrency paid by their customer into the fiat currency chosen by the merchant.
See also: Exchanges.

How often can I expect crypto settlements?


We make settlements at your request. We do not use rolling reserves, so 100% of the funds are available for
withdrawal at any time. We also have an auto‐withdrawal option for cryptocurrencies: the system makes
settlements automatically when the account balance reaches a certain threshold.
See also: Withdrawals, Limits and Cold Addresses.

Is it safe to keep my money in your wallet?


Absolutely. Your funds are stored in an offline (“cold”) wallet protected from cyber attacks.
An operational (“hot”) wallet holds the funds required for automated operations such as multiple payments
to your clients. This wallet holds AlphaPo’s operating funds. So we have got you covered.
Prior to the integration with AlphaPo, you decide how much money you want to keep in our system, thereby
setting storage limits. All funds exceeding these limits (bankroll) will be automatically transferred to your
external address.
See also: Limits and Cold Addresses.
AlphaPo Documentation Integration guide / 12

Integration guide
When we talk about cryptocurrency as a payment method, we should keep in mind that its payment workflow
differs from classic payment methods such as bank cards or e‐wallets. Therefore, when customers use this
payment method in a web‐service or application, they need some advice on how to make the payment
process convenient and simple.
In this integration guide, we would like to share our knowledge of how to efficiently work with cryptocur‐
rencies. We will also provide the most important information about the various AlphaPo API integration
options.
Deposits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Withdrawals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Exchanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Invoices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
What is a crypto payment form? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
AlphaPo Documentation Deposits / 13

Deposits
AlphaPo supports creating channel deposits which is a common flow for letting a user top up their balance
on your site. In this flow, AlphaPo generates a dedicated crypto address for your user by your request, and
the user can make transactions to this address at any time. Such an address is called a deposit address. You
get notified about each transaction to the deposit address. If the transaction is successful, you are expected
to add the appropriate amount to the user’s balance on your site.
Some advantages of channel deposits are:

• easy and straightforward workflow;


• once created, the address can be used by the user as many times as they want;
• the user can make transactions at any time;
• there is no upper limitation on the amount of funds deposited in a transaction.

You can also create channel deposits that accept funds in one currency and automatically exchange them for
another at the current exchange rate. Thus, you will receive the funds already in the target currency, and
AlphaPo will notify you of the exchange that took place. You can enable the exchange while creating the
channel deposit.

This section of documentation describes channel deposits, but this is not the only way you
® can receive funds from your users. Read about another flow in the Invoices section.

Note that with cryptocurrencies, a “payment form” is merely information for making a payment, usually with
a link or QR code for convenience, but the actual transaction is initiated by the user later outside the form.
For this reason, AlphaPo does not return any transaction information immediately but instead only sends you
a callback when the user creates a transaction. Please note that this can happen long after the generation of
the deposit address and this can occur multiple times for the same deposit address.

How it works
1. When your user wants to top up their balance, you request a new deposit address from AlphaPo. Note
that if a deposit address has been previously generated for this user, it is recommended to skip this
step and reuse the old deposit address (see Reusing addresses vs. generating new addresses).
2. You pass the deposit address to the user (see our recommendations in What is a crypto payment form?).
At this point, depending on the user’s local configuration, their software wallet may launch automati‐
cally.
3. Using the software wallet, the user sends a transaction into the blockchain, by sending their funds to
the provided address.
4. When the incoming transaction is detected by AlphaPo, it appears on the Transactions tab with the
“Processing” status, and you are notified with an API callback (see Callbacks).
5. AlphaPo waits until it considers the transaction to be confirmed. Usually the transaction must be con‐
firmed in the blockchain, but for some cryptocurrencies, the status in AlphaPo can sometimes become
“Confirmed” immediately (see Confirmations and limits).
6. If automatic exchange was enabled for this channel deposit, it will be applied (see Available trading
pairs for what types of exchange are supported by AlphaPo).
7. For addresses generated via API, you are notified of the confirmed transaction via a callback. At this
point, you may want to reflect the incoming transfer of funds within your business logic — usually, by
increasing your user’s balance.
AlphaPo Documentation Deposits / 14

If a user tries to send one cryptocurrency to a deposit address generated for another cryp‐
Á tocurrency, the funds may be lost. However, particular recovery is sometimes possible (see
our Crosschain recovery policy).

Should I use deposits or invoices?


In some situations, the deposit flow can be replaced with the invoice flow, described in the Invoices section.
Like the deposit flow, the invoice flow involves generating a crypto address and accepting payments to your
balance through this address.
However, there are some key differences between a channel deposit and an invoice. It is good to know them
before choosing which payment method better suits your particular case.

• Once the deposit address is created, you cannot change the currency it accepts. But with an invoice,
however, you have the option of allowing the user to pay in the currency of their choice. In such a case,
the actual address will not be generated until the user selects the currency.
• For the invoice, you have the option of fixating the exchange rate for 15 minutes from the moment
the invoice is created. This may be useful, for example, when your ultimate goal is to receive a certain
amount of fiat currency at the current exchange rate, regardless of the exchange rate at the moment
of payment.
AlphaPo Documentation Deposits / 15

• The deposit address, once created, can be used for an unlimited period of time (see Reusing addresses
vs. generating new addresses), while the invoice can expire for a number of reasons, including timer
expiration or acceptance of sufficient funds from the user. After the expiration, the user will not be
able to top up the balance using the same invoice again.

Also note that in the case of the channel deposit, you usually give the user the crypto address itself and the
user simply sends funds to it using their software wallet, while in the case of the invoice you can just pass
the URL and the user interacts with AlphaPo using the web interface.
To learn more about how invoices work and how to use them, read the Invoices page.

Reusing addresses vs. generating new addresses


If you need to differentiate between two or more payment categories for the same user of your site, you
can create multiple deposit addresses. You will always see which address has been used for every specific
transaction both on the Transactions tab and in the callback that you receive after each transaction.
However, AlphaPo always continues to monitor payments to old deposit addresses, even after you have
created a new one for the same balance and user. The reason is that with cryptocurrencies, it is impossible
to “delete” or “close” an existing address, so there is always the possibility that the user has saved the previous
address in their software wallet and will make a payment to this address later.
It is good practice to have only one deposit address for one currency per user and reuse it instead of gener‐
ating new ones each time.

Create and manage deposit addresses


Deposit addresses can be created using the API or in the back‐office. The addresses generated using the API
are called “System Addresses” and are displayed separately from the ones generated in the back‐office.

Create deposit addresses using the API


To generate deposit addresses via the API, use the /addresses/take API endpoint. When calling it, you
need to specify the currency of the deposit and, optionally, the target currency (for a deposit with the ex‐
change function). In the response, you will get a newly created address that you can provide to your user.
On each transaction to this address, AlphaPo then notifies you with a callback, see Callbacks.
A request to the endpoint needs to include an additional parameter, foreign_id, where you can put any
string that will help you identify the user. It makes sense to put the user’s account ID from your system into
foreign_id, so that when you find this ID in the callback, you can easily understand which account on
your site needs to be updated accordingly.
For deposits in BTC, BCH and ETH, the callback will contain the riskscore value that is used for coin com‐
pliance analysis and to detect and track malicious behavior. See Data Examples for examples of callbacks.
All the addresses generated in this way can be found in the System Addresses section of the Addresses
tab.
AlphaPo Documentation Deposits / 16

Create and manage deposit addresses in the back‐office


There are two places in the AlphaPo back‐office where you can create and manage channel deposits: the
Addresses tab and the Balances tab.

• The Addresses tab shows the list of all your channel deposit addresses, divided between two sec‐
tions: My Addresses and System Addresses. The System Addresses section displays all the addresses
created using the API and deposit exchange addresses created using the back‐office, while the My
Addresses section contains those created using the back‐office, either on this tab (using the Create
address button) or on the Balances tab.
• The Balances tab gives you access to various balances‐related operations, and getting the channel
deposit addresses is one of them. The Receive and Top up dialogs that you can reach from this tab
allow you to view the existing addresses for the selected cryptocurrency or create new ones.

Note that AlphaPo does not send callbacks for the deposits to the addresses created on the Balances tab.

Fees
AlphaPo charges a fee when processing deposits. Full details on the fees applied to a given transaction are
always available on the Transactions tab and in the callback that you receive after the transaction. It is your
choice what amount to use for increasing the user’s balance on your site — including the fee or not.
The exact fees depend on your agreement and are listed on the Package Info tab in the back‐office. If you
have any questions, please contact our sales manager at sales@alphapo.net.

Exchange rates
When an exchange is enabled for a channel, the exchange rates depend on the external services that we use
and are calculated at the time of the exchange. If you need more control over the exchange process, consider
using Exchanges or Invoices.

Tag field
For most cryptocurrencies, the only field a user needs to specify the recipient is an address. This address can
be displayed in your interface directly or encoded as a QR code.
But sometimes the address is not enough for a successful payment. For example, Ripple has a concept of
“multiuser addresses” which require a Tag field to distinguish between recipients. AlphaPo provides the Tag
field for Ripple addresses both in the back‐office and in the API. Also, the Tag field is provided for BNB
addresses where it corresponds to the “memo” concept and works the same way.
When using channel deposits for such a currency, make sure you provide the user with both the address and
the Tag field. The absence of the Tag field may result in the loss of the funds sent by the user.
In the Receive dialog, no QR code is displayed for the cryptocurrencies with Tag fields.
AlphaPo Documentation Withdrawals / 17

Withdrawals
Unlike deposits, sending cryptocurrencies to your users is similar to classic payment methods. The users fill
out a form where they provide the address and the amount of the withdrawal. After that the web service
creates a transaction and sends a withdrawal request to the payment service provider. When the transaction
is confirmed by the payment service provider, the web service reduces the user’s balance on the website.

Typical withdrawal workflow


The most common scenario for sending cryptocurrencies is “withdrawal with exchange”. AlphaPo provides
web‐services with an on‐the‐fly exchange solution. This means that the funds stored on the merchant’s fiat
balance can be automatically converted into cryptocurrencies before being sent to the user’s crypto wallet.
In the case of regular withdrawal without exchange, the workflow will be the same, except for the conversion
operation.

Algorithm

1. You have a EUR balance in our system.


2. Your user wants to get a withdrawal from their EUR balance on your site to their BTC wallet.
3. The user uses the “withdrawal” option on your website, selects BTC as the currency of the payout and
fills out the payout form with their BTC address, to which they want to receive funds, and with the
withdrawal amount.
4. After that, your system sends a request to our processing.
5. Our system performs an automatic exchange from EUR to BTC, sends funds to the user’s crypto address,
and your system receives a callback with transaction parameters, including the status of the transaction,
currency pairs, amount, fees, etc.
6. You reduce the user’s EUR balance by the amount of the transaction.
AlphaPo Documentation Withdrawals / 18

Withdrawal using the API


To make a withdrawal, you should use the /withdrawal/crypto method of our API. You can specify in
which currency the funds should be sent and, if necessary, from which fiat currency the funds should be
converted before sending to the user.
Please note that unlike the /addresses/take method, you must use the foreign_id parameter with a
unique ID every time you make a withdrawal request to our system.
AlphaPo Documentation Exchanges / 19

Exchanges
While on‐the‐fly exchanges for deposits and withdrawals are possible and mostly oriented towards end users,
there is a way to perform any conversion of funds (crypto to fiat, fiat to crypto or crypto to crypto) with the
existing merchant’s balances. The only requirement for this is that the exchange pair is supported by our
processing. This feature is available via the API as well as in the back‐office. The latter option is most
suitable in the case when the on‐the‐fly exchange was not used initially.

Exchange using the API


There are three API methods associated with the exchanges:

• /exchange/calculate — a request that does not perform the exchange by itself, but allows you to
obtain the actual ratio for the subsequent exchange. It can be used to get general information about
the actual exchange rate for the selected pair of currencies as well as to receive and fix the exchange
ratio for the /exchange/fixed API method. The obtained ratio is valid for one minute, after which
the request should be repeated.
• /exchange/fixed — performs an exchange with the ratio obtained from the request above.
• /exchange/now — performs an exchange without specifying the ratio beforehand. This method uses
the latest ratio from the trading platform at the time of sending this request to our API.

Note: The exchange feature available through the back‐office is implemented via the
® /exchange/fixed method. The exchange ratio changes every minute and is automatically
displayed within the exchange dialog.

Limits
The minimum exchange amount is equivalent to 30 USD. This limitation does not apply to on‐the‐fly ex‐
changes for deposits and withdrawals. For up‐to‐date information about the on‐the‐fly exchanges, please
refer to the Confirmations and limits section.
More detailed information on the min limits of exchange operations for specific currencies should be obtained
via the /currencies/pairs API endpoint, because they may vary dynamically.
AlphaPo Documentation Invoices / 20

Invoices
AlphaPo provides the ability to create an invoice for a certain amount for a B2B or B2C client.

General invoice workflow


To create an invoice, you should send a request to our system with a particular set of fields.The response will
contain an URL that you have to forward to the user for payment.
On the invoice page, your user will see its name, the amount and currency, and also some specific parameters
(depending on the invoice type): the time period, the ability to choose the payment currency or the estimated
amount and the currency of the payment.
If you provide the user’s email address in your request, this field will be filled in on the invoice. Otherwise,
the user will have to fill it in themselves. After confirming the currency and providing the email address, the
user needs to pay the invoice using the specified address before the timer expires. This address is generated
by AlphaPo.
The invoice type will be determined based on the parameters submitted. There are 3 types of invoices:

1. Invoice without restrictions. The user chooses the currency of the payment themselves. The user
is required to pay within 15 minutes after currency selection. (There is no time limit for currency
selection). The exchange rate will be fixed when the user confirms the payment currency.
2. Invoice with time restriction. The user chooses the currency of the payment themselves. The user is
required to pay within 15 minutes after the invoice creation.
3. Invoice with time restriction and preselected currency. The user sees the amount and the payment
currency that they need to pay. The user is required to pay within 15 minutes after the invoice creation.

If the user fails to pay the invoice in due time, the system will display the “Failed” status.
You will receive a callback about the successful creation of the transaction after it appears in the mempool.
We will change the timer from 15 minutes to 24 hours. During this period, the transaction will change its
status to ”Confirmed”.
After successful confirmation of the transaction, the funds will be converted into the recipient’s currency
and transferred to your account. You will be charged a transaction fee after the funds are credited to the
account.
The user can choose to pay the invoice in installments. AlphaPo will keep waiting for new transactions as
long as the total sum of transactions received is less than the sum specified for this invoice. You will receive
a callback for each transaction.
If the user sends an amount of funds that is more than the specified one, the invoice will get the “Confirmed”
status and we will send instructions to the user’s email on how to get the overpayment back.
If the user sends an amount of funds that is less than the specified one and the timer expires, the invoice
will get the “Failed” status and we will send instructions to the user’s email on how to get the full payment
back.
The API endpoint for creating invoices is /invoices/create.
AlphaPo Documentation Invoices / 21

Invoice statuses

Invoice types
Invoice without restrictions
This invoice type allows the user to choose the payment currency themselves. There are no time restrictions
for payment. The rate will be fixed when the user confirms the payment currency.
Following the link, the user will see the invoice information and will also be able to choose the payment
currency.

After the currency is confirmed and the email address is entered, the exchange rate will be fixed for 15
minutes. During this period, the user needs to pay the invoice using the specified address.
AlphaPo Documentation Invoices / 22

Invoice with time restriction


This invoice type allows the user to choose the payment currency themselves, but the payment time will be
limited to 15 minutes from the moment the invoice is created..
Following the link, the user will see information about the invoice and the timer and will also be able to
choose the payment currency. The exchange rate will be fixed after the invoice is created.

After the currency is confirmed and the email address is entered, the user needs to pay the invoice using the
specified address before the timer expires.
AlphaPo Documentation Invoices / 23

Invoice with time restriction and preselected currency


This type of invoice allows the user to pay the invoice themselves in the specified currency with a time limit
of 15 minutes, starting from the moment of the invoice creation.
Following the link, the user will see information about the invoice and payment currency as well as the 15‐
minute timer. The rate will be fixed after the invoice is created.
The user needs to pay the invoice using the specified address before the timer expires.

In the Data Examples section, you can see an example of a callback for each type of invoice.

Invoice failure
The invoice payment fails if any of the following occur:
AlphaPo Documentation Invoices / 24

1. The 15‐minute timer expires.


2. The transaction has been in the “Processing” status for more than 24 hours.
3. The user has paid less than the requested amount. In this case, the transaction will have the “Confirmed”
status, but the invoice will have the “Failed” status.

In the Data Examples section, you can see examples of callbacks for successful and unsuccessful invoice
payment cases.
AlphaPo Documentation What is a crypto payment form? / 25

What is a crypto payment form?


Instead of classic payment methods, users can send their funds using exchanges and crypto wallet applica‐
tions. To perform the payment, they need a crypto payment form. It differs from the classic payment forms.
The crypto payment form is a block with information about the terms of payment and the crypto address to
which funds should be sent. The main idea is to provide the user with the crypto address for the deposit and
all the necessary information about the deposit limits, exchange rates and other payment terms. It would
also be a good idea to provide crypto addresses via QR codes that users can use as an automatic way to open
their wallet application and send cryptocurrency with a single click.
In this section, you will learn how to provide the user with all the necessary information, how to embed QR
codes in your payment form, and what best practices exist to make your payment form user‐friendly, increase
its conversion rate, and avoid user mistakes.

What is a crypto wallet URI format?


Almost every PC user uses email links on websites. Typically such links have the following format:
mailto:address@email.com
When one clicks the link, an email client opens automatically. The user sees a form for composing a new
email that contains the recipient’s email address in the “To” field. Other fields can also contain data, such as
the “Subject” field.
The same user‐friendly way of interaction can be used with some crypto wallets. For example, the BTC URI
— a link to a Bitcoin address — has the following format:
bitcoin:3AFaCnqriLNxj15kqtp5Pxn8puHfuqbX7W
If the user has a wallet application on their device and follows this link, the wallet application will open with
the specified address. To proceed with the payment, the user only needs to perform one action — click the
“Pay” button.
The BTC URI supports not only the address but also other options, for example, the payment amount. See
the BIP‐0021 standard for the full specification of the BTC URI format.

Why should I present a crypto address as a clickable link?


® Imagine that you show your user the address as a text string:

“Please make a deposit using the following BTC address: 3AFaCnqriL‐


Nxj15kqtp5Pxn8puHfuqbX7W”

If the user has the crypto wallet application on the same device, they need to:

1. Copy this address to the clipboard


2. Find and open their crypto wallet application
3. Open the “Withdraw” section in the application
4. Paste the crypto address
5. Click the “Send” button to transfer their funds

The more actions the user has to take, the more likely they will not pay. That is why it is
preferable to display crypto addresses as clickable links on your payment form whenever
possible.
Also consider using QR codes so that the user can quickly scan the link with another device.
See the What is a QR code? section below for details.
AlphaPo Documentation What is a crypto payment form? / 26

What is a QR code?
A QR code (Quick Response code) is a special visual method of data encoding and transferring, which is
usually used for simple and fast semi‐automatic interaction with users’ mobile devices. It can contain any
text data, including URL links. When a user scans the QR code with their smartphone, the data inside the
QR code will be decoded. If it is a link associated with a special application, the user’s smartphone will react
in a predefined way. For example, it can suggest the user to follow the URL using a web browser or send
funds using their crypto wallet application.
Here is an example of the QR code:

The most important features of using QR codes are:

• Quick access from mobile devices


• Predefined cryptocurrency
• An integrated clickable link that opens the wallet application

Why should I use QR codes in my payment form?


® Imagine that a user navigates to a page with your payment form using their laptop, and the
user’s crypto wallet application is installed on their smartphone.
In the worst case, the only way for the user to pay is to manually type every character of the
address. The most likely outcome is that the user will leave the form without paying. That
is why it is preferable to display a QR code with a crypto address encoded inside it on your
payment form.

How to create a QR code


For the best user experience, all you need to do is turn a simple URI containing a crypto address into a QR
code.
The simplest way to create the QR code is to use the Google Chart Service. It is a special service that gener‐
ates universal QR codes and has a very simple API to manage it. According to the API request parameters,
the QR code will contain the required data and have a certain size.
The minimum set of parameters is:

• chs — chart image size (e.g. 150x150)


• cht — chart type (qr is required for QR code)
• chl — data to be encoded in your QR code (e.g. bitcoin:3AFaCnqriLNxj15kqtp5Pxn8puHfuqbX7W)
• choe — the type of data encoding in your QR code (UTF-8 is required by the BIP‐0021 standard)
AlphaPo Documentation What is a crypto payment form? / 27

Detailed description of using the service can be found here: https://developers.google.com/


® chart/infographics/docs/qr_codes

The format of the URI that you need to encode in your QR code using the Google Chart Service is described
in What is a crypto wallet URI format?.
Here is an example of the QR code displayed using the <img> tag:

<img src="https://chart.googleapis.com/chart?chs=150x150&cht=qr&
chl=bitcoin:3AFaCnqriLNxj15kqtp5Pxn8puHfuqbX7W&choe=UTF-8">

Best practice as a result


Earlier in this section, we described two methods for increasing the conversion rate and, as a result, the total
turnover of the payment form. To provide the best experience for your users, we suggest combining these
two methods and simultaneously using them in your payment form.
So, the last step is to make the QR code clickable.

<a href="bitcoin:3AFaCnqriLNxj15kqtp5Pxn8puHfuqbX7W" target="_blank">


<img src="https://chart.googleapis.com/chart?chs=150x150&cht=qr&
chl=bitcoin:3AFaCnqriLNxj15kqtp5Pxn8puHfuqbX7W&choe=UTF-8">
</a>

After that, it does not matter whether the user receives the payment form using their laptop or smartphone.
They get the opportunity to make simple and fast payments in one click without any inconvenience.
To make the user experience even better, it would be a good idea to include in the payment form not only
the clickable QR code and the clickable crypto address, but also the following information:

• current or approximate exchange rate


• minimum deposit limit
• warning about the cryptocurrency to be used with the specified address

As a result, the created form may look like this:


AlphaPo Documentation What is a crypto payment form? / 28
AlphaPo Documentation Callbacks / 29

Callbacks
Asynchronous payments are very popular with cryptocurrencies. In a typical deposit workflow, you have to
generate an address and pass it to your client. This will be their deposit address, which they will reuse for a
lifetime with you. In such a deposit workflow, we will notify you of any incoming payments with callbacks.
If you have been assigned the “Owner” role for your AlphaPo merchant account (see User Permissions), then
you can configure the callback URL manually in the merchant’s settings. Upon processing the payments,
AlphaPo will send you notifications in JSON format to this URL with all necessary information about the
transaction, such as its amount and status.
Our callbacks contain all the important information about the transaction:

• status
• currency
• amount
• blockchain transaction’s hash
• address
• fees
• number of confirmations

and so on.
In the Data Examples section, you can find examples of callbacks specific to each type of operation.

Be aware that, due to implementation details, it is sometimes possible for the same callback
Á to be sent multiple times. Always keep track of the transaction IDs to avoid double spending
and similar issues.

A note about deposit callback statuses


For Deposits, our system supports instant confirmations. This means that some deposits will be confirmed
in our system without confirmation in the blockchain. In such a case, AlphaPo will immediately send you
a callback with the confirmed status. Confirming the transaction, we are ready to manage all the risks
associated with accepting real funds later. You should not be concerned about this.
In other cases, you will first receive a callback with the not_confirmed status. This will mean that we have
found a transaction in the mempool but we are not ready to guarantee that it will be completed. When this
happens, you can create a transaction on your side, but assign it the pending status. After that, you should
wait for the second callback, where the value of the status parameter will be confirmed.

Validating callbacks
To provide authentication for the callback, AlphaPo signs the POST request with your API key and secret
key:

• X-Processing-Key — Your public key


• X-Processing-Signature — The POST request body signed by your secret key using the HMAC‐
SHA512 hash function
AlphaPo Documentation Callbacks / 30

You must validate the signature of the callback and the values of known parameters to avoid fraud.
If the callback is validated successfully, your system should respond with the 200 OK HTTP code. No addi‐
tional parameters are required in the response body.
Otherwise, we will keep the callback in our sending queue and continue the attempts according to the fol‐
lowing schedule: 1, 5, 10, 15, 20, 30, 60, 90, 120, 150, 180, 210, 240 minutes.

Callbacks in the back‐office


You can always go to our back‐office interface and get all the information about any specific callback in the
Transaction info section, including timings, the number of attempts to send the callback, the format of the
response, and so on.
If you have technical issues with your callback handler or a long maintenance period, there is a button in
the Transaction info section to reset the callback sending queue. Using this function, you can resend the
callback immediately.

Foreign IDs and distinguishing callbacks


There is a difference between callbacks for deposits and withdrawals.
In the case of deposits, if a user makes all deposits to the same address, you will receive the same values
of the foreign_id and address parameters each time. The address parameter will show you which
address received funds from the user. This is the address from our system.
In the case of withdrawals, you will receive different values of the foreign_id and address parameters
in each callback. In this case, the address parameter will show you the user’s address to which we sent
funds.

Hint: When a user sends you the same amount to the same address, you will receive very
® similar callbacks. To understand whether you see several callbacks for the same transaction,
or there was more than one transaction, you can use the id parameter from the root element
in the callback JSON. This parameter is unique for all transactions from our side.
AlphaPo Documentation API Documentation / 31

API Documentation
Obtaining API Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
API endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
AlphaPo Documentation Obtaining API Keys / 32

Obtaining API Keys


Please navigate to your merchant dashboard, find the API keys section and click Activate.

To activate your API key and see your secret key, enter your two‐factor authentication code and click Acti‐
vate.
After the activation you will see your secret key.

Warning: Please note that once you close the Activate API key window, you will no longer
Á be able to see it. Your secret key will be hidden and you will not be able to restore it. Please
save it in a secure place and avoid sending it via messengers or even email.

For more information, visit the API Set Up Stage page.


AlphaPo Documentation Authorization / 33

Authorization
AlphaPo API user authorization is done via sending two headers:

• X-Processing-Key — A public key, which can be obtained from the user’s account
• X-Processing-Signature — The POST request body signed by a secret key using the HMAC‐
SHA512 hash function. The secret key can be also obtained from the user’s account

Below is an example in PHP:

$paramsArray = ['key' => 'value'];


$requestBody = json_encode($paramsArray);
$signature = hash_hmac('sha512', $requestBody, $apiSecret);

For all requests you also need to use the next format key in the headers:

"Content-Type": "application/json"

You can check the validity of the signature you generated by comparing it with the sample below.
To do this, generate a signature using the following data:

• Secret key: AbCdEfG123456


• Request body: {"currency":"BTC","foreign_id":"123456"}

With this data, you should receive the following signature:

03c25fcf7cd35e7d995e402cd5d51edd72d48e1471e865907967809a0c189ba55b90815f20e2b
b10f82c7a9e9d865546fda58989c2ae9e8e2ff7bc29195fa1ec
AlphaPo Documentation Workflows / 34

Workflows
Deposit workflow
1. You obtain a new address from the AlphaPo api (for some currencies it can be an address and a tag)
and save it somewhere on your side. After that, you display this address to your customer so they can
make a deposit.
2. The customer sends funds to this address.
3. After that, AlphaPo sends a callback to your callback URL with the details of the transaction. It contains
its status, address, currency, amount and fees.
4. If the status is confirmed, you should deposit the respective amount to the customer’s balance on
your side.

See also: Deposits, /addresses/take, Deposit data examples.

Withdrawal workflow
1. You request to send a certain amount of money to a certain address.
2. Your request is validated on our side. If the signature is correct, the address is valid and you have
sufficient funds on your balance, AlphaPo will respond to you with a transaction object.
3. You will receive a callback when the transaction status is updated.

See also: Withdrawals, /withdrawal/crypto, Withdrawal data examples.

Deposit with exchange workflow


Let us assume you do not want to touch or store any cryptocurrency, but only use it as a payment method.
Your customer deposits BTC and AlphaPo instantly converts it to EUR so that you receive EUR into your
AlphaPo account.

1. You obtain a new address from AlphaPo API in the same way as in the deposit workflow. But addi‐
tionally in your request, you pass another parameter, convert_to, which determines the resulting
currency.
2. When a new deposit arrives, AlphaPo converts all incoming funds into the destination currency and
sends notifications as in the regular deposit workflow.

See also: Deposits, /addresses/take, Deposit data examples.


AlphaPo Documentation Workflows / 35

Withdrawal with exchange workflow


Let us assume you want to send cryptocurrency from your fiat currency balance. For example, you want to
send a certain EUR amount but your customer needs to receive the money in BTC.

1. You do exactly the same as in the withdrawals workflow, but you specify two currencies instead of
one. One currency is the currency of your sending balance and the other is the cryptocurrency your
customer wants to receive.
2. Your request is validated on our side. If the signature is correct, the address is valid and you have
sufficient funds on your balance, AlphaPo will respond to you with a transaction object.
3. You will receive a callback when the transaction status is updated.

See also: Withdrawals, /withdrawal/crypto, Withdrawal data examples.

Invoice workflow
Invoices allow deposits to be made at a fixed exchange rate within a limited period of time, regardless of
the real exchange rate fluctuations. If you need to convert cryptocurrency funds into fiat currency or an‐
other cryptocurrency, the invoices will allow you to visualize the exact amount in the sender’s currency that
is required to get the exact amount in the receiver’s currency. When a deposit is processed through this
workflow, a user is redirected to the respective invoice page via the preset link and just needs to follow the
instructions on it. The invoices also allow refunds to be made in the event that the user fails to make a de‐
posit on time or finds that their balance is insufficient. All that is required in this case is to follow the link
with the respective instructions sent to the user’s email.
See also: Invoices, /invoices/create, Invoices data examples.
AlphaPo Documentation API endpoints / 36

API endpoints
Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Get list of supported currencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Get list of exchangeable currency pairs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Get list of currencies rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Get list of balances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Receive cryptocurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Withdraw cryptocurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Calculate exchange rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Exchange on fixed exchange rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Exchange regardless the exchange rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Create Invoice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
AlphaPo Documentation API endpoints / 37

Ping
https://app.alphapo.net/api/v2/ping

Check if the API is up and running and if your authorization is working.


Request Body must be a valid json object or array, example: {}
Response 200: OK
AlphaPo Documentation API endpoints / 38

Get list of supported currencies


https://app.alphapo.net/api/v2/currencies/list

Get a list of all supported currencies


Request

visible boolean Allows to get a list of currently enabled/disabled currencies


optional

Response
200 OK

{
"data": [
{
"id": 1,
"type": "crypto",
"currency": "BTC",
"minimum_amount": "0.001",
"deposit_fee_percent": "0.99",
"withdrawal_fee_percent": "0",
"precision": 8
}
]
}
AlphaPo Documentation API endpoints / 39

Get list of exchangeable currency pairs


https://app.alphapo.net/api/v2/currencies/pairs

Get a list of currency exchange pairs.


Request

currency_from string Filter by ISO code of the currency from which the exchange can be made,
optional for example: BTC
currency_to string Filter by ISO code of the currency to which the conversion can be made, for
optional example: EUR

Response
200 OK

{
"data": [
{
"currency_from": {
"currency": "BTC",
"type": "crypto",
"min_amount": "0.00300000",
"min_amount_deposit_with_exchange": "0.00010000"
},
"currency_to": {
"currency": "EUR",
"type": "fiat"
},
"rate_from": "1",
"rate_to": "8795.80000000"
},
{
"currency_from": {
"currency": "EUR",
"type": "fiat",
"min_amount": "25.00000000"
},
"currency_to": {
"currency": "BTC",
"type": "crypto"
},
"rate_from": "1",
"rate_to": "8885.72951839"
},
{
"currency_from": {
"currency": "BCH",
"type": "crypto",
"min_amount": "0.00020000",
"min_amount_deposit_with_exchange": "0.00100000"
AlphaPo Documentation API endpoints / 40

},
"currency_to": {
"currency": "USD",
"type": "fiat"
},
"rate_from": "1",
"rate_to": "332.28264751"
},
{
"currency_from": {
"currency": "USD",
"type": "fiat",
"min_amount": "30.00000000"
},
"currency_to": {
"currency": "BCH",
"type": "crypto"
},
"rate_from": "1",
"rate_to": "335.94361522"
}
]
}

400 Bad request

{
"errors": {
"currency_from": "The selected currency from is invalid.",
"currency_to": "The selected currency to is invalid."
}
}
AlphaPo Documentation API endpoints / 41

Get list of currencies rates


https://app.alphapo.net/api/v2/currencies/rates

Get a particular exchange pair and its exchange price.


Request

currency_from string Filter by ISO code of the currency from which the exchange can be made,
optional for example: BTC
currency_to string Filter by ISO code of the currency into which the conversion can be made,
optional for example: EUR

Response
200 OK

{
"data": [
{
"currency_from": {
"currency": "BTC",
"type": "crypto",
"min_amount": "0.00010000",
"min_amount_deposit_with_exchange": "0.00010000"
},
"currency_to": {
"currency": "EUR",
"type": "fiat"
},
"rate_from": "1",
"rate_to": "48715.61680000"
}
]
}
AlphaPo Documentation API endpoints / 42

Get list of balances


https://app.alphapo.net/api/v2/accounts/list

Get a list of all available balances (including zero balances).


Request
Body must be a valid json object or array, for example: {}
Response
200 OK

{
"data": [
{
"currency": "DOGE",
"type": "crypto",
"balance": "13234.91276375"
},
{
"currency": "ADA",
"type": "crypto",
"balance": "7272.36400468"
},
{
"currency": "EUR",
"type": "fiat",
"balance": "5973.97568920"
},
{
"currency": "USDT",
"type": "crypto",
"balance": "0.00000000"
}
]
}
AlphaPo Documentation API endpoints / 43

Receive cryptocurrency
https://app.alphapo.net/api/v2/addresses/take

Receive an address for depositing cryptocurrency and (depending on the specified params) configure an
automatic crypto‐to‐fiat exchange on the fly.
Request

foreign_id string Your info for this address. It will be returned as a reference in the Address
response, for example: user‐id:2048
currency string ISO code of the currency in which funds will be received, for example: BTC
convert_to string If you need an auto exchange of all incoming funds, for example, to EUR,
optional specify this param as EUR. You can specify ISO code of any other supported
currency. Use the /currencies/pairs method, to see the list of supported
pairs.

Response
201 Created

{
"data": {
"id": 1,
"currency": "BTC",
"convert_to": "EUR",
"address": "12983h13ro1hrt24it432t",
"tag": "tag-123",
"foreign_id": "user-id:2048"
}
}

400 Bad Request

{
"errors": {
"foreign_id": "The foreign id field is required."
}
}

Business logic for using cryptocurrency as a deposit method


® You want to allow your customer to top up their EUR balance on your platform or website.
You will have to generate an address in the desired cryptocurrency and specify EUR as the
convert_to currency. This will allow your customer to pay in their favorite currency and
fund their balance in EUR. At the same time, you will see the respective EUR amount in your
AlphaPo merchant account.

Hint: You do not have to generate a new address for this customer anymore, the address can
® be reused any number of times. See Reusing addresses vs. generating new addresses.
AlphaPo Documentation API endpoints / 44

An example of a customer interface for Deposits.

• Make sure to use the Bitcoin URI format “bitcoin:” in QR. Works the same as “mailto:” (see What is a
crypto wallet URI format?).
• We do recommend making this QR clickable as customers may have a wallet set up on their computer
or mobile phone.
• We recommend specifying the approximate current exchange rate.
AlphaPo Documentation API endpoints / 45

Withdraw cryptocurrency
https://app.alphapo.net/api/v2/withdrawal/crypto

Withdraw in crypto to any specified address. You can send Cryptocurrency from your Fiat/Cryto currency
balance by using convert_to parameter and specifying amount or amount_to parameter.
Request

foreign_id string A unique ID in your system, for example: 122929


amount numeric The amount of funds to withdraw, for example: 1
currency string ISO code of the currency to be withdrawn, for example: BTC
convert_to string If you want to automatically convert the withdrawn funds, for example, EUR
optional to BTC, specify this param as BTC. You can specify any currency supported
(see /currencies/pairs).
address string Cryptocurrency address where you want to send funds.
tag optional string If it’s XRP or BNB, both an address and a tag/memo are required to send
cryptocurrency. If you send funds without a tag/memo or with an incorrect
Tag/Memo, your funds may be lost.
amount_to numeric Amount of funds to send in the transaction in the convert_to currency, for
optional example: 0.01

Parameters amount_to and amount can not be used into one request.
Á
Response
200 OK

{
"data": {
"id": 1,
"foreign_id": "122929",
"type": "withdrawal",
"status": "processing",
"amount": "0.01000000",
"sender_amount": "0.01000000",
"sender_currency": "ETH",
"receiver_amount": "0.01000000",
"receiver_currency": "ETH"
}
}

400 Bad Request

{
"errors": {
"amount": "The amount must be at least 0.001."
}
}

400 Bad Request


AlphaPo Documentation API endpoints / 46

{
"errors": {
"amount_to": "The amount to field can not be used when the amount field is
presented."
}
}

Withdrawal with exchange using parameter amount_to


Merchant wants to send the specified amount (amount_to) in crypto (convert_to) to the specified ad-
dress with automatic conversation from fiat/crypto (currency).
The amount that is debited from the merchant’s balance is obtained from the conversion of amount_to into
currency by the current exchange rate.
Request

{
"currency": "EUR",
"foreign_id": "12345",
"address": "tb1qktweq8grq4uekg309a0w6fcumeqktc5gyvaumc",
"convert_to": "BTC",
"amount_to": "0.001"
}

In this case, 0.001 BTC will be sent in the transaction and calculated EUR amount will be debited from the
merchant balance.
Response

{
"data": {
"id": 2,
"foreign_id": "12345",
"type": "withdrawal_exchange",
"status": "processing",
"amount": "19.00027665",
"sender_amount": "19.00027665",
"sender_currency": "EUR",
"receiver_currency": "BTC",
"receiver_amount": "0.00100000"
}
}
AlphaPo Documentation API endpoints / 47

Calculate exchange rates


https://app.alphapo.net/api/v2/exchange/calculate

Get information about the current exchange rates.

Note: Please note that this endpoint is limited to 30 requests per minute from one IP address.
® If the number of requests is exceeded, a new successful response can only be received after
a one‐minute break.

Request

receiver_amount numeric The exact amount of funds to be received, for example: 10. This
optional parameter is required when the sender_amount parameter is absent
sender_currency string ISO code of the currency you want to exchange from, for example: BTC
receiver_currency string ISO code of the currency you want to exchange into, for example: EUR
sender_amount numeric The exact amount of funds to be sent, for example: 3. This parameter is
optional required when the receiver_amount parameter is absent

Response
200 OK

{
"data": {
"sender_amount": 1,
"sender_currency": "BTC",
"receiver_amount": "8549.81680000",
"receiver_currency": "EUR",
"fee_amount": "85.49816800",
"fee_currency": "BTC",
"price": "8549.81680000",
"ts_fixed": 1564293159,
"ts_release": 1564293219,
"fix_period": 60
}
}

400 Bad Request

{
"errors": {
"sender_currency": "Exchange is unavailable for given currencies"
}
}

429 Too Many Requests

{
"errors": {
"error code": 1015
}
}
AlphaPo Documentation API endpoints / 48

Exchange on fixed exchange rate


https://app.alphapo.net/api/v2/exchange/fixed

Make exchange at a given fixed exchange rate.


Request

sender_currency string ISO code of the currency you want to exchange from, for example:
LTC
receiver_currency string ISO code of the currency you want to exchange into, for example:
USD
sender_amount numeric The amount you want to exchange, for example: 6.5. This parameter
optional is required when the receiver_amount parameter is absent
receiver_amount numeric The amount you want to receive, for example: 6.5. This parameter is
optional required when the sender_amount parameter is absent
foreign_id string A unique ID in your system, for example: 134453
price numeric The fixed exchange rate, for example: 89.75202000

Response
201 Created

{
"data": {
"id": 2687667,
"foreign_id": "knwi24op9",
"type": "exchange",
"sender_amount": "0.01",
"sender_currency": "BTC",
"receiver_amount": "63.52069015",
"receiver_currency": "EUR",
"fee_amount": "6.98727592",
"fee_currency": "EUR",
"price": "6352.06901520",
"status": "processing"
}
}
AlphaPo Documentation API endpoints / 49

Exchange regardless the exchange rate


https://app.alphapo.net/api/v2/exchange/now

Make an exchange without specifying the exchange rate.


Request

sender_currency string ISO code of the currency you want to exchange from, for example:
EUR
receiver_currency string ISO code of the currency you want to exchange into, for example:
BTC
sender_amount numeric The amount you want to exchange, for example: 2. This parameter is
optional required when the receiver_amount parameter is absent
receiver_amount numeric The amount you want to receive, for example: 2. This parameter is
optional required when the sender_amount parameter is absent
foreign_id string A unique ID in your system, for example: 124876

Response
201 Created

{
"data": {
"id": 2687669,
"foreign_id": "wph27bmsp81",
"type": "exchange",
"sender_amount": "0.001",
"sender_currency": "BTC",
"receiver_amount": "6.33984642",
"receiver_currency": "EUR",
"fee_amount": "0.69738311",
"fee_currency": "EUR",
"price": "6339.84642127",
"status": "processing"
}
}

400 Bad Request

{
"errors": {
"sender_amount": "The amount must be at least 0.00300000"
}
}
AlphaPo Documentation API endpoints / 50

Create Invoice
https://app.alphapo.net/api/v2/invoices/create

Create an invoice for your client for a specified amount.

timer boolean Whether the time for paying the invoice will be limit(15 minutes).
title string The invoice title that will be displayed to your client
description string The invoice description that will be displayed to your client
optional
currency string ISO code of the invoice currency that you want to receivfrom your client,
for example: EUR
sender_currency string ISO code of the currency in which your client pays the invoi(invoice with
preselected currency, for example: BTC
amount numeric The amount that you want to receive from your clientfor example: 106.75
foreign_id string A unique ID in your system, for example: 164
url_success string The URL to which we redirect your client in the casof successful invoice
paymentfor example: https://merchant.name.com/url_success
url_failed string The URL to which we redirect your client in the casof unsuccessful invoice
paymentfor example: https://merchant.name.com/url_failed
email_user string If the payment amount does not match the amount stated in the
invoicewe will send an email to the specified address with instructionon
funds recovery. In case of underpayment, the whole amounwill be
refunded. In case of overpayment, the recipient of the emaiwill be able to
recover the difference by following the instructions.

Response
200 OK

{
"data": {
"id": 79,
"url": "https://wallet.alphapo.net/invoice/RB9NZv",
"foreign_id": 164,
"name": "TEST NAME",
"status": "created",
"currency": "EUR",
"amount": "106.75",
"sender_currency": "BTC",
"sender_amount": null,
"fixed_at": 1581929889,
"release_at": 1581930789
}
}

400 Bad Request

{
"errors": {
"foreign_id": "The foreign id has already been taken."
}
}
AlphaPo Documentation Data examples / 51

Data examples
This section contains various examples of requests, responses and callbacks.
Deposit data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Callback: BTC sent to a deposit address . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Callback: ETH sent to a deposit address . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Callback: ERC20 sent to a deposit address . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Callback: BTC sent to a deposit address with exchange to EUR . . . . . . . . . . . . . . 55
Withdrawal data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Callback: BTC withdrawn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Callback: ETH withdrawn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Callback: ERC20 withdrawn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Callback: EUR withdrawn with exchange to BTC . . . . . . . . . . . . . . . . . . . . . . 60
Exchange data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Callback: EUR exchanged for BTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Callback: BTC exchanged for USD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Invoices data examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Request: invoice without restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Response: invoice without restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Request: invoice with time restriction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Response: invoice with time restriction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Request: invoice with time restriction and preselected currency . . . . . . . . . . . . . 66
Response: invoice with time restriction and preselected currency . . . . . . . . . . . . . 66
Callback: successful invoice payment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Callback: invoice transaction is in the mempool . . . . . . . . . . . . . . . . . . . . . . . 68
Callback: invoice payment by installments . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Callback: invoice timer expired . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Callback: invoice processing status for more than 24 hours . . . . . . . . . . . . . . . . 72
Callback: invoice payment is lesser than invoice amount . . . . . . . . . . . . . . . . . . 73
Callbacks with other statuses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Callback: transaction not confirmed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Callback: transaction cancelled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
AlphaPo Documentation Data examples / 52

Deposit data examples


Callback: BTC sent to a deposit address
{
"id": 1,
"type": "deposit",
"crypto_address": {
"id": 1,
"currency": "BTC",
"address": "39mFf3X46YzUtfdwVQpYXPCMydc74ccbAZ",
"foreign_id": "user-id:2048",
"tag": null
},
"currency_sent": {
"currency": "BTC",
"amount": "6.53157512"
},
"currency_received": {
"currency": "BTC",
"amount": "6.53157512",
"amount_minus_fee": "6.5119800"
},
"transactions": [
{
"id": 1,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "deposit",
"address": "39mFf3X46YzUtfdwVQpYXPCMydc74ccbAZ",
"tag": null,
"amount": "6.53157512",
"txid":
"3950ad8149421a850d01dff88f024810e363ac18c9e8dd9bc0b9116e7937ad93",
"riskscore": "0.5",
"confirmations": 3
}
],
"fees": [
{
"type": "deposit",
"currency": "BTC",
"amount": "0.01959472"
}
],
"error": "",
"status": "confirmed"
}
AlphaPo Documentation Data examples / 53

Callback: ETH sent to a deposit address


{
"id": 2686563,
"type": "deposit",
"crypto_address": {
"id": 381738,
"currency": "ETH",
"address": "0xd61180ff0cf74dc3ee8e264751f18c47060729b9",
"tag": null,
"foreign_id": "991904"
},
"currency_sent": {
"currency": "ETH",
"amount": "0.01000000"
},
"currency_received": {
"currency": "ETH",
"amount": "0.01000000",
"amount_minus_fee": "0.00939500"
},
"transactions": [
{
"id": 714657,
"currency": "ETH",
"transaction_type": "blockchain",
"type": "deposit",
"address": "0xd61180ff0cf74dc3ee8e264751f18c47060729b9",
"tag": null,
"amount": "0.01000000",
"txid":
"0x6b353da88a8ba2df4926c1ccc58991f484a683ba57ec3dde70e812b5c8c7fa1d",
"confirmations": "9"
}
],
"fees": [
{
"type": "transfer",
"currency": "ETH",
"amount": "0.00010500"
},
{
"type": "deposit",
"currency": "ETH",
"amount": "0.00050000"
}
],
"error": "",
"status": "confirmed"
}
AlphaPo Documentation Data examples / 54

Callback: ERC20 sent to a deposit address


{
"id": 2686567,
"type": "deposit",
"crypto_address": {
"id": 382357,
"currency": "NNM",
"address": "0x19722627885da3fff134dd36de0a14898c8e053b",
"tag": null,
"foreign_id": "31"
},
"currency_sent": {
"currency": "NNM",
"amount": "0.06000000"
},
"currency_received": {
"currency": "NNM",
"amount": "0.06000000",
"amount_minus_fee": "0.05910000"
},
"transactions": [
{
"id": 714662,
"currency": "NNM",
"transaction_type": "blockchain",
"type": "deposit",
"address": "0x19722627885da3fff134dd36de0a14898c8e053b",
"tag": null,
"amount": "0.06000000",
"txid":
"0x835c9f286a311bc9df8c94c2771cadf1d91e6967039358a44e24c56115dc59a1",
"confirmations": "7"
}
],
"fees": [
{
"type": "transfer",
"currency": "ETH",
"amount": "0.00037336"
},
{
"type": "deposit",
"currency": "NNM",
"amount": "0.00090000"
}
],
"error": "",
"status": "confirmed"
}
AlphaPo Documentation Data examples / 55

Callback: BTC sent to a deposit address with exchange to EUR


{
"id": 2686510,
"type": "deposit_exchange",
"crypto_address": {
"id": 382270,
"currency": "BTC",
"convert_to": "EUR",
"address": "31vnLqxVJ1iShJ5Ly586q8XKucECx12bZS",
"tag": null,
"foreign_id": "13a"
},
"currency_sent": {
"currency": "BTC",
"amount": "0.01000000"
},
"currency_received": {
"currency": "EUR",
"amount": "84.17070222",
"amount_minus_fee": "79.96216711"
},
"transactions": [
{
"id": 714576,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "deposit",
"address": "31vnLqxVJ1iShJ5Ly586q8XKucECx12bZS",
"tag": null,
"amount": "0.01000000",
"txid":
"3a491da90a1ce5a318d0aeff6867ab98a03219abae29ed68d702291703c3538b",
"riskscore": "0.42",
"confirmations": "1"
},
{
"id": 714577,
"currency": "BTC",
"currency_to": "EUR",
"transaction_type": "exchange",
"type": "exchange",
"amount": "0.01000000",
"amount_to": "84.17070222"
}
],
"fees": [
{
"type": "exchange",
"currency": "EUR",
"amount": "4.20853511"
}
],
"error": "",
AlphaPo Documentation Data examples / 56

"status": "confirmed"
}
AlphaPo Documentation Data examples / 57

Withdrawal data examples


Callback: BTC withdrawn
{
"id": 1,
"foreign_id": "10",
"type": "withdrawal",
"crypto_address": {
"id": 1,
"currency": "BTC",
"address": "115Mn1jCjBh1CNqug7yAB21Hq2rw8PfmTA",
"tag": null
},
"currency_sent": {
"currency": "BTC",
"amount": "0.02000000"
},
"currency_received": {
"currency": "BTC",
"amount": "0.02000000"
},
"transactions": [
{
"id": 1,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "withdrawal",
"address": "115Mn1jCjBh1CNqug7yAB21Hq2rw8PfmTA",
"tag": null,
"amount": "0.02",
"txid":
"bb040d895ef7141ea0b06b04227d8f5dd4ee12d5b890e6e5633f6439393a666b",
"confirmations": 3
}
],
"fees": [
{
"type": "mining",
"currency": "BTC",
"amount": "0.00007402"
},
{
"type": "withdrawal",
"currency": "BTC",
"amount": "0.00002000"
}
],
"error": "",
"status": "confirmed"
}
AlphaPo Documentation Data examples / 58

Callback: ETH withdrawn


{
"id": 2686565,
"foreign_id": "23",
"type": "withdrawal",
"crypto_address": {
"id": 381460,
"currency": "ETH",
"address": "0x2D6CA312567986C08CC4eF3F706136D1c9eF0321",
"tag": null
},
"currency_sent": {
"currency": "ETH",
"amount": "0.01000000"
},
"currency_received": {
"currency": "ETH",
"amount": "0.01000000"
},
"transactions": [
{
"id": 714660,
"currency": "ETH",
"transaction_type": "blockchain",
"type": "withdrawal",
"address": "0x2D6CA312567986C08CC4eF3F706136D1c9eF0321",
"tag": null,
"amount": "0.01000000",
"txid":
"0x1ccb9fa0ef5e8cf7d4cc2a23fe8119170a2a3d08fba36036665a12c88d7bcccb",
"confirmations": "0"
}
],
"fees": [
{
"type": "mining",
"currency": "ETH",
"amount": "0.00010500"
},
{
"type": "withdrawal",
"currency": "ETH",
"amount": "0.00010000"
}
],
"error": "",
"status": "confirmed"
}
AlphaPo Documentation Data examples / 59

Callback: ERC20 withdrawn


{
"id": 2686572,
"foreign_id": "5",
"type": "withdrawal",
"crypto_address": {
"id": 381734,
"currency": "NNM",
"address": "0x2D6CA312567986C08CC4eF3F706136D1c9eF0321",
"tag": null
},
"currency_sent": {
"currency": "NNM",
"amount": "4.45600000"
},
"currency_received": {
"currency": "NNM",
"amount": "4.45600000"
},
"transactions": [
{
"id": 714670,
"currency": "NNM",
"transaction_type": "blockchain",
"type": "withdrawal",
"address": "0x2D6CA312567986C08CC4eF3F706136D1c9eF0321",
"tag": null,
"amount": "4.45600000",
"txid":
"0x884ad10cc60dfe0d6fdc776b541c5c5efce6151886a88994bb4ba41aa9575563",
"confirmations": "0"
}
],
"fees": [
{
"type": "mining",
"currency": "ETH",
"amount": "0.00007480"
},
{
"type": "withdrawal",
"currency": "NNM",
"amount": "0.04456000"
}
],
"error": "",
"status": "confirmed"
}
AlphaPo Documentation Data examples / 60

Callback: EUR withdrawn with exchange to BTC


{
"id": 1,
"foreign_id": "20",
"type": "withdrawal_exchange",
"crypto_address": {
"id": 1,
"currency": "EUR",
"convert_to": "BTC",
"address": "1K2btnZ8cqNFBPhaq729Mdj8W6G3w2nBbL",
"tag": null
},
"currency_sent": {
"currency": "EUR",
"amount": "381"
},
"currency_received": {
"currency": "BTC",
"amount": "0.10882300"
},
"transactions": [
{
"id": 1,
"currency": "EUR",
"currency_to": "BTC",
"transaction_type": "exchange",
"type": "exchange",
"amount": 381,
"amount_to": 0.10882300
},
{
"id": 1,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "withdrawal",
"address": "1K2btnZ8cqNFBPhaq729Mdj8W6G3w2nBbL",
"tag": null,
"amount": 0.10882300,
"txid":
"aa3345b96389e126f1ce88a670d1b1e38f2c3f73fb3ecfff8d9da1b1ce6964a6",
"confirmations": 3
}
],
"fees": [
{
"type": "exchange",
"currency": "EUR",
"amount": "3.04800000"
},
{
"type": "mining",
"currency": "EUR",
"amount": "0.04489780"
AlphaPo Documentation Data examples / 61

}
],
"error": "",
"status": "confirmed"
}
AlphaPo Documentation Data examples / 62

Exchange data examples


Callback: EUR exchanged for BTC
{
"id": 2686900,
"type": "exchange",
"currency_sent": {
"currency": "EUR",
"amount": "26.75248865"
},
"currency_received": {
"currency": "BTC",
"amount": "0.00300000"
},
"transactions": [
{
"id": 715072,
"currency": "EUR",
"currency_to": "BTC",
"transaction_type": "exchange",
"type": "exchange",
"amount": "26.75248865",
"amount_to": "0.00300000"
}
],
"fees": [
{
"type": "exchange",
"currency": "EUR",
"amount": "0.26752489"
}
],
"error": "",
"status": "confirmed"
}
AlphaPo Documentation Data examples / 63

Callback: BTC exchanged for USD


{
"id": 2686901,
"type": "exchange",
"currency_sent": {
"currency": "BTC",
"amount": "0.00300000"
},
"currency_received": {
"currency": "USD",
"amount": "29.50408884"
},
"transactions": [
{
"id": 715072,
"currency": "BTC",
"currency_to": "USD",
"transaction_type": "exchange",
"type": "exchange",
"amount": "0.00300000",
"amount_to": "29.50408884"
}
],
"fees": [
{
"type": "exchange",
"currency": "USD",
"amount": "0.29504089"
}
],
"error": "",
"status": "confirmed"
}
AlphaPo Documentation Data examples / 64

Invoices data examples


Request: invoice without restrictions
{
"timer": false,
"title": "Invoice Title",
"currency": "EUR",
"amount": 106.75,
"foreign_id": "196",
"url_success": "http://success.test",
"url_failed": "http://failed.test",
"email_user": "email@address.com"
}

Response: invoice without restrictions


{
"data": {
"id": 127,
"url": "https://wallet.alphapo.net/invoice/iEU3uh",
"foreign_id": "196",
"address": null,
"title": "Invoice Title",
"status": "created",
"currency": "EUR",
"amount": "106.75000000",
"sender_currency": null,
"sender_amount": null,
"fixed_at": null,
"release_at": null,
"seconds_left": null
}
}
AlphaPo Documentation Data examples / 65

Request: invoice with time restriction


{
"timer": true,
"title": "Invoice Title",
"currency": "BTC",
"amount": 0.02,
"foreign_id": "197",
"url_success": "http://success.test",
"url_failed": "http://failed.test",
"email_user": "email@address.com"
}

Response: invoice with time restriction


{
"data": {
"id": 26,
"url": "https://wallet.alphapo.net/invoice/XJrbOG",
"foreign_id": "197",
"address": null,
"title": "Invoice Title",
"status": "pending",
"currency": "BTC",
"amount": "0.01000000",
"sender_currency": null,
"sender_amount": null,
"fixed_at": 1592315493,
"release_at": 1592316393,
"seconds_left": 899
}
}
AlphaPo Documentation Data examples / 66

Request: invoice with time restriction and preselected currency


{
"timer": true,
"title": "Invoice Title",
"description": "Invoice description",
"currency": "EUR",
"sender_currency": "BTC",
"amount": 35,
"foreign_id": "200",
"url_success": "http://success.test",
"url_failed": "http://failed.test",
"email_user": "email@address.com"
}

Response: invoice with time restriction and preselected currency


{
"data": {
"id": 28,
"url": "https://wallet.alphapo.net/invoice/zeUBm1",
"foreign_id": "200",
"address": "2NCMFo2k7S8HSDWp6qwQ2wiAMwz3XwEC4Gp",
"title": "Invoice Title",
"status": "pending",
"currency": "EUR",
"amount": "35.00000000",
"sender_currency": "BTC",
"sender_amount": "0.00413945",
"fixed_at": 1592316313,
"release_at": 1592317213,
"seconds_left": 899
}
}
AlphaPo Documentation Data examples / 67

Callback: successful invoice payment


{
"id": 588,
"foreign_id": "8FW1KI7LesB9yxWcK1K",
"type": "invoice",
"crypto_address": {
"id": 386897,
"currency": "BTC",
"address": "2Mvo6FMduhHz1BTDHsQ5GyRoifcG3y4ycpk",
"tag": null
},
"currency_sent": {
"currency": "BTC",
"amount": "0.02000000",
"remaining_amount": "0.01000000"
},
"currency_received": {
"currency": "BTC",
"amount": "0.02000000"
},
"transactions": [
{
"id": 750294,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "deposit",
"address": "2Mvo6FMduhHz1BTDHsQ5GyRoifcG3y4ycpk",
"tag": null,
"amount": "0.01000000",
"txid":
"528dcda13270f8590853405600bf5634d53aa66d2ce5d3a873006a670f9da788",
"confirmations": "0"
}
],
"fees": [],
"error": "",
"status": "pending",
"fixed_at": 1592307241,
"expires_at": 1592308141
}
AlphaPo Documentation Data examples / 68

Callback: invoice transaction is in the mempool


{
"id": 22,
"foreign_id": "229-hdsa",
"type": "invoice",
"crypto_address": {
"id": 1845,
"currency": "BTC",
"convert_to": "EUR",
"address": "2N8pvnVKEFjVCP4TteJVCPTbg9Aqibfws8C",
"tag": null
},
"currency_sent": {
"currency": "BTC",
"amount": "0.00309556",
"remaining_amount": "0.00000000"
},
"currency_received": {
"currency": "EUR",
"amount": "26.00000000"
},
"transactions": [
{
"id": 1504,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "deposit",
"address": "2N8pvnVKEFjVCP4TteJVCPTbg9Aqibfws8C",
"tag": null,
"amount": "0.00309556",
"txid":
"3e68744626ba23d591dc1b548b8b9b126ab0f49e6da020958f66ee64c38ec7ed",
"confirmations": "0"
}
],
"fees": [],
"error": "",
"status": "processing",
"fixed_at": 1592308917,
"expires_at": 1592395375
}
AlphaPo Documentation Data examples / 69

Callback: invoice payment by installments


{
"id": 588,
"foreign_id": "8FW1KI7LesB9yxWcK1K",
"type": "invoice",
"crypto_address": {
"id": 386897,
"currency": "BTC",
"address": "2Mvo6FMduhHz1BTDHsQ5GyRoifcG3y4ycpk",
"tag": null
},
"currency_sent": {
"currency": "BTC",
"amount": "0.02000000",
"remaining_amount": "0.00000000"
},
"currency_received": {
"currency": "BTC",
"amount": "0.02000000"
},
"transactions": [
{
"id": 750294,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "deposit",
"address": "2Mvo6FMduhHz1BTDHsQ5GyRoifcG3y4ycpk",
"tag": null,
"amount": "0.01000000",
"txid":
"6647cf5cae701507b7076b32ca12f19d8e9fe037407c02e09b04abdaede99fd0",
"confirmations": "1"
},
{
"id": 750384,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "deposit",
"address": "2Mvo6FMduhHz1BTDHsQ5GyRoifcG3y4ycpk",
"tag": null,
"amount": "0.01000000",
"txid":
"528dcda13270f8590853405600bf5634d53aa66d2ce5d3a873006a670f9da788",
"confirmations": "1"
}
],
"fees": [
{
"type": "fee_crypto_deposit",
"currency": "BTC",
"amount": "0.0008"
}
],
AlphaPo Documentation Data examples / 70

"error": "",
"status": "confirmed",
"fixed_at": 1592307241,
"expires_at": 1592394104
}
AlphaPo Documentation Data examples / 71

Callback: invoice timer expired


{
"id": 23,
"foreign_id": "77xa2pd",
"type": "invoice",
"crypto_address": {
"id": 1846,
"currency": "BTC",
"address": "2MyL2ftBdNsmpsx1EKggPzNVuoiZCWdVaLX",
"tag": null
},
"currency_sent": {
"currency": "BTC",
"amount": "0.02000000",
"remaining_amount": "0.02000000"
},
"currency_received": {
"currency": "BTC",
"amount": "0.02000000"
},
"transactions": [],
"fees": [],
"error": "Timer expired. User not paid.",
"status": "failed",
"fixed_at": 1592309817,
"expires_at": 1592310717
}
AlphaPo Documentation Data examples / 72

Callback: invoice processing status for more than 24 hours


{
"id": 21,
"foreign_id": "88smaan2",
"type": "invoice",
"crypto_address": {
"id": 1844,
"currency": "BTC",
"address": "2NCfH4keMq2SZj3H73VeQYtb8yBgTuUrACf",
"tag": null
},
"currency_sent": {
"currency": "BTC",
"amount": "0.01000000",
"remaining_amount": "0.00990000"
},
"currency_received": {
"currency": "BTC",
"amount": "0.01000000"
},
"transactions": [
{
"id": 1505,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "deposit",
"address": "2NCfH4keMq2SZj3H73VeQYtb8yBgTuUrACf",
"tag": null,
"amount": "0.00010000",
"txid":
"6dd68265eb2b3a1be0dd4a40975345155d0fbbe244c84efcc7f6b910629a38f9",
"confirmations": "0"
}
],
"fees": [],
"error": "Timer expired. Transactions were in status processing too long.",
"status": "failed",
"fixed_at": 1592308709,
"expires_at": 1592309609
}
AlphaPo Documentation Data examples / 73

Callback: invoice payment is lesser than invoice amount


{
"id": 21,
"foreign_id": "88smaan2",
"type": "invoice",
"crypto_address": {
"id": 1844,
"currency": "BTC",
"address": "2NCfH4keMq2SZj3H73VeQYtb8yBgTuUrACf",
"tag": null
},
"currency_sent": {
"currency": "BTC",
"amount": "0.01000000",
"remaining_amount": "0.00990000"
},
"currency_received": {
"currency": "BTC",
"amount": "0.01000000"
},
"transactions": [
{
"id": 1505,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "deposit",
"address": "2NCfH4keMq2SZj3H73VeQYtb8yBgTuUrACf",
"tag": null,
"amount": "0.00010000",
"txid":
"6dd68265eb2b3a1be0dd4a40975345155d0fbbe244c84efcc7f6b910629a38f9",
"confirmations": "2"
}
],
"fees": [],
"error": "Timer expired. User paid less than requested.",
"status": "failed",
"fixed_at": 1592308709,
"expires_at": 1592309609
}
AlphaPo Documentation Data examples / 74

Callbacks with other statuses


Callback: transaction not confirmed
{
"id": 2686579,
"type": "deposit",
"crypto_address": {
"id": 381711,
"currency": "BTC",
"address": "2N9zXNdiT8ucZp7zZSrucqYGCD6xYF8F3di",
"tag": null,
"foreign_id": "991904"
},
"currency_sent": {
"currency": "BTC",
"amount": "0.01000000"
},
"currency_received": {
"currency": "BTC",
"amount": "0.01000000",
"amount_minus_fee": "0.01000000"
},
"transactions": [
{
"id": 714680,
"currency": "BTC",
"transaction_type": "blockchain",
"type": "deposit",
"address": "2N9zXNdiT8ucZp7zZSrucqYGCD6xYF8F3di",
"tag": null,
"amount": "0.01000000",
"txid":
"998c4d9bb7145aafd88658b292f41fe05973c217f7adcd6052bcafe2309e7e02",
"confirmations": "0"
}
],
"fees": [],
"error": "",
"status": "not_confirmed"
}
AlphaPo Documentation Data examples / 75

Callback: transaction cancelled


{
"id": 2686580,
"foreign_id": "123",
"type": "withdrawal",
"crypto_address": {
"id": 382362,
"currency": "ETH",
"address": "12345",
"tag": null
},
"transactions": [
{
"id": 714681,
"currency": "ETH",
"transaction_type": "blockchain",
"type": "withdrawal",
"address": "12345",
"tag": null,
"amount": "1.00000000",
"txid": null,
"confirmations": "0"
}
],
"fees": [],
"error": "Invalid params: expected a hex-encoded hash with 0x prefix.",
"status": "cancelled"
}
AlphaPo Documentation Confirmations and limits / 76

Confirmations and limits


Here you can find the number of confirmations for crypto deposits and min/max limits for the amount of
currency.

Warning: Please note that the min limits for exchange operations must be obtained via the API
Á (see /currencies/pairs), as they may vary dynamically. Minimum deposit and withdrawal
limits must also be obtained via the API (see /currencies/list), although they do not
change often.

Currency Confirmations Min deposit Min withdrawal Explorer

ADA 15 2 2 explorer.cardano.org
BCH 0/6* 0.01 0.01 blockchain.com/explorer/assets/bch
BNB 1 0.01 0.01 explorer.binance.org
BNB‐BSC 25 0.01 0.01 bscscan.com
BTC 0/1* 0.0001 0.0001 btc.bitaps.com
DAI 10 5 5 etherscan.io
DOGE 6 1 1 live.blockcypher.com/doge
ETH 10 0.01 0.01 etherscan.io
EURS 10 0.01 0.01 etherscan.io
LTC 6 0.01 0.01 live.blockcypher.com/ltc
SNACK 25 10 10 bscscan.com
TRX 19 10 10 tronscan.org
USDC 10 5 5 etherscan.io
USDTB 25 5 5 bscscan.com
USDTE 10 5 5 etherscan.io
USDTT 19 2 2 tronscan.org
XED 10 0.01 0.01 etherscan.io
XRP 1 0.001 0.001 xrpscan.com

* We use an external service to speed up the process of deposit crediting for slow blockchains:

• If the transaction is approved by the service, no confirmations are required and the deposit will be
credited immediately. Usually, this happens in 85% of cases.
• If not, the cryptoprocessing will require the number of confirmations shown after the / symbol in the
table.

It is defined automatically and does not require any action from the user.

Note: In cases when several blocks are released in a short period of time, the number of
® confirmations can exceed the value indicated in the table.
AlphaPo Documentation Dynamic minimum deposit fee for BTC / 77

Dynamic minimum deposit fee


for BTC
When working with the BTC blockchain, AlphaPo replaces the blockchain’s mining fees with a package of
predictable fees. To make this model sustainable, we need to update the fees whenever the network becomes
too busy and the mining fees change too significantly.
We adopted the dynamic minimum deposit fee approach to keep your costs as predictable as possible.
With this approach:

• we keep all fees fixed, except for the minimum deposit fee,
• the minimum deposit fee changes predictably, based on public data,
• the minimum deposit fee never changes more than one time every week.

How it works
Every Monday, we check the average mining fee in the BTC network for the previous week, beginning and
ending at 00:00 UTC on Monday. You can observe this value in public BTC blockchain explorers, for example,
on the Blockchain.com’s Fees Per Transaction graph.
The average mining fee determines the new minimum deposit fee, according to the table below. If it differs
from the last week’s one, we notify all users about the planned change.
AlphaPo switches to the new minimum deposit fee at 10:00 UTC on Wednesday.

The minimum deposit fee calculation table


Level Average mining fee in the blockchain Minimum deposit fee in AlphaPo
Level 1 0–7 USD 1 EUR
Level 2 7–10 USD 1.5 EUR
Level 3 10–15 USD 2.5 EUR
Level 4 15–20 USD 3 EUR
Level 5 20–25 USD 5 EUR
Level 6 25–36 USD 8 EUR
AlphaPo Documentation Crosschain recovery policy / 78

Crosschain recovery policy


Сrosschain recovery of coins is an inherently dangerous and time consuming process. Not all deposits can
be recovered and the timing of recovery is at our discretion. An additional fee might be charged in the case
that the recovery of the incorrect transaction is possible but it creates a sizable workload for the company.
This policy DOES NOT apply to deposits with incorrect or missing memos in currencies such as CryptoNote,
NXT, BitShares, Ripple, STEEM or any others that rely on a message/memo/tag to credit deposits. Nor does
it apply to ETH tokens sent to other addresses on the ETH network. They will be recovered within a time
interval chosen at our discretion.
This policy DOES apply to any deposits sent to an address of another cryptocurrency coin on another net‐
work. This includes but is not limited to:

• Sending, for example, BTC to a BCC address or vice versa


• Sending not supported ERC20 tokens to ETH/ETC addresses
• Sending an OMNI/XCP asset to ANY address other than the one assigned
• Sending ETH to an ETC address

Note: We WILL NOT recover coins or tokens we do not support. Nor will we recover funds that were
distributed as a part of an ICO.
AlphaPo Documentation How to start / 79

How to start
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
API Set Up Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
User Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Limits and Cold Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Balance management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Mass Payouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Transaction and address tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Withdrawal Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Starting Point of API Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
AlphaPo Documentation Introduction / 80

Introduction
For each new merchant, we can provide two separate environments:

• https://app.sandbox.cryptoprocessing.com/ — an introductory environment for testing the basic


functionality of our API (see also: Starting Point of API Testing).
• https://app.alphapo.net/ — an actual environment with real transactions. Intended for use in produc‐
tion.

In each environment, a merchant account will be created for you, and it will be given the “Owner” role (see
User Permissions).

Please note that multiple accounts can have the “Owner” role set for one merchant. Conversely,
® one account can have this role set for multiple merchant accounts.

We will send you an invite to the email address provided by you. This invite will allow you to activate the
merchant account. The invite looks like this:

Please click the link below the message to confirm your email address.
After that, log into the system using your master email and temporary password.
At this point, you need to install the Google Authenticator app on your Android or iOS device. We use
2FA (two‐factor authentication) for all activities and changes in our system. This gives you an extra layer of
security.
Set up the application either using the provided Masterkey or by scanning the QR code and entering the
generated 2FA code. You will need to use the Authenticator every time our system requires you to enter
such a code.
AlphaPo Documentation Introduction / 81

After logging in, you will need to create your new password.
AlphaPo Documentation API Set Up Stage / 82

API Set Up Stage


The following actions are required before you can make API calls to AlphaPo.
Go to the API keys menu where you can activate your API key (or create a new one).
You will receive your API secret — the access code for the API key that you have activated. You will need to
copy and save the secret key in a safe place because it is displayed only once and you will not be able to see
it again.

Note: The API secret is the most important security issue for the production environment. The
® secret grants access to funds management, so the person who owns the secret can transfer
funds to any external addresses.
AlphaPo Documentation API Set Up Stage / 83

Now you need to set up the address for callbacks from the API. Callbacks are a means of communication
with our API. The system sends callbacks for every transaction (deposit or withdrawal) and correct handling
of these callbacks is essential for your day‐to‐day workflow. See the Callbacks page for more details.
You can specify the callback address by selecting the Settings tab. Then go to the API tab located in the top
left corner and enter your URL. The system will send callbacks to this URL. Without completing this step, it
is not possible to receive callbacks from us.

Whitelisting IP addresses
As an additional layer of security, it is highly recommended to whitelist IP addresses for your API key.
Whitelisting means that AlphaPo will process API requests only from a certain list of IP addresses (the
“white list”), while requests from any other IP addresses will be blocked. With this feature enabled, even if
someone were to gain unauthorized access to your API key, they would not be able to use it unless they
also gain access to a device with an IP address that you pre‐approved.
Whitelisting is disabled by default. It is automatically enabled if you specify one or more IP addresses for the
active API key.
To specify the IP addresses and enable whitelisting:

1. On the API keys tab, click the Edit button next to the active key.
2. In the IPs field, enter a comma‐separated list of IP addressed.
Typically, you may want to whitelist the IP addresses of the servers where your e‐commerce platform,
payment gateway, or any system that integrates with AlphaPo is hosted. If you use a cloud service or
a hosting provider, you can obtain these IP addresses from your service provider’s documentation or
support team.
Note that you should not specify your customers’ IP addresses, but only the ones your own system
controls.
3. Confirm the action by entering the 2FA code and clicking the Save button.
AlphaPo Documentation API Set Up Stage / 84

Enabling currencies
Make sure that all necessary currencies are enabled in your merchant account. To do this, go to the Currencies
Info tab. Here you can enable the currencies you want to use (either crypto or fiat) by clicking the Add New
Currency button and selecting the desired currencies from the list.
AlphaPo Documentation User Permissions / 85

User Permissions
On the Team tab, you can manage your team permissions, add and remove members.
By default, newly added members only have permission to view common information such as account bal‐
ances, actual fees and transaction info but not to modify them. Your master account has the “Owner” role.
It grants you access to all sensitive information (API secret, cold wallet addresses, etc.) and funds manage‐
ment.
You can share this role with other team members or transfer it to another account if you need, but this must
be approved by us for security reasons.

Attention: Please make sure the “Owner” role is only granted to the appropriate staff members,
Á as they will have access to confidential information.
AlphaPo Documentation Addresses / 86

Addresses
The Addresses tab contains three sections.

My addresses
The first section, My addresses, contains the deposit addresses provided to the merchant in order to replenish
the balance of the merchant’s account (see Deposits). These are the addresses displayed to users on the
Balances tab when they click the Receive button for the selected type of cryptocurrency.
The functionality of this section is available to all team members.

Clicking the address line in this section opens a side tab with the details of the deposit.
AlphaPo Documentation Addresses / 87

This tab allows to perform the following actions:


This side tab allows you to perform the following actions:

• Сopy the address by clicking the address line and then the Copy address button;
• Open the QR code or copy the link to the payment terminal by clicking the Receive button;
• Change the name of the address by clicking the Edit button.

To create a new address, click the Create address button in the My addresses section. In the window that
appears, fill in the following information:

• Name;
• Type: “Deposit”/“Deposit exchange”;
• The currency supported by the address;
• The currency into which the funds are to be converted, if the “Deposit exchange” type is selected.
AlphaPo Documentation Addresses / 88

System addresses
The second section, System addresses, contains the list of addresses generated by the API via the
/addresses/take request. This section is available to all team members. See Deposits for more details
on the deposits workflow.

To simplify the address search, you can filter the list by clicking the Filters button and selecting one of the
available parameters from the drop‐down list.
Detailed information about the address can be viewed and copied by clicking the address line and then the
Copy address button in the window that appears.
AlphaPo Documentation Addresses / 89

Contacts
The third section, Contacts, contains the list of withdrawal addresses added by you or your users. Only team
members with the “Owner” role can create such addresses.

To add an address to which you will withdraw funds on a constant basis, click the Add Contact button and
fill in the following required information:
AlphaPo Documentation Addresses / 90

• Name;
• Currency;
• Address.

The system checks if the format of the address corresponds to the network to which the withdrawal will be
sent. If the format is correct, the address is saved in our system.
You can get access to your saved withdrawal addresses when you select the currency of the withdrawal
transaction in the Balances tab. To get the access, first click the withdrawal currency and then the address
book icon (see Withdrawals).
AlphaPo Documentation Limits and Cold Addresses / 91

Limits and Cold Addresses


On the Limits tab, you can set the amount you want to keep in your hot wallet (i.e. your primary balance)
and the minimum transaction amount for transferring funds to a separate cold wallet.
Once your balance reaches the Keep on Hot amount plus the minimum transaction amount, this excess will
be automatically transferred to the cold address. You can use these addresses (or wallets) to store funds that
you do not need in your primary account.

Example: You set Keep on Hot to 1 BTC and Min transaction Amount to 0.1 BTC. As soon as
b your balance reaches 1.1 BTC, the excess amount (0.1 BTC) will be automatically sent to your
cold wallet.

You can set any addresses that you want to use as cold ones on the Cold Addresses tab. You can fill in the
Cold Address field for each active currency.
AlphaPo Documentation Balance management / 92

Balance management
The Balances tab contains information about your cryptocurrency account balances and fiat account bal‐
ances.

The EUR equivalent for each cryptocurrency on your balance is depicted below the cryptocurrency amount
itself.
The Balances tab is very important for managing your account. Here you can see your deposit address for
each active cryptocurrency. To see the available actions, select one of the currencies. This opens a side
window with all possible actions.

Click the Receive button to see the deposit address (see Deposits). In the window that opens, you will see a
form with the address; pay close attention to its name. Usually, the default address or the last address you
AlphaPo Documentation Balance management / 93

used is displayed. In the drop‐down list, you can see all the addresses that were created in the My addresses
section of the Addresses tab.
You can either copy the address or use the provided QR if you find it more preferable. When making a deposit
to the address, make sure the currency is correct and the amount exceeds our processing limits.
By clicking the Send button, you can access the menu that allows you to withdraw cryptocurrency (see
Withdrawals). You need to specify the address and set the amount. Also make sure that the receiver’s
address is correct, the currency matches and the amount is above our processing limits.

You can exchange your cryptocurrency for fiat currency or vice versa, or exchange one cryptocurrency for
another (see Available trading pairs) by clicking the Exchange button.
AlphaPo Documentation Balance management / 94

In the menu that appears, you can choose the currency you want to exchange and the currency you want
to receive (either crypto or fiat), as well as set the amount. The exchange rate is fixed for one minute, so if
you exchange the funds within this time frame, you will get the exact amount in your chosen target currency.
If the timer expires, a new rate will be calculated and fixed for another minute. See Exchanges for more
details.

Note: Only users with the “Owner” role can access the Send and Exchange buttons, while any
® user from your team can see the deposit addresses by clicking the Deposit button.
AlphaPo Documentation Notifications / 95

Notifications
On the Notification tab, you can configure notifications to simplify the work with balances. These notifica‐
tions will help keep your business running.

Notifications will be sent to the addresses specified in the Emails section if the balance in a certain currency
becomes less than the amount specified in the Amount field of the Rules section.
To add a new email address, click the Add email button. To add a new rule, click the Add rule button and fill
in the required data and 2FA code in the window that appears (see below).
AlphaPo Documentation Mass Payouts / 96

Mass Payouts
The Mass Payouts tab provides an interface for initiating multiple outgoing crypto transactions at a time.
This can include transactions of different amounts made in different cryptocurrencies.
Initiating a mass payout involves processing a special CSV file and creating a transaction based on each data
row. Each transaction will then be processed in accordance with the general transaction flow, with the mass
payout getting its status based on all the transactions’ statuses.
Being an alternative interface to withdrawals, this feature works within the same limitations as they do.
For example, each individual transaction in a mass payout may be a subject to your merchant’s interface
withdrawal limits.

Mass payout file format


To make a mass payout, you need to prepare a CSV file describing all the transactions you want to make. The
file must contain no more than 100 data rows, and its size must not exceed 1 MB.
Each data row must contain five values, separated by either commas or semicolons:

• Address — the recipient’s address.


• Tag — the recipient’s Tag field. Leave empty for transactions that do not require a Tag field.
• Currency — the ISO code of the currency to send.
• Amount — the amount of funds to send.
• Note — a note to save in the transaction history. Leave empty to skip adding a note for the transaction.

The file must start with a header row that lists these columns in the specified order.
Below is an example of a valid CSV file for a mass payout.

Address,Tag,Currency,Amount,Note
bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq,,BTC,0.0025,Salary for Alice
0x59E497D1AEf6B696B66F503D85d9b29A0e2930E8,,USDTE,120.20,Salary for Bob
r9NEXKYNyfxhzw7VzJp9et8t3onbam98G,2422386,XRP,400,Salary for Charlie
AlphaPo Documentation Mass Payouts / 97

Initiate a mass payout


Once you prepared a CSV file for a mass payout, you can upload it and initiate a mass payout.

1. On the Mass Payouts tab, click Create mass payout.


2. Enter a name for this payout.
3. Click Upload file and choose the CSV file from your device.
4. Check the preview table to make sure that the CSV file was loaded correctly.
If the cryptoprocessing detects a critical error in a specific row, it will show an exclamation mark next
to the row. Hover it to see the error message. For your convenience, the first column always indicates
the line number at which the invalid data was found in the CSV file.
Fix all the critical errors in your file and click Reupload file to upload and check it again.
5. Check the total estimation at the bottom of the table. It includes:

• the total withdrawal amount in the equivalent currency,


• a subtotal withdrawal amount for each cryptocurrency, both in the cryptocurrency itself and in
the equivalent currency.

Note that the amounts in the equivalent currency are for information purposes only. The actual costs
may change due to both the cryptoprocessing’s fees and the network’s mining fees. Both of them are
applied to each transaction only after the cryptoprocessing considers it confirmed.
6. Confirm the action by entering the 2FA code and clicking the Send payouts button.
AlphaPo Documentation Mass Payouts / 98

View a mass payout status


The table on the Mass Payouts tab displays all mass payouts created by the merchant. It contains the follow‐
ing columns:

• ID — a unique internal identifier of the mass payout.


• Name — the name that was entered when initiating the mass payout.
• Date — the date and time when the mass payout was initiated.
• Payouts processed — how many rows from the original CSV files has been processed.
For example, “10 out of 20” would indicate that the CSV file contains 20 data rows, but the cryptopro‐
cessing has only attempted to create the transactions for 10 of them so far.
• Transactions created — how many transactions were created as part of the mass payout.
Normally, this value increases and eventually becomes the same as the number of Payouts processed.
However, the cryptoprocessing may fail to create some transaction due to insufficient funds, an invalid
recipient address or other unexpected errors. See Retrying unsuccessful transactions below.
• Status of mass payout:

– Processing — the cryptoprocessing is still creating the transactions based on the CSV file or wait‐
ing for the transactions to be completed.
– Transaction on moderation — one or more transactions require another owner’s approval, due to
the withdrawal limits settings.
– Completed with errors — all created transactions are completed, but some transactions either
could not be created or failed after creation.
– Completed — all transactions were created and completed successfully.

Note that the table shows the Payouts processed and Transactions created values at the moment of the
latest page update. The actual values may change rapidly, especially while the CSV file is still being processed.
Refresh the page to get the latest information.
Click on a mass payout to open the panel with more details about it. The panel includes all the data from
above, as well as the following counters:

• Transactions created — the number of successfully created transactions. Click on the number to see
this mass payout’s transactions on the Transactions tab.
Below the counter, a separate counter will be shown for each status that transactions from this mass
payout got. Click on a number to see the mass payout’s transactions with the given status on the
Transactions tab.
• Transactions not created — the number of rows from the original CSV file for which the cryptoprocess‐
ing failed to create transactions.
AlphaPo Documentation Mass Payouts / 99

Retrying unsuccessful transactions


For mass payout with at least one failed item in it (either a failure in creating a transaction or an unsuccessful
transaction), the panel contains the Export unsuccessful transactions button. Click the button to download
a modified version of the original CSV file, with all successful transactions removed.
The button for downloading the file appears as soon as at least one failure occurs during the mass payout.
The file may change after that if more transactions will be unsuccessful.
Besides the original data, the file contains additional columns:

• Status — either the status of an unsuccessful transaction (Failed, Declined, Canceled) or Not created
if the cryptoprocessing failed to create a transaction based on this data row.
• Error — an error message explaining why the transaction was unsuccessful.

If you believe that the cause of the errors is fixed (you added more funds to your balances, you added a missing
Tag field, etc.), you can remove the Status and Error columns from the CSV file and use it for initiating a new
mass payout.
AlphaPo Documentation Transaction and address tracking / 100

Transaction and address tracking


Transactions tab
The Transactions tab contains information on all transactions of your merchant account.

A wide range of filtering options for transactions is available, which can be useful if you need to filter the
transactions by a given parameter: currency, time, status, etc. Also, you can export the list of transactions
into a .csv file by clicking the Export button in the upper right corner of the Filter menu.
Click on a transaction to open the panel with more details about it. This includes its time of creation, your
balances before and after the transaction, the addresses involved, etc. The exact set of properties varies
depending on the type of the transaction. If the transaction is a part of a mass payout, the panel will also
indicate its ID and name.
For deposits, withdrawals and invoices, the details panel also includes the TXID property (short for “Transac‐
tion ID”). Its meaning depends on whether the transaction is external or internal.

• An external transaction is a transaction between an AlphaPo user and an external address. For example,
it may be a withdrawal from your balance to an external wallet. An external transaction takes place in
the cryptocurrency’s blockchain, where it can be found by its TXID. Click the icon next to the “TXID”
label to open the transaction details in a public blockchain explorer.
• An internal transaction is a transaction between two AlphaPo users. For example, if your company has
multiple merchants registered at AlphaPo, sending funds between them will be done instantly as an
internal transaction. Such a transaction does not get sent to the public blockchain, thus avoiding the
mining fee. The TXID property displays a unique identifier of the transaction within AlphaPo. Click the
icon next to the “TXID” label to open the transaction details in AlphaPo Explorer.
AlphaPo Documentation Transaction and address tracking / 101

Risk scoring
In cryptocurrencies, it is often possible to analyze whether the funds used in the new transaction have par‐
ticipated in any suspicious transactions in the past.
AlphaPo makes such an analysis for BTC, BCH, ETH, LTC, and USDT, providing two parameters for incoming
transactions: Risky inflow and Risk score.

• Risky inflow is the amount of funds (in USD equivalent) that have originated from transactions that
can be considered suspicious.
• Risk score is the percentage of suspicious inputs or addresses among their total number. See Deposit
data examples.

The parameters are available in the Transactions and Invoices tabs.


It is recommended to manually inspect the transactions with a risk score of about 75% or higher.
AlphaPo Documentation Transaction and address tracking / 102

Payments tab
The Payments tab also allows you to keep track of all transactions within your merchant account, and in
addition, contains information on our processing fees applied to these transactions and the remainder of
your funds after each transaction.

Package Info tab


On the Package Info tab, you can check the processing fees for different types of operations.

If you have any questions regarding the set fees or would like to discuss this matter further, please contact
us via sales@alphapo.net or email directly to our sales managers.
AlphaPo Documentation Withdrawal Limits / 103

Withdrawal Limits
To increase the level of control and security of your funds, we have added the ability to configure withdrawal
limits, which can be created for withdrawing funds both through the interface and through the API.
With this functionality, you can set up a default limit and specify a custom limit for a specific currency.
Withdrawals that exceed the limit will obtain the “Pending” status. All your team members whose email
addresses are specified in the settings will receive email notifications with a link to the list of transactions
with “Pending” status. They can approve or decline transactions with the “Pending” status.
Setting limits for withdrawals and confirmation of withdrawals exceeding the limit are available only to team
members with the “Owner” role within your merchant account (see User Permissions).

Note: Transactions cannot be created and confirmed by the same owner. If only one member
® of your team has the “Owner” role, then the interface withdrawal functionality is not available
to you.

To set up withdrawal limits, go to Settings → Withdrawal limit. On this tab, select which withdrawals you
are going to limit: created via the API or the interface.

You can set three types of limits:

• Limit for one operation;


• Limit on transactions per hour;
• Limit on transactions per day.

If no limits are specified, the value is set to “Unlimited”.


AlphaPo Documentation Withdrawal Limits / 104

Default interface withdrawal limits


You can set up default limits for all withdrawals via the interface. All default limits are set as an equivalent
amount in EUR.

These settings will be applied to all withdrawals via the interface/API for all cryptocurrencies.
To set up the default limits, click the Edit button.

In this form, you can do the following:

• select the option “All interface withdrawals will be passed through manual moderation” (all interface with‐
drawals will be manually moderated);
• for each type of limit (one operation, per hour, per day):
– leave the “Unlimited” value (there are no restrictions on the interface withdrawals for the the cor‐
responding type of limit)
OR
– select “Custom” and enter a value (if the total amount of the interface withdrawals for the corre‐
sponding limit type exceeds the specified value, then this and all the subsequent transactions will
be manually moderated).

After setting the limits, enter your 2FA code to confirm.


AlphaPo Documentation Withdrawal Limits / 105

Custom withdrawal limits


To set your own limit for any specific currency, go to the Custom interface withdrawal’s limits section or the
Custom API withdrawal’s limits section.

To add a cryptocurrency withdrawal limit, click the Add limit button.

In the window that appears, select the currency from the drop‐down list. The next steps are similar to those
described in Default interface withdrawal limits.
When specifying the amount, you cannot set the value to “0” to send all transactions to manual moderation.
Instead, check the box All interface/API withdrawals will be passed through manual moderation.
The custom withdrawal limits have a higher priority than the Default withdrawal limits.

Example: Let us assume 1 BTC = 10,000 EUR. The user sets the default withdrawal limit “per
b day” to 9000 EUR and the custom withdrawal limit for one operation in BTC equal to 2 BTC.
When you withdraw 1 BTC, the transaction will not become “Pending” because it will be less
than your custom withdrawal limit.
AlphaPo Documentation Starting Point of API Testing / 106

Starting Point of API Testing


This section describes the first steps you should take to test the AlphaPo API.

Using the test environment


Each endpoint listed in the API endpoints section is also available in our test environment. To use the test en‐
vironment instead of the production environment, just use https://app.sandbox.cryptoprocessing
.com/api/v2 as your base URL.

Example
b Production: https://app.alphapo.net/api/v2/addresses/take
Test: https://app.sandbox.cryptoprocessing.com/api/v2/addresses/take

Using testnet currencies


To test the deposit function, you can generate an address with /addresses/take and send some currency
to it. You can transfer test currencies from any testnet faucet, for example, BTC from Yet Another Bitcoin
Testnet Faucet or ETH from Ropsten Ethereum Faucet.
Once the test funds are received, you can send a part of them back to the address specified on the faucet’s
page using the /withdrawal/crypto API endpoint in order to test the withdrawal workflow to an external
address.
Please note, you will be able to test the exchange function using the testnet currency only in our Sandbox
environment. You will not be able to do this with your account in the production environment. Please make
sure to test this feature at this stage. You will still be able to use the exchange feature in the production
environment, but only with real funds.

Receiving callbacks
By this time, if you have followed the steps above and have already set your callback URL, you should start
receiving them from our system. Make sure that the callbacks are processed correctly on your side and
you receive them for all ongoing transactions. If you did not receive the callback when you should, you can
click the Repeat callback button and our API will resend it to you. If the problem persists or you have any
questions about the API, please do not hesitate to contact us via info@alphapo.net.
AlphaPo Documentation Starting Point of API Testing / 107

You might also like