Getting Started
EURO Mastercard
Administrator
Wallet as a Service
Exchange As a Service
Resources
BSICARDS API Documentation
Welcome to the BSICARDS API. Integrate card issuance capabilities into your application.
Features: Create MasterCard/Visa/Digital cards - Fund cards - Track transactions - Webhooks - Admin endpoints
Tech Support: Contact on Telegram @bsicards
Authentication
Include these headers in every request:
publickey: pk_test_16tl64hqs6fazd9q5j96
secretkey: sk_test_izaov8rek6e04gu8d0j9
Base URL: https://cards.bsigroup.tech/api/MasterCard Issuance
Create and manage MasterCard virtual cards with 3DS authentication and GPay/Apple Pay support.
Create Card
{"useremail":"test@bsigroup.tech","nameoncard":"John Doe","pin":"1234"}Get All Cards
{"useremail":"test@bsigroup.tech"}Get Pending
{"useremail":"test@bsigroup.tech"}Get Card
{"useremail":"test@bsigroup.tech","cardid":"card_id"}Transactions
{"useremail":"test@bsigroup.tech","cardid":"card_id"}Change Pin
{"useremail":"test@bsigroup.tech","cardid":"card_id","pin":"5678"}Freeze Card
{"useremail":"test@bsigroup.tech","cardid":"card_id"}Unfreeze Card
{"useremail":"test@bsigroup.tech","cardid":"card_id"}Fund Card
{"useremail":"test@bsigroup.tech","cardid":"card_id","amount":"50.00"}Min: $10
Visa Card Issuance
Create Card
multipart/form-data: useremail, nameoncard, pin, nationalid[file], photo[file]
Get All
{"useremail":"test@bsigroup.tech"}Get Pending
{"useremail":"test@bsigroup.tech"}Get Card
{"useremail":"test@bsigroup.tech","cardid":"card_id"}Fund Card
{"useremail":"test@bsigroup.tech","cardid":"card_id","amount":"50.00"}EURO Mastercard
EURO Mastercard APIs for issuing, funding, viewing, freezing, terminating, and tracking EUR cards. These endpoints use your eurbalance.
publickey and secretkey headers, except webhook callback.Create Card
{"useremail":"test@bsigroup.tech","firstname":"John","lastname":"Doe"}Creates a virtual EURO Mastercard and stores it in the issued cards table under brand mastercardeuro.
Fund Card
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde","amount":25.00}Deducts the amount from your EUR wallet and tops up the provider card.
Get All Cards
{"useremail":"test@bsigroup.tech"}Returns all issued EURO Mastercard records for the supplied email under your API keys. Response fields include cardid, useremail, lastfour, brand, and type.
Get Card
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde"}Returns provider card details including masked PAN, status, and balance.
Get Sensitive Card
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde"}Returns a secure URL for sensitive card information. Use the returned URL inside an iframe.
Block Card
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde"}Unblock Card
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde"}Terminate Card
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde"}Provider termination is also triggered automatically once failed transaction decline count reaches the threshold configured in the webhook flow.
Transactions
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde","page":1,"limit":10}Supports pagination with optional page and limit fields.
FX Calculate
{}Returns the provider FX quote for USDC to EUR with the platform margin already applied.
Webhook
{"type":"transaction","data":{"cardId":"6a2cf228fa6592ee2ed64cde","id":"6a2f9a4626cf3b811ebeb7e8","amount":52.5,"currency":"USD","settledAmount":45.64,"merchant":"JetBrains","status":"FAILED"}}Stores transaction and extra fee events, prevents duplicate decline increments by event id, increments declinecount only once per unique failed transaction, and handles master-account extra fee deductions from EUR balance.
Administrator Endpoints
Wallet Balance
Returns wallet balance
Deposits
All deposits
Transactions
All transactions
Visa Cards
All Visa cards
Mastercards
All Mastercards
Digital Cards
All digital cards
Reseller Balance
Reseller Balance
Reseller Cards
Reseller cards
Reseller Transactions
Reseller Transactions
Wallet as a Service API
Multi-chain wallet endpoints for creating, managing, and transacting with cryptocurrency wallets. All endpoints require publickey and secretkey headers.
Supported Coins
- USDT-BEP20 (BSC)
- DAI (BSC)
- BNB (BSC)
- USDC-Polygon (Polygon)
- USDT-TRC20 (TRON)
- TRON (TRX)
- BTC
- SOL (Solana)
- XRP
Amount Units & Decimals for Send/Withdraw
Important: The amount parameter in send/withdraw endpoints must be specified in the smallest unit for each coin, not in USD. See the table below:
| Coin | Network | Unit | Decimals | Example (1 Coin) |
|---|---|---|---|---|
| BTC | Bitcoin | Satoshi | 8 | 100000000 |
| ETH | Ethereum | Wei | 18 | 1000000000000000000 |
| BNB | BSC | Wei | 18 | 1000000000000000000 |
| USDT-BEP20 | BSC | Token Unit | 6 | 1000000 |
| DAI | BSC | Token Unit | 18 | 1000000000000000000 |
| USDC-Polygon | Polygon | Token Unit | 6 | 1000000 |
| USDT-TRC20 | TRON | Token Unit | 6 | 1000000 |
| TRON (TRX) | TRON | Sun | 6 | 1000000 |
| SOL | Solana | Lamport | 9 | 1000000000 |
| XRP | Ripple | Drop | 6 | 1000000 |
For example, to send 1 USDT-TRC20, set amount to 1000000. To send 0.5 BTC, set amount to 50000000.
Always use the smallest unit for the coin. Do not use USD values.
privateKey, mnemonic, and xpub fields (if present in the response) are only displayed once at the time of address creation. They cannot be retrieved again for security reasons. Please store them securely.1. Create Address
{
"useremail": "user@example.com",
"coin": "USDT-BEP20"
}
Response:
{
"uuid": "36056904-224c-43f0-99bc-fe0252b81531",
"address": "0x.....",
"coin": "USDC-BEP20",
"useremail": "user@example.com",
"mnemonic": "target .......",
"private_key": "0x....."
}
BTC-Lightning Error Example:
{
"error": "Wallet creation failed: missing address, mnemonic, or private key"
}
2. Get All Deposit Addresses
Query: useremail
Response:
[
{
"uuid": "...",
"address": "...",
"coin": "USDT-BEP20",
"created_at": "..."
}
]
3. Get Specific Deposit Address
Query: useremail
Response:
{
"uuid": "...",
"address": "...",
"coin": "USDT-BEP20",
"created_at": "..."
}
4. Get Balance
Query: uuid or address, useremail
Response:
{
"balances": {
"USDT-BEP20": "...",
"BNB": "..."
}
}
5. Get Withdrawal Fees
{
"uuid": "...",
"to_address": "...",
"amount": "1.0",
"coin": "USDT-BEP20"
}
Response:
{
"total_gas_fees": "...",
"base_coin": "BNB",
"base_balance": "..."
}
6. Withdraw
{
"uuid": "...",
"to_address": "...",
"amount": "1.0",
"coin": "USDT-BEP20",
"useremail": "user@example.com"
}
Response:
{
"tx_hash": "...",
"status": "pending"
}
Exchange - Currencies
Returns a list of supported currencies for exchange.
Example Request
GET /api/swap/currencies HTTP/1.1
Host:cards.bsigroup.tech
Headers: publickey and secretkey
Exchange - Status
Checks the status of the exchange service.
Example Request
GET /api/swap/status?transaction_id=12345 HTTP/1.1
Host:cards.bsigroup.tech
Headers: publickey and secretkey
Response
{
"created_at": "2026-03-25 08:33:03",
"status": "wait",
"transaction_id": "c69c3819f5d5d9",
"coin_from": "BTC",
"coin_to": "USDT",
"deposit_amount": "0.5",
"withdrawal_amount": "34899.28510624",
"rate": "69800.570212495914022",
"fee": "0",
"deposit": "bc1q3ltpcsh9w3f7lwpt7vtpe6plr5p4r8400yl25v",
"deposit_extra_id": null,
"withdrawal": "THUnQJKECXP82EjijVVHpUwFMd3Y3vGBQJ",
"withdrawal_extra_id": null,
"return": null,
"return_extra_id": null,
"final_amount": "34899.28510624",
"hash_in": null,
"hash_out": null,
"rating": null,
"real_deposit_amount": "0.5",
"real_withdrawal_amount": "34899.28510624",
"startedAt": null,
"finishedAt": null,
"type": "cex",
"is_float": 0,
"coin_from_network": "BTC",
"coin_to_network": "TRC20",
"revert": 0,
"extra_fee_from": "0",
"extra_fee_to": "0",
"return_amount": null,
"return_hash": null,
"return_coin": null,
"return_network": null,
"confirmations": 0,
"expired_at": 1774422183,
"aml_error_signals": [],
"error_code": "",
"coin_from_contract_address": null,
"coin_to_contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
"execution_time": null,
"is_available": false,
"coin_from_explorer_url": "https://blockchair.com/bitcoin/transaction/",
"coin_to_explorer_url": "https://tronscan.org/#/transaction/",
"coin_from_smart_contract_explorer_url": null,
"coin_to_smart_contract_explorer_url": "https://tronscan.org/#/token20/",
"coin_from_icon": "https://images.letsexchange.io/coins/9489b9506caf28a7d22423c0bf908937.svg",
"coin_from_extra_name": "",
"coin_to_icon": "https://images.letsexchange.io/coins/092c3f1c9ac951f1bee4db4e836b979a.svg",
"coin_to_extra_name": "",
"coin_from_name": "Bitcoin",
"coin_to_name": "TetherUS",
"coin_from_additional_get_info": "",
"coin_from_additional_send_info": "",
"coin_to_additional_get_info": "",
"coin_to_additional_send_info": "",
"need_confirmations": 2,
"email": "*******",
"kyc_url": null,
"kyc_email": null,
"internal_transafer_refund": false,
"return_network_code": null,
"return_explorer_url": null,
"profit": null,
"bonus": "0.00000000"
}
Exchange - Get Estimate
Get an estimated amount for a currency exchange.
Example Request
POST /api/swap/estimate HTTP/1.1
Host:cards.bsigroup.tech
Headers: publickey and secretkey
Content-Type: application/json
{
"from" :"BTC",
"to" : "USDT-TRC20",
"network_from" : "BTC",
"network_to" : "TRC20",
"amount" : 0.5
}
Response
{
"deposit_min_amount": "0.001",
"deposit_max_amount": "650",
"min_amount": "0.001",
"max_amount": "650",
"amount": "35121.03542425",
"fee": "0",
"rate": "70244.070848512802913",
"profit": "0",
"withdrawal_fee": "1.00000000",
"extra_fee_amount": "0",
"rate_id": "",
"rate_id_expired_at": 0,
"applied_promo_code_id": null,
"networks_from": [],
"networks_to": [],
"deposit_amount_usdt": "35476.28500000",
"expired_at": "1774425318542",
"base_amount": "35121.03542425"
}
Exchange - Create Exchange
Initiate a new currency exchange transaction.
Example Request
POST /api/swap/create HTTP/1.1
Host:cards.bsigroup.tech
Headers: publickey and secretkey
Content-Type: application/json
{
"coin_from": "BTC",
"coin_to": "USDT-TRC20",
"network_from": "BTC",
"network_to": "TRC20",
"deposit_amount": 0.5,
"withdrawal": "THUnQJKECXP82EjijVVHpUwFMd3Y3vGBQJ",
"withdrawal_extra_id": "NA"// for those needing memo field.
}
Response
{
"is_float": false,
"status": "wait",
"type": "cex",
"coin_from": "BTC",
"coin_to": "USDT",
"deposit_amount": "0.5",
"withdrawal": "THUnQJKECXP82EjijVVHpUwFMd3Y3vGBQJ",
"withdrawal_extra_id": null,
"return": null,
"return_extra_id": null,
"extra_fee_from": 0,
"extra_fee_to": 0,
"coin_from_network": "BTC",
"coin_to_network": "TRC20",
"deposit": "bc1qme7vudpf0uczpvy2n3gng44cdll54tyarr7j6e",
"deposit_extra_id": null,
"withdrawal_amount": "34766.26738966",
"rate": "69534.534779335905914",
"fee": "0",
"revert": false,
"transaction_id": "c69c39472dda17",
"expired_at": 1774427002,
"created_at": "2026-03-25 09:53:22",
"execution_time": null,
"is_available": true,
"coin_from_explorer_url": "https://blockchair.com/bitcoin/transaction/",
"coin_to_explorer_url": "https://tronscan.org/#/transaction/",
"coin_from_smart_contract_explorer_url": null,
"coin_to_smart_contract_explorer_url": "https://tronscan.org/#/token20/",
"coin_from_extra_name": "",
"coin_to_extra_name": "",
"coin_from_name": "Bitcoin",
"coin_to_name": "TetherUS",
"coin_from_additional_get_info": "",
"coin_from_additional_send_info": "",
"coin_to_additional_get_info": "",
"coin_to_additional_send_info": "",
"need_confirmations": 2,
"confirmations": 0,
"email": "*******",
"aml_error_signals": [],
"kyc_url": null,
"kyc_email": null,
"rating": null,
"error_code": "",
"bonus": "0.00000000"
}
SDKs
Demo User: test@bsigroup.tech | Demo Password: Abcd4321@
The Reseller frontend, allows your sub merchant to setup a site and mobile app for their users, and the admin allows them to see their available balance, cards issued and transactions.
Error Codes
200 OK
Success
400 Bad Request
Invalid parameters
401 Unauthorized
Invalid credentials
404 Not Found
Resource not found
422 Unprocessable Content
Response Has Error
Support
Email: cs@bsigroup.tech
Website: www.bsigroup.tech