Skip to main content

Quickstart

This quickstart takes you from zero to your first virtual card in five steps. It assumes you already have partner credentials; if you don't, contact [email protected] to set up your program.

API v1 · Legacy

This page is part of the reference of the first version of the Web3Card API, kept here for reference. API v1 does not take new integrations: API v2 replaces it, and the platform today works as described in the rest of this manual.

1. Get your API key​

Every request to the partner API is authenticated with your API key in the Authorization header:

curl https://api.web3card.dev/v1/ping \
-H "Authorization: Bearer w3c_live_xxxxxxxxxxxxxxxx"

Sandbox keys are prefixed w3c_test_ and operate against testnet vaults. No real funds move in sandbox mode.

2. Create a user​

Users are the cardholders of your program. Create one with their wallet address and email:

curl -X POST https://api.web3card.dev/v1/users \
-H "Authorization: Bearer w3c_test_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"walletAddress": "0x71C2a4f3b7c48d19D4a2e9Eb0cE3606eB48a3a4F",
"chain": "polygon"
}'

3. Complete KYC​

Cardholders must pass identity verification before a card can be activated. Request a KYC session link and redirect your user to it:

curl -X POST https://api.web3card.dev/v1/users/usr_9f4c/kyc/session \
-H "Authorization: Bearer w3c_test_xxxxxxxxxxxxxxxx"

You will receive a kyc.approved webhook when verification completes. See Users & KYC.

4. Deploy the user's vault​

Each card is backed by its own multisig smart-contract vault. Deploy it on the user's chain:

curl -X POST https://api.web3card.dev/v1/vaults \
-H "Authorization: Bearer w3c_test_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "userId": "usr_9f4c", "chain": "polygon", "currency": "USDC" }'

5. Create a virtual card​

curl -X POST https://api.web3card.dev/v1/cards \
-H "Authorization: Bearer w3c_test_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "userId": "usr_9f4c", "type": "virtual" }'

The response includes the card id and its current status:

{
"id": "card_3b7c",
"userId": "usr_9f4c",
"type": "virtual",
"status": "active",
"last4": "1234",
"network": "visa",
"createdAt": "2026-07-19T14:00:00Z"
}

Once the vault holds a balance, the card is ready to spend. Continue with the top-ups guide or subscribe to webhooks for real-time events.