Virtual card issuing API
Issue a card in one call. Scoped keys, idempotency, signed webhooks and real-time authorization.
- REST + JSON
- Signed webhooks
- Keys right after sign-up
Live in three steps.
- Minute 1Get keys
Sign up in the console; keys come right away.
· key gp_live_7f3a… ✓· scopes: cards:issue - Minute 2Issue a card
One request with an idempotency key.
POST /cards 201PATCH /cards/4417/limits 200 - Day 1Listen to events
Signed webhooks with retries.
⇢ card.issued ✓⇢ transaction.posted ✓
Card API, end to end.
One call — one card
Issue, label, limit, block, unblock and cancel cards; idempotency keys on issuing and funding.
Scoped keys
Each key gets only the scopes you pick.
Zero-downtime rotation
Two live keys at once.
Signed, retried
HMAC-SHA256, 7 retries.
Real-time decisions
Approve or decline in 1.2 s.
A few lines
to start.
Same REST API, same keys and limits for every program. Docs open in the console after sign-up.
const res = await fetch("https://api.guarapay.io/api/v1/partner/cards", { method: "POST", headers: { Authorization: `Bearer ${process.env.GUARA_KEY}`, "Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json", }, body: JSON.stringify({ external_user_id: "user_42", product: "standard", label: "Wallet · user_42", cardholder: { first_name: "Ada", last_name: "Lovelace" }, }), }); const { data: card } = await res.json(); // same Idempotency-Key never issues twice
Tell us what you're building.
Three steps from here to live cards.
- We reply within a business dayPricing for your volume, by email or your contact.
- You connect the APIKeys, webhooks and MCP for your agents.
- You go liveSwitch to live keys and issue cards to your users.
Card API: FAQ
How do I authenticate?
With a bearer API key. Each key has its own scopes, and two live keys let you rotate without downtime.
What if a request is retried?
Send an Idempotency-Key: the same key never issues a second card.
How are webhooks signed?
With X-GuaraPay-Signature, an HMAC-SHA256 over the timestamp and the raw body. Every webhook is retried up to 7 times.
Where are the docs?
In the console, right after sign-up, together with your API keys.