Cards API
Create, activate, debit, credit, and manage gift cards.
Create a card
POST /api/v1/cards
Request
curl -X POST https://merchant.reloadcard.app/api/v1/cards \
-H "Authorization: Bearer rc_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"currency": "USD",
"cardType": "digital",
"ownerEmail": "customer@example.com"
}'Response 201
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "unactivated",
"balance_cents": 0,
"currency": "USD",
"card_type": "digital",
"created_at": "2026-04-05T10:30:00Z"
}Activate a card
POST /api/v1/cards/:uuid/activate
Sets the initial balance and activates the card. For Shopify merchants, this also creates a Shopify gift card.
Request
curl -X POST https://merchant.reloadcard.app/api/v1/cards/a1b2c3d4/activate \
-H "Authorization: Bearer rc_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"amountCents": 5000,
"currency": "USD",
"consumerEmail": "customer@example.com"
}'Response 200
{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "active",
"balanceCents": 5000,
"currency": "USD"
}Debit a card (POS redemption)
POST /api/v1/cards/:uuid/debit
Removes balance from a card. Use this when a consumer pays with their gift card at your checkout.
Supports idempotency keys — include an Idempotency-Key header with a unique value (e.g., your order ID or a UUID) to safely retry without double-debiting. Cached responses expire after 24 hours.
Request
curl -X POST https://merchant.reloadcard.app/api/v1/cards/a1b2c3d4/debit \
-H "Authorization: Bearer rc_live_your_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1234" \
-d '{
"amountCents": 1500,
"note": "Order #1234",
"referenceId": "order-1234"
}'Response 200
{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"previousBalanceCents": 5000,
"newBalanceCents": 3500,
"currency": "USD"
}Errors
400— Insufficient balance (response includesbalanceCents)400— Card not active404— Card not found or not yours
Credit a card (add balance)
POST /api/v1/cards/:uuid/credit
Adds balance to an active card. Supports idempotency keys via the Idempotency-Key header to prevent duplicate credits.
curl -X POST https://merchant.reloadcard.app/api/v1/cards/a1b2c3d4/credit \
-H "Authorization: Bearer rc_live_your_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: loyalty-reward-2026-04-08" \
-d '{ "amountCents": 2000, "note": "Loyalty reward" }'Check balance
GET /api/v1/cards/:uuid/balance
curl https://merchant.reloadcard.app/api/v1/cards/a1b2c3d4/balance \ -H "Authorization: Bearer rc_live_your_key"
Response
{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "active",
"balanceCents": 3500,
"currency": "USD"
}Disable a card
POST /api/v1/cards/:uuid/disable
Permanently disables a card. This cannot be undone.
curl -X POST https://merchant.reloadcard.app/api/v1/cards/a1b2c3d4/disable \ -H "Authorization: Bearer rc_live_your_key"
Claim a pre-loaded card
POST /api/v1/cards/:uuid/claim
Assigns a pre-loaded card to a consumer by email. Use this for cards that were activated with a balance but have no owner yet (e.g., pre-loaded denomination cards sold at POS). The card must be active and unclaimed.
Request
curl -X POST https://merchant.reloadcard.app/api/v1/cards/a1b2c3d4/claim \
-H "Authorization: Bearer rc_live_your_key" \
-H "Content-Type: application/json" \
-d '{ "email": "customer@example.com" }'Response 200
{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "customer@example.com",
"balanceCents": 5000,
"expiresOn": "2029-04-08"
}Errors
400— Card is not active409— Card already claimed by another consumer404— Card not found or not yours