OpenClaw · Skill

Privacy Cards

Manage virtual cards via the Privacy.com API.

Transportation
v1.0.0
VirusTotal: Benign

Install

Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.

Primary command

clawhub install johnielee/privacy-cards

ClawHub installer

npx clawhub@latest install johnielee/privacy-cards

OpenClaw CLI

openclaw skills install johnielee/privacy-cards

Direct OpenClaw install

openclaw install johnielee/privacy-cards

What this skill does

Manage virtual cards via the Privacy.com API.

Why it matters

Automating card creation and management via API removes the need to manually navigate the Privacy.com dashboard for each virtual card operation.

Typical use cases

  • Creating a single-use card for a one-time online purchase
  • Locking a card to a specific subscription merchant
  • Pausing a card when suspicious activity is noticed
  • Checking declined transactions for a specific card
  • Setting a monthly spend cap on a recurring expense card

Source instructions

Privacy Cards

Manage virtual cards via the Privacy.com API.

Setup

Getting API Access

  1. Sign up for a Privacy.com account
  2. Email support@privacy.com to request API access
  3. Once approved, you'll receive your API key

Configuration

export PRIVACY_API_KEY="your-api-key"

Environments:

  • Production: https://api.privacy.com/v1
  • Sandbox: https://sandbox.privacy.com/v1

All requests: Authorization: api-key $PRIVACY_API_KEY


Create a Card

curl -s -X POST "https://api.privacy.com/v1/cards" \
  -H "Authorization: api-key $PRIVACY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "SINGLE_USE",
    "memo": "One-time purchase",
    "spend_limit": 5000,
    "spend_limit_duration": "TRANSACTION"
  }' | jq

Card Types

TypeBehavior
SINGLE_USECloses after first transaction
MERCHANT_LOCKEDLocks to first merchant, reusable there
UNLOCKEDWorks anywhere (requires issuing access)

Create Parameters

ParameterRequiredDescription
typeYesSINGLE_USE, MERCHANT_LOCKED, UNLOCKED
memoNoLabel/description
spend_limitNoLimit in cents
spend_limit_durationNoTRANSACTION, MONTHLY, ANNUALLY, FOREVER
stateNoOPEN (default) or PAUSED
funding_tokenNoSpecific funding source UUID

Response

{
  "token": "card-uuid",
  "type": "SINGLE_USE",
  "state": "OPEN",
  "memo": "One-time purchase",
  "last_four": "1234",
  "pan": "4111111111111234",
  "cvv": "123",
  "exp_month": "12",
  "exp_year": "2027",
  "spend_limit": 5000,
  "spend_limit_duration": "TRANSACTION",
  "created": "2024-01-15T10:30:00Z"
}

Note: pan, cvv, exp_month, exp_year require enterprise access in production. Always available in sandbox.


Lookup Transactions

All transactions for a card

curl -s "https://api.privacy.com/v1/transactions?card_token={card_token}" \
  -H "Authorization: api-key $PRIVACY_API_KEY" | jq

Filter by date range

curl -s "https://api.privacy.com/v1/transactions?card_token={card_token}&begin=2024-01-01&end=2024-01-31" \
  -H "Authorization: api-key $PRIVACY_API_KEY" | jq

Filter by result

# Only approved
curl -s "https://api.privacy.com/v1/transactions?result=APPROVED" \
  -H "Authorization: api-key $PRIVACY_API_KEY" | jq

# Only declined
curl -s "https://api.privacy.com/v1/transactions?result=DECLINED" \
  -H "Authorization: api-key $PRIVACY_API_KEY" | jq

Query Parameters

ParameterDescription
card_tokenFilter by card UUID
resultAPPROVED or DECLINED
beginOn or after date (YYYY-MM-DD)
endBefore date (YYYY-MM-DD)
pagePage number (default: 1)
page_sizeResults per page (1-1000, default: 50)

Transaction Response

{
  "token": "txn-uuid",
  "card_token": "card-uuid",
  "amount": -2500,
  "status": "SETTLED",
  "result": "APPROVED",
  "merchant": {
    "descriptor": "NETFLIX.COM",
    "mcc": "4899",
    "city": "LOS GATOS",
    "state": "CA",
    "country": "USA"
  },
  "created": "2024-01-15T14:22:00Z"
}

Transaction Statuses

PENDINGSETTLINGSETTLED

Also: VOIDED, BOUNCED, DECLINED


Quick Reference

List all cards

curl -s "https://api.privacy.com/v1/cards" \
  -H "Authorization: api-key $PRIVACY_API_KEY" | jq

Get single card

curl -s "https://api.privacy.com/v1/cards/{card_token}" \
  -H "Authorization: api-key $PRIVACY_API_KEY" | jq

Pause a card

curl -s -X PATCH "https://api.privacy.com/v1/cards/{card_token}" \
  -H "Authorization: api-key $PRIVACY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"state": "PAUSED"}' | jq

Close a card (permanent)

curl -s -X PATCH "https://api.privacy.com/v1/cards/{card_token}" \
  -H "Authorization: api-key $PRIVACY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"state": "CLOSED"}' | jq

Update spend limit

curl -s -X PATCH "https://api.privacy.com/v1/cards/{card_token}" \
  -H "Authorization: api-key $PRIVACY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"spend_limit": 10000, "spend_limit_duration": "MONTHLY"}' | jq

Common Decline Reasons

CodeMeaning
CARD_PAUSEDCard is paused
CARD_CLOSEDCard is closed
SINGLE_USE_RECHARGEDSingle-use already used
UNAUTHORIZED_MERCHANTWrong merchant for locked card
USER_TRANSACTION_LIMITSpend limit exceeded
INSUFFICIENT_FUNDSFunding source issue

See references/api.md for complete field documentation.

Related OpenClaw skills

Browse all →
Featured slot

Your product here

Reserve this slot to reach operators and coding-agent buyers.

Shown where builders are actively comparing tools and deployment options.

Advertise