Referencia de API

Integra PrivCards en tus aplicaciones. Emite, recarga, congela y administra tarjetas virtuales mediante nuestra API REST.

URL Basehttps://api.privcards.com/v1
JSON RESTful
Autenticación Bearer
Entorno Sandbox
Webhooks
Autenticación

Claves API y Autenticación

Todas las solicitudes API requieren un token Bearer. Genera tu clave API desde Panel → Configuración → Claves API.

Seguridad de la Clave API

Nunca expongas tu clave en código del lado del cliente. Usa variables de entorno. Las claves con prefijo sk_live_ son de producción, sk_test_ son de sandbox.

request-headers
Authorization: Bearer sk_live_your_api_key_here
Content-Type: application/json
X-Idempotency-Key: optional-unique-key-for-safe-retries
Límites de Tasa
1.000
Solicitudes / Minuto
50
Tarjetas / Minuto
10.000
Solicitudes / Hora
Códigos de Error
error-response.json
{
  "error": "insufficient_funds",
  "message": "Your wallet balance is too low to fund this card.",
  "code": 400,
  "request_id": "req_7f8a9b2c3d4e"
}
200
Solicitud exitosa
201
Recurso creado
400
Parámetros inválidos
401
Clave API faltante o inválida
404
Recurso no encontrado
429
Límite de tasa excedido
Tarjetas

Gestión de Tarjetas

Crea, gestiona y controla tarjetas virtuales Visa y Mastercard. Cada tarjeta está aislada con su propio saldo, límites y ciclo de vida.

Cuerpo de la Solicitud
ParameterTypeDescription
bin_idstringrequiredBIN identifier (e.g. 491653). Use GET /bins to list available BINs.
amountnumberrequiredInitial funding amount in USD. Min: $1.00, Max: $5,000.00
labelstringoptionalCustom label for the card (max 64 chars)
spending_limitnumberoptionalMonthly spending limit in USD. Defaults to BIN maximum.
allowed_categoriesstring[]optionalMCC categories to whitelist (e.g. ["advertising", "software"])
auto_freeze_atnumberoptionalAuto-freeze when balance drops below this amount
metadataobjectoptionalKey-value pairs for your internal tracking (max 20 keys)
Solicitud de Ejemplo
curl
curl -X POST https://api.privcards.com/v1/cards \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "bin_id": "491653",
    "amount": 500,
    "label": "Meta Ads Campaign #12",
    "spending_limit": 2000,
    "allowed_categories": ["advertising"],
    "metadata": {"campaign": "spring_2026"}
  }'
Response 201 Created
response.json
{
  "id": "card_8xK2m9Lp4q",
  "bin_id": "491653",
  "network": "visa",
  "last4": "2039",
  "status": "active",
  "balance": 500.00,
  "spending_limit": 2000.00,
  "label": "Meta Ads Campaign #12",
  "allowed_categories": ["advertising"],
  "auto_freeze_at": null,
  "metadata": { "campaign": "spring_2026" },
  "created_at": "2026-04-15T12:00:00Z",
  "expires_at": "2029-04-15T23:59:59Z"
}
Parámetros de Query
ParameterTypeDescription
statusstringoptionalactive, frozen, terminated
bin_idstringoptionalFilter by BIN
pageintegeroptionalPage number. Default: 1
per_pageintegeroptionalItems per page (1-100). Default: 25

apiDocs.cards.getDesc

Endpoint Sensible

Devuelve PAN, CVV y vencimiento completos. Sensible PCI — nunca registres ni almacenes sin cifrar. Limitado a 30 req/min.

Suspende todas las transacciones. El saldo se conserva. La tarjeta puede descongelarse después.

Reactiva las transacciones en una tarjeta congelada. Devuelve el objeto tarjeta con status: "active".

Acción Irreversible

Terminar una tarjeta es permanente. El saldo restante se devuelve a tu billetera al instante.

Recargas

Recarga de Tarjetas

Agrega o retira fondos de tarjetas individuales. Los fondos provienen del saldo de tu billetera.

Cuerpo de la Solicitud
ParameterTypeDescription
amountnumberrequiredAmount in USD to add. Min: $1.00, Max: $5,000.00

Devuelve los saldos actualizados de tarjeta y billetera.

Transacciones

Historial de Transacciones

Visualiza todas las transacciones en tus tarjetas. Incluye autorizaciones, liquidaciones, reembolsos y rechazos.

