Card Issuing API
Issue virtual Visa® prepaid cards, fund them and retrieve their details from your backend. Card loads are debited from your prepaid balance; the service is billed monthly by volume. You can also issue cards straight from the dashboard.

Recommended IDE - NanoGrav
Ship with an agent that knows your scope.
Build your card issuing integration faster with NanoGrav, the AI coding IDE by nullGravitum.
1. Access & billing
Create an account at /app. Accounts are approved manually; once approved your API key is active. Recharge your balance with card (Stripe), crypto (CoinPayments) or GhostPay, then buy cards from the balance — via the dashboard or the API.
The monthly service fee depends on how many cards you issue that calendar month (zero-card months are free). Invoices are generated at month end, auto-paid from your balance when possible, and payable in the panel otherwise. An invoice unpaid 10 days past month end pauses API access.
| Tier | Cards / month | Monthly fee |
|---|---|---|
| Starter | up to 100 | $99 |
| Growth | up to 500 | $249 |
| Scale | up to 2,000 | $599 |
| Enterprise | 2,000+ | $799 |
2. Authentication
Send your API key in the X-API-Key header (a Bearer token also works). Rotate it in your panel. Server-side use only.
X-API-Key: ipc_live_xxxxxxxxxxxxxxxxxxxxxxxx
3. Issue a card
POST /api/v1/cards — the load amount is debited from your balance.
curl -X POST https://issueprepaidcard.com/api/v1/cards \
-H "X-API-Key: ipc_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "amount": 25.00, "holderName": "JOHN DOE" }'Response 200
{
"id": "crd_9f2c1a7b3e5d4801",
"status": "active",
"pan": "4539011234567890",
"cvv": "123",
"expMonth": 8,
"expYear": 2029,
"last4": "7890",
"holderName": "JOHN DOE",
"balance": 25.00,
"sandbox": false,
"accountBalance": 174.50
}4. Card details
GET /api/v1/cards/:id — returns the full card, including PAN and CVV.
curl https://issueprepaidcard.com/api/v1/cards/crd_9f2c1a7b3e5d4801 \ -H "X-API-Key: ipc_live_xxxxxxxxxxxxxxxxxxxxxxxx"
5. List cards
GET /api/v1/cards?limit=50 — newest first, without PAN/CVV.
6. Fund a card
POST /api/v1/cards/:id/fund — adds funds to an active card, debited from your balance.
curl -X POST https://issueprepaidcard.com/api/v1/cards/crd_9f2c1a7b3e5d4801/fund \
-H "X-API-Key: ipc_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "amount": 10.00 }'7. Errors
401 { "error": "missing_api_key" | "invalid_api_key" }
403 { "error": "not_approved" | "suspended" }
400 { "error": "bad_amount", "message": "..." }
402 { "error": "insufficient_balance" } // recharge in your panel
402 { "error": "invoice_overdue" } // pay the monthly invoice
409 { "error": "card_not_active" }
429 { "error": "rate_limited", "retryAfterMs": 400 }
502 { "error": "provider_unavailable" } // not charged8. Sandbox
While your account is in sandbox mode, cards are issued as Luhn-valid test cards ("sandbox": true) that cannot be used for real spend. The request/response contract is identical in live mode, so no integration changes are needed at switch-over.