API access is off until an admin enables reseller on your user. Then your dashboard shows Mastercard and Visa API fund.
Mastercard
UK-BIN2560 · England · issue fee $3.00
Visa
BIN: 493875 · United States · issue fee $3.00
Card amount
USD load on the card. Charged from your API fund plus issue fee.
Send your secret API key on every request. Base URL:
https://lanocard.com/api/v1
Authorization: Bearer lc_live_xxxxxxxx
# or raw key
Authorization: lc_live_xxxxxxxx
# or
X-Api-Key: lc_live_xxxxxxxx
Keep the key server-side. Copy the full lc_live_ key (quotes and extra spaces are stripped). Token and X-Api-Key also work. Rotating it in admin immediately invalidates the previous key.
| Method |
Endpoint |
Use |
| GET | /balance.php | Your API deposit / usable fund |
| GET | /bins.php | Reseller card products (includes UK-BIN2560) |
| POST | /cards.php | Create Mastercard or Visa (cardType, optional bin) |
| GET | /cards.php | List cards or one card (live if ?token=) |
| GET | /card-balance.php | Real-time card AVAILABLE |
| GET | /card-transactions.php | Real-time card ledger |
| POST | /card-topup.php | Top up card from API fund |
| POST | /card-freeze.php | Freeze or unfreeze an owned card |
| POST | /card-cancel.php | Cancel a processing order and refund API fund |
| GET | /card-deliver.php | Pending user orders waiting for a card number |
| POST | /card-deliver.php | Deliver an already-created card number to a user order |
| — | Webhooks | Not offered. Poll card status (see Webhooks & OTP) |
Returns your deposit, usable limit, and current fees.
curl -s https://lanocard.com/api/v1/balance.php \
-H "Authorization: Bearer YOUR_API_KEY"
{
"ok": true,
"currency": "USD",
"balanceUsd": 120.00,
"depositUsd": 120.00,
"usableUsd": 120.00,
"canCreate": false,
"brand": "mastercard",
"bin": "UK-BIN2560",
"bins": [{"code":"UK-BIN2560","brand":"mastercard","area":"England","default":true}],
"issueFeeUsd": 3,
"minAmountUsd": 10,
"maxAmountUsd": 10000}
Lists reseller card products. Mastercard default is UK-BIN2560 (England).
Pass the code as bin on POST /cards.php.
curl -s https://lanocard.com/api/v1/bins.php \
-H "Authorization: Bearer YOUR_API_KEY"
{
"ok": true,
"defaultBin": "UK-BIN2560",
"bins": [
{"code": "UK-BIN2560", "brand": "mastercard", "area": "England", "default": true}
]
}
Creates a Mastercard by default. Debits amountUsd + issue fee from your fund.
There is no KYC card-count limit on reseller creates.
When issuance is available, the card is purchased immediately and comes back active (or processing only while the issuer finishes).
If issuer fund is low, the order is still accepted and stays processing until issuance is available or you deliver a number with POST /card-deliver.php.
After the card is active, top-up and transaction history work on that token.
Send cardType: "visa" for Visa (see the Visa section below).
curl -s -X POST https://lanocard.com/api/v1/cards.php \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"amountUsd\":10,\"bin\":\"UK-BIN2560\"}"
{
"ok": true,
"orderNo": "ORD-20261001-XXXXXXXXXX",
"token": "ABC…",
"cardStatus": "active",
"cardNumber": "5324xxxxxxxxxxxx",
"last4": "1234",
"expiry": "12/29",
"cvv": "123",
"amountUsd": 10,
"issueFeeUsd": 3,
"totalPayUsd": 13,
"balanceUsd": 108.00
}
Errors: 401 invalid key, 402 only if your deposit is too low (issuer fund being empty does not reject the order), 400 if amount is under $10 (Mastercard) or over $10,000. A processing card can be completed with POST /card-deliver.php.
Same Bearer lc_live_… key as Mastercard. Send cardType: "visa" (or brand: "visa").
If your integration cannot send a card type, use the Visa base URL https://lanocard.com/api/v1/visa/ — every card created there is Visa, and balance, top-up, freeze and deliver work the same.
Minimum card balance is $5.00 (you can purchase from $5).
Amounts under $5.00 return 400.
The order is created instantly; processing usually takes about 30 minutes.
Your API fund is still debited for amount + Visa issue fee ($3.00).
The pending Visa order appears on your reseller dashboard (card list + Deliver user card) and on Lanocard admin Pending Portal so staff can paste the PAN.
After the card is active, you deliver that number to your end-user with POST /card-deliver.php.
Then GET /card-balance.php, GET /card-transactions.php, POST /card-topup.php, and POST /card-freeze.php work automatically on the same live issuer path as Mastercard.
curl -s -X POST https://lanocard.com/api/v1/cards.php \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"amountUsd\":5,\"cardType\":\"visa\",\"secureEmail\":\"user@example.com\"}"
{
"ok": true,
"orderNo": "ORD-20261008-XXXXXXXXXX",
"token": "ABC…",
"brand": "visa",
"cardType": "visa",
"cardStatus": "processing",
"manualDelivery": true,
"amountUsd": 5,
"issueFeeUsd": 3,
"totalPayUsd": 8,
"message": "Visa created. Processing usually completes in about 30 minutes."
}
Auth is unchanged: Authorization: Bearer lc_live_… or X-Api-Key. List Visa cards with GET /cards.php?cardType=visa. Optional secureEmail is the inbox for Visa 3D Secure OTP (defaults to your reseller account email).
Lists your cards. With ?token= returns one card and fetches live issuer balance.
curl -s "https://lanocard.com/api/v1/cards.php" \
-H "Authorization: Bearer YOUR_API_KEY"
curl -s "https://lanocard.com/api/v1/cards.php?token=YOUR_CARD_TOKEN" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"ok": true,
"live": true,
"balanceUsd": 9.40,
"card": {
"token": "ABC…",
"status": "active",
"frozen": false,
"brand": "mastercard",
"cardNumber": "5324xxxxxxxxxxxx",
"last4": "1234",
"expiry": "12/29",
"cvv": "123",
"balanceUsd": 9.40
}
}
Real-time Visa or Mastercard AVAILABLE from the issuer (after PAN exists). Poll this after spend or top-up.
Required query: token.
curl -s "https://lanocard.com/api/v1/card-balance.php?token=YOUR_CARD_TOKEN" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"ok": true,
"token": "ABC…",
"live": true,
"currency": "USD",
"balanceUsd": 9.40,
"fetchedAt": "2026-10-01T03:30:00+00:00"
}
Real-time issuer ledger (recharge, consume, refund). Optional limit (default 50, max 200).
curl -s "https://lanocard.com/api/v1/card-transactions.php?token=YOUR_CARD_TOKEN&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"ok": true,
"token": "ABC…",
"live": true,
"balanceUsd": 9.40,
"count": 2,
"transactions": [
{
"id": "…",
"type": "Consumption",
"status": "Finish",
"amountUsd": 0.60,
"signedUsd": -0.60,
"direction": "debit",
"merchant": "STORE",
"createdAt": "2026-10-01T03:10:00+00:00"
}
]
}
Loads USD onto an active Visa or Mastercard from your API fund (after the PAN exists).
Debits amountUsd + 3.00% fee.
Needs an active card. Min $10, max $10,000.
If the issuer top-up fails, your API fund is refunded.
curl -s -X POST https://lanocard.com/api/v1/card-topup.php \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"token\":\"YOUR_CARD_TOKEN\",\"amountUsd\":20}"
{
"ok": true,
"topupNo": "RTP-20261001-XXXXXXXXXX",
"token": "ABC…",
"amountUsd": 20,
"feeUsd": 0.6,
"totalPayUsd": 20.6,
"balanceUsd": 80.00,
"cardBalanceUsd": 29.40,
"live": true,
"message": "Top-up applied"
}
Errors: 404 card not found, 400 still processing / amount out of range, 402 deposit too low, 403 if the card is frozen.
Freeze or unfreeze a Visa or Mastercard you created. Frozen cards cannot be topped up until you unfreeze them. After a Visa card is active, freeze/unfreeze uses the same live issuer path as Mastercard.
You can only freeze cards that belong to your API key.
The card owner also gets an email notification.
curl -s -X POST https://lanocard.com/api/v1/card-freeze.php \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"token\":\"YOUR_CARD_TOKEN\",\"action\":\"freeze\"}"
curl -s -X POST https://lanocard.com/api/v1/card-freeze.php \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"token\":\"YOUR_CARD_TOKEN\",\"action\":\"unfreeze\"}"
{
"ok": true,
"frozen": true,
"token": "ABC…",
"issuerOk": true,
"mailSent": true,
"card": {
"token": "ABC…",
"status": "frozen",
"frozen": true,
"brand": "mastercard",
"last4": "1234",
"balanceUsd": 9.40
},
"message": "Card frozen"
}
Body: token (required) and action = freeze or unfreeze. You can also send frozen: true / false. Errors: 401 invalid key, 404 card not found or not yours, 400 missing token/action.
Cancels a processing order (no PAN yet). The amount taken from your API fund (card load + issue fee) is refunded.
Active cards cannot be cancelled this way.
curl -s -X POST https://lanocard.com/api/v1/card-cancel.php \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"token\":\"YOUR_CARD_TOKEN\"}"
{
"ok": true,
"token": "ABC…",
"cancelled": true,
"refundUsd": 13,
"walletBalanceUsd": 133.00,
"message": "$13.00 returned to your API fund. The processing order is cancelled."
}
Errors: 404 card not found, 400 if the card is already active, 409 already cancelled.
Use this when a card number is already created and you want to deliver it to a Lanocard user order that is still processing.
GET lists pending paid orders. POST attaches the card number (expiry/CVV are filled from the backend).
curl -s "https://lanocard.com/api/v1/card-deliver.php" \
-H "Authorization: Bearer YOUR_API_KEY"
curl -s -X POST https://lanocard.com/api/v1/card-deliver.php \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"orderNo\":\"ORD-20261003-XXXXXXXXXX\",\"cardNumber\":\"5324xxxxxxxxxxxx\"}"
{
"ok": true,
"token": "ABC…",
"message": "Card delivered. The user can see it on their dashboard."
}
Body: orderNo or token, plus cardNumber. Errors: 404 pending order not found, 409 already delivered or number already used, 400 invalid number.
Webhooks are not available on the reseller API. We do not push card-created, paid, or OTP events to your server.
Poll instead: GET /cards.php?token=… until status is active, then use GET /card-balance.php and GET /card-transactions.php for live issuer data.
Visa 3D Secure OTP is sent by Visa / the card issuer to the secureEmail you set on POST /cards.php (or your reseller login email if omitted).
Lanocard does not return OTP codes on the API and does not forward OTP to a webhook.
Your end-user must open that email when a merchant asks for 3DS.
Mastercard (UK-BIN2560) is for global online payments. It does not use a Lanocard OTP API. If a shop shows 3DS, the bank/issuer handles it — not this API.
- processing — your fund was taken. Mastercard waits for the issuer; Visa is created instantly and is usually ready in about 30 minutes.
- active — PAN, expiry, and CVV are present. Live balance and top-up work.
- frozen — card is locked. Top-up is blocked until you call unfreeze. GET cards also returns
frozen: true.
- cancelled — processing order was cancelled and the wallet debit was refunded to API fund.
- live: true — balance came from the issuer AVAILABLE field in real time.