Install
openclaw skills install @creditclaw/creditclawPay with Virtual Cards. Spending power for AI Agents, controlled by your human.
openclaw skills install @creditclaw/creditclawCreditClaw.com gives you spending power your owner controls. Your owner creates a Virtual Card from their own Visa/Mastercard, sets its spending limit, and links it to you. When you need to pay, you mint fresh card numbers off that card and fill the merchant's payment form.
Base URL: https://creditclaw.com/api/v1
rail3in the endpoint paths below is a literal, fixed segment (the Virtual Cards rail) — never substitute your bot ID into it.
Authorization: Bearer <CREDITCLAW_API_KEY> (except registration, which returns your key).creditclaw.com, and never share it — it's your identity and can spend your owner's money.Already have a CREDITCLAW_API_KEY from a previous session? You're registered — skip to step 3. Never re-register; that creates a new bot that must be re-linked.
curl -X POST https://creditclaw.com/api/v1/bots/register \
-H "Content-Type: application/json" \
-d '{
"bot_name": "my-research-bot",
"owner_email": "jonathan@example.com",
"pairing_code": "483-921"
}'
bot_name and owner_email required. pairing_code (from your human's onboarding screen) links you to their account automatically — include it whenever you have one.owner_verification_url from the response so they can claim you.api_key from the response immediately — it cannot be retrieved again. Store it where your platform stores credentials (default: env var CREDITCLAW_API_KEY; OpenClaw: ~/.openclaw/.env). Load it next session.Only your owner can create Virtual Cards, at https://creditclaw.com/virtual-cards. Each card has its own spending limit, expiry date, and bot link. The card must be linked to you and active before you can use it. If you have no usable card, ask your human — don't poll.
curl https://creditclaw.com/api/v1/bot/rail3/cards \
-H "Authorization: Bearer $CREDITCLAW_API_KEY"
Returns your linked cards with card_id, card_name, status, is_frozen, and spending limits (limit_amount_cents per limit_period; intent_mode: "open" means no cap). Pick the card_id you'll pay with — it must have status: "active" and is_frozen: false. Limits are enforced at the card network, so an over-limit purchase declines on its own.
When you're on the merchant's checkout page and ready to pay:
curl -X POST https://creditclaw.com/api/v1/bot/rail3/cards/vc_9d2f.../credentials \
-H "Authorization: Bearer $CREDITCLAW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"merchant": {
"name": "Acme Books",
"url": "https://acmebooks.com",
"country_code": "US"
}
}'
The merchant body is optional but recommended — numbers minted with the real merchant's name and site have the best acceptance odds. An empty body ({}) works too.
Response:
{
"card_id": "vc_9d2f...",
"card_number": "4111111111111111",
"exp_month": "12",
"exp_year": "2027",
"cvc": "123",
"cardholder_name": "Jonathan Miller",
"credential_expires_at": "2026-08-13T15:20:00.000Z"
}
The response may include extra helper fields (credential_merchant, usage_notes) — safe to ignore.
Fill the merchant's payment form:
| Form field | Use |
|---|---|
| Card number | card_number |
| Expiry (MM/YY) | exp_month / last 2 digits of exp_year |
| CVC / CVV / security code | cvc |
| Name on card | cardholder_name (if null, ask your human) |
GET /bot/shipping-addresses returns your owner's saved addresses as markdown (address_count: 0 = none saved — ask your human).After you submit: success → done, tell your human what you bought. Declined → stop and tell your human; never retry a declined payment. Page hangs or errors after submit → the charge may still have gone through; don't mint again, tell your human so they can check their card statement.
| Status | error | What to do |
|---|---|---|
| 401 | unauthorized | API key wrong or missing. Load the saved one — don't re-register. |
| 400 | validation_error / invalid_json | Fix the request body (merchant fields: name, url, country_code 2 letters) and retry. |
| 409 | duplicate_registration | Already registered with this name + email. Load your saved key. |
| 404 | card_not_found | Check the card_id against GET /bot/rail3/cards. |
| 403 | card_not_linked | Card isn't linked to you. Ask your human to link it. |
| 403 | card_frozen | Owner froze the card. Ask them to unfreeze it. |
| 403 | card_not_active | Card isn't authorized yet, or is expired/revoked. Your human must fix it. |
| 403 | master_guardrail | Owner's account-wide guardrail is blocking purchases. Tell them; don't retry. |
| 409 | card_expired | The card's permission expired — your human must create a new Virtual Card. |
| 412 | reauth_required | Owner must sign in at creditclaw.com to re-enable autonomous purchases. Tell them. |
| 503 | auth_transient | Temporary issue — retry shortly. |
| 429 | rate_limited | Slow down; retry after retry_after_seconds. |
| 4xx/5xx | credential_mint_failed | Provider issue minting numbers. Retry once with a fresh call. |