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

POSTDeprecated/newcard
https://cards.bsigroup.tech/api/newcard
{"useremail":"test@bsigroup.tech","nameoncard":"John Doe","pin":"1234"}

Get All Cards

POSTDeprecated/getallcard
https://cards.bsigroup.tech/api/getallcard
{"useremail":"test@bsigroup.tech"}

Get Pending

POSTDeprecated/getpendingcards
https://cards.bsigroup.tech/api/getpendingcards
{"useremail":"test@bsigroup.tech"}

Get Card

POSTDeprecated/getcard
https://cards.bsigroup.tech/api/getcard
{"useremail":"test@bsigroup.tech","cardid":"card_id"}

Transactions

POSTDeprecated/getcardtransactions
https://cards.bsigroup.tech/api/getcardtransactions
{"useremail":"test@bsigroup.tech","cardid":"card_id"}

Change Pin

POSTDeprecated/changecardpin
https://cards.bsigroup.tech/api/changecardpin
{"useremail":"test@bsigroup.tech","cardid":"card_id","pin":"5678"}

Freeze Card

POSTDeprecated/freezecard
https://cards.bsigroup.tech/api/freezecard
{"useremail":"test@bsigroup.tech","cardid":"card_id"}

Unfreeze Card

POSTDeprecated/unfreezecard
https://cards.bsigroup.tech/api/unfreezecard
{"useremail":"test@bsigroup.tech","cardid":"card_id"}

Fund Card

POSTDeprecated/fundcard
https://cards.bsigroup.tech/api/fundcard
{"useremail":"test@bsigroup.tech","cardid":"card_id","amount":"50.00"}

Min: $10

Visa Card Issuance

Note: Requires KYC (national ID + photo)

Create Card

POSTDeprecated/visanewcard
https://cards.bsigroup.tech/api/visanewcard

multipart/form-data: useremail, nameoncard, pin, nationalid[file], photo[file]

Get All

POSTDeprecated/visagetallcard
https://cards.bsigroup.tech/api/visagetallcard
{"useremail":"test@bsigroup.tech"}

Get Pending

POSTDeprecated/visagetpendingcards
https://cards.bsigroup.tech/api/visagetpendingcards
{"useremail":"test@bsigroup.tech"}

Get Card

POSTDeprecated/visagetcard
https://cards.bsigroup.tech/api/visagetcard
{"useremail":"test@bsigroup.tech","cardid":"card_id"}

Fund Card

POSTDeprecated/visafundcard
https://cards.bsigroup.tech/api/visafundcard
{"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.

Auth: All endpoints require publickey and secretkey headers, except webhook callback.
Pricing: Card issuance deducts EUR 7.50. Cards are issued with an initial provider balance of EUR 3.00. Funding requires an amount greater than 2.99.

Create Card

POST/mastercard-euro/create-card
https://cards.bsigroup.tech/api/mastercard-euro/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

POST/mastercard-euro/fund-card
https://cards.bsigroup.tech/api/mastercard-euro/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

POST/mastercard-euro/getallcards
https://cards.bsigroup.tech/api/mastercard-euro/getallcards
{"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

POST/mastercard-euro/get-card
https://cards.bsigroup.tech/api/mastercard-euro/get-card
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde"}

Returns provider card details including masked PAN, status, and balance.

Get Sensitive Card

POST/mastercard-euro/get-sensitive-card
https://cards.bsigroup.tech/api/mastercard-euro/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

POST/mastercard-euro/block-card
https://cards.bsigroup.tech/api/mastercard-euro/block-card
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde"}

Unblock Card

POST/mastercard-euro/unblock-card
https://cards.bsigroup.tech/api/mastercard-euro/unblock-card
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde"}

Terminate Card

POST/mastercard-euro/terminate-card
https://cards.bsigroup.tech/api/mastercard-euro/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

POST/mastercard-euro/transactions
https://cards.bsigroup.tech/api/mastercard-euro/transactions
{"useremail":"test@bsigroup.tech","cardid":"6a2cf228fa6592ee2ed64cde","page":1,"limit":10}

Supports pagination with optional page and limit fields.

FX Calculate

POST/mastercard-euro/fx-calculate
https://cards.bsigroup.tech/api/mastercard-euro/fx-calculate
{}

Returns the provider FX quote for USDC to EUR with the platform margin already applied.

Webhook

POST/mastercard-euro/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

Security: Requires admin authentication

Wallet Balance

GET/admin/wallet
https://cards.bsigroup.tech/api/admin/wallet

Returns wallet balance

Deposits

GET/admin/deposits
https://cards.bsigroup.tech/api/admin/deposits

All deposits

Transactions

GET/admin/transactions
https://cards.bsigroup.tech/api/admin/transactions

All transactions

Visa Cards

GET/admin/visacards
https://cards.bsigroup.tech/api/admin/visacards

All Visa cards

Mastercards

GET/admin/mastercards
https://cards.bsigroup.tech/api/admin/mastercards

All Mastercards

Digital Cards

GET/admin/digitalcards
https://cards.bsigroup.tech/api/admin/digitalcards

All digital cards

Reseller Balance

GET/merchant/merchantbalance
https://cards.bsigroup.tech/api/merchant/merchantbalance

Reseller Balance

Reseller Cards

GET/merchant/merchantcards
https://cards.bsigroup.tech/api/merchant/merchantcards

Reseller cards

Reseller Transactions

GET/merchant/merchanttransactions
https://cards.bsigroup.tech/api/merchant/merchanttransactions

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)
BTCBitcoinSatoshi8100000000
ETHEthereumWei181000000000000000000
BNBBSCWei181000000000000000000
USDT-BEP20BSCToken Unit61000000
DAIBSCToken Unit181000000000000000000
USDC-PolygonPolygonToken Unit61000000
USDT-TRC20TRONToken Unit61000000
TRON (TRX)TRONSun61000000
SOLSolanaLamport91000000000
XRPRippleDrop61000000

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.

Note: The 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

POST /api/wallet/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

GET /api/wallet/addresses

Query: useremail

Response:

[
  {
    "uuid": "...",
    "address": "...",
    "coin": "USDT-BEP20",
    "created_at": "..."
  }
]

3. Get Specific Deposit Address

GET /api/wallet/address/{uuid}

Query: useremail

Response:

{
  "uuid": "...",
  "address": "...",
  "coin": "USDT-BEP20",
  "created_at": "..."
}

4. Get Balance

GET /api/wallet/balance

Query: uuid or address, useremail

Response:

{
  "balances": {
    "USDT-BEP20": "...",
    "BNB": "..."
  }
}

5. Get Withdrawal Fees

POST /api/wallet/withdrawal-fee
{
  "uuid": "...",
  "to_address": "...",
  "amount": "1.0",
  "coin": "USDT-BEP20"
}

Response:

{
  "total_gas_fees": "...",
  "base_coin": "BNB",
  "base_balance": "..."
}

6. Withdraw

POST /api/wallet/withdraw
{
  "uuid": "...",
  "to_address": "...",
  "amount": "1.0",
  "coin": "USDT-BEP20",
  "useremail": "user@example.com"
}

Response:

{
  "tx_hash": "...",
  "status": "pending"
}

Exchange - Currencies

GET /api/swap/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

GET /api/swap/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

POST /api/swap/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

POST /api/swap/create

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

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