Private money.
Usable infrastructure.
Build card experiences funded by shielded ZEC without exposing wallet addresses, transaction graphs, or chain metadata to the merchant layer.
This reference describes the proposed ZCard integration surface. Endpoints and schemas may change before partner access opens.
Credit balances from confirmed ZEC deposits while preserving the privacy boundary.
Issue, freeze, unfreeze, and close virtual or physical prepaid cards.
Consume signed webhooks for deposits, authorizations, and settlements.
Make your first request
All requests use JSON and are served over HTTPS. Authenticate using a scoped bearer token in the Authorization header.
Request preview credentials
Partner credentials include a test API key, webhook signing secret, and an isolated sandbox account.
Create a cardholder session
A session initializes the card profile and returns a single-use application token.
Issue the card
Issue only after your session reaches eligible and the initial deposit is confirmed.
curl https://sandbox.api.zcard.app/v1/cards \
-X POST \
-H "Authorization: Bearer zc_test_••••••••" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: card_01J8..." \
-d '{
"type": "virtual",
"currency": "USD",
"spending_limit": 1000
}'
Isolated by default
Sandbox and production use separate credentials, balances, deposit addresses, and webhook secrets. Test keys can never move real funds.
https://sandbox.api.zcard.appSimulated ZEChttps://api.zcard.appShielded ZECArchitecture
ZCard keeps chain activity and card activity in separate trust domains. A narrow accounting boundary connects them without forwarding wallet metadata.
What crosses the boundary
The verifier needs enough information to confirm value was received. The card ledger needs enough information to maintain a spendable balance. Neither requires a complete wallet history.
- Confirmed deposit amount
- Confirmation height
- Internal allocation identifier
- Asset and valuation timestamp
- Sender wallet address
- Wallet balance or history
- Shielded memo contents
- Upstream transaction graph
Deposit lifecycle
A deposit moves through deterministic states. Integrations should treat webhook delivery as a notification and retrieve the latest object before updating local state.
detected.
Only credited deposits are available for card authorization. Confirmation requirements may increase during abnormal network conditions.
Authentication
API keys are environment-specific and should only be used from your server. Never expose a secret key in a browser, mobile bundle, or public repository.
zc_test_...Sandbox secret keyzc_live_...Production secret keywhsec_...Webhook signing secretUse restricted keys with explicit scopes such as cards:write, deposits:read, and transactions:read.
Cards
Create and control virtual or physical prepaid cards.
typeenum · requiredvirtual or physical
currencystring · requiredThree-letter settlement currency.
spending_limitintegerMaximum monthly spend in minor units.
{
"id": "card_01J8H6WQ2J9Y",
"type": "virtual",
"status": "active",
"last4": "4892",
"currency": "USD",
"created_at": "2026-09-20T20:15:31Z"
}
Deposits
Generate deposit instructions and monitor shielded ZEC funding.
Transactions
Read authorization, reversal, refund, and settlement records.
Signed, retried events
Webhook payloads are signed with HMAC-SHA256. Verify the raw request body before parsing JSON, reject stale timestamps, and return a 2xx response quickly.
deposit.detected
deposit.credited
card.created
card.updated
transaction.authorized
transaction.declined
transaction.settled
transaction.reversed
{
"id": "evt_01J8H7P4T9K2",
"type": "deposit.credited",
"created_at": "2026-09-20T20:18:02Z",
"data": {
"deposit_id": "dep_01J8H7MZ0NQ8",
"asset": "ZEC",
"amount": "1.25000000",
"status": "credited"
}
}
Predictable failure modes
Errors use standard HTTP status codes and include a stable machine-readable code, human-readable message, and request identifier.
400invalid_requestMalformed or missing parameter401authentication_failedMissing or invalid API key409idempotency_conflictKey reused with different input422insufficient_balanceAvailable balance is too low429rate_limit_exceededRetry after the supplied delaySecurity model
Controls are designed around separation of duties, short-lived access, auditable state transitions, and minimizing retained information.
Separate keys by environment, service, and capability.
Timestamped HMAC signatures with replay protection.
Envelope encryption for sensitive card and account material.
Append-only records for balance and card state changes.
Published operating limits
Program limits are applied at the account and card level. Limits shown here are proposed preview defaults and may vary by region.
$2,500Per card$1,000Per account$25 equiv.Per deposit120/minPer key8Exponential backoffBuild the private spend layer.
Partner access is limited during the preview period.
Apply for access →