Parámetros de Query
ParameterTypeDescription
card_idstringoptionalFilter by card
typestringoptionalauthorization, settlement, refund, decline
fromstringoptionalStart date (ISO 8601)
tostringoptionalEnd date (ISO 8601)
pageintegeroptionalPage number. Default: 1
Billetera

Billetera y Depósitos

Gestiona la billetera de tu cuenta. Deposita cripto, consulta saldos y rastrea depósitos entrantes.

Response 200 OK
response.json
{
  "balance": 1312.50,
  "currency": "USD",
  "pending_deposits": 500.00,
  "total_deposited": 15000.00,
  "total_spent": 13687.50,
  "cards_active": 8,
  "cards_total_balance": 2450.00
}
Parámetros de Query
ParameterTypeDescription
currencystringoptionalbtc, eth, sol, usdt. Omit to get all.
BINs

Selección de BIN

Lista los rangos de BIN disponibles con sus capacidades, límites y tasas de aceptación.

Response 200 OK
response.json
{
  "data": [
    {
      "id": "491653",
      "network": "visa",
      "type": "advertising",
      "3ds": true,
      "apple_pay": true,
      "google_pay": true,
      "max_transaction": 5000.00,
      "max_monthly": 50000.00,
      "acceptance_rate": 97.2,
      "best_for": ["meta_ads", "google_ads", "tiktok_ads"]
    }
  ]
}
3D Secure

Autenticación 3D Secure

Recupera retos 3DS y códigos OTP. Todas las tarjetas se inscriben automáticamente en 3DS 2.0.

Response 200 OK
response.json
{
  "data": [
    {
      "id": "3ds_m4n5o6p7",
      "card_id": "card_8xK2m9Lp4q",
      "merchant": "SPOTIFY",
      "amount": 9.99,
      "otp": "847291",
      "status": "pending",
      "expires_at": "2026-04-15T15:05:00Z"
    }
  ]
}
Webhooks

Webhooks y Eventos

Recibe notificaciones en tiempo real cuando ocurren eventos. Los payloads están firmados con HMAC-SHA256.

Eventos Disponibles
card.createdSe emitió una nueva tarjeta
card.frozenSe congeló una tarjeta
card.unfrozenSe descongeló una tarjeta
card.terminatedSe terminó una tarjeta
card.fundedFondos agregados a una tarjeta
transaction.authorizedTransacción autorizada
transaction.settledTransacción liquidada
transaction.declinedTransacción rechazada
transaction.refundedReembolso procesado
3ds.challengeVerificación 3DS requerida
deposit.pendingDepósito de cripto detectado
deposit.confirmedDepósito de cripto confirmado
Verificación de Firma
verify-webhook.py
import hmac, hashlib

def verify_webhook(payload, signature, secret):
    expected = hmac.new(
        secret.encode(),
        payload.encode(),
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)
Cuerpo de la Solicitud
ParameterTypeDescription
urlstringrequiredHTTPS endpoint URL to receive events
eventsstring[]requiredEvent types to subscribe. Use ["*"] for all.
secretstringoptionalCustom signing secret. Auto-generated if omitted.
SDKs

SDKs y Bibliotecas

Bibliotecas oficiales de cliente para tu stack. Todos los SDKs soportan entornos en vivo y sandbox.

Python

Python

pip install privcards

Node.js

Node.js

npm i privcards

Go

Go

go get privcards

Inicio Rápido — Python
quickstart.py
from privcards import Client

client = Client("sk_live_your_api_key")

# Create a card
card = client.cards.create(
    bin_id="491653",
    amount=500,
    label="Ad Spend"
)
print(card.id, card.last4)

# Get full card details (PAN, CVV)
details = client.cards.details(card.id)
print(details.pan, details.cvv)

# Fund the card
client.cards.fund(card.id, amount=200)

# List transactions
txns = client.transactions.list(card_id=card.id)
for t in txns.data:
    print(t.merchant.name, t.amount)
Inicio Rápido — Node.js
quickstart.js
const { privcards } = require('privcards');

const client = new privcards('sk_live_your_api_key');

// Create a card
const card = await client.cards.create({
  binId: '491653',
  amount: 500,
  label: 'Ad Spend',
});

// Get 3DS OTPs
const challenges = await client.threeds.list({
  cardId: card.id,
  status: 'pending',
});

// Set up webhooks
await client.webhooks.create({
  url: 'https://yourapp.com/hooks',
  events: ['transaction.authorized', '3ds.challenge'],
});
Documentación API — PrivCards API de Tarjeta Virtual