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.

Base URL: https://issueprepaidcard.com1 request / secondLoads $5$5,000
NanoGrav

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.

Download

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.

TierCards / monthMonthly fee
Starterup to 100$99
Growthup to 500$249
Scaleup to 2,000$599
Enterprise2,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 charged

8. 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.