Интегрируйте PrivCards в свои приложения. Выпускайте, пополняйте, замораживайте и управляйте виртуальными картами через наш REST API.
https://api.privcards.com/v1Все API запросы требуют Bearer токен. Сгенерируйте ключ API в Панели → Настройки → API ключи.
Никогда не раскрывайте ключ в клиентском коде. Используйте переменные окружения. Ключи с префиксом sk_live_ — продакшн, sk_test_ — sandbox.
Authorization: Bearer sk_live_your_api_key_here Content-Type: application/json X-Idempotency-Key: optional-unique-key-for-safe-retries
{
"error": "insufficient_funds",
"message": "Your wallet balance is too low to fund this card.",
"code": 400,
"request_id": "req_7f8a9b2c3d4e"
}Создавайте, управляйте и контролируйте виртуальные карты Visa и Mastercard. Каждая карта изолирована со своим балансом, лимитами и жизненным циклом.
| Parameter | Type | Description | |
|---|---|---|---|
| bin_id | string | required | BIN identifier (e.g. 491653). Use GET /bins to list available BINs. |
| amount | number | required | Initial funding amount in USD. Min: $1.00, Max: $5,000.00 |
| label | string | optional | Custom label for the card (max 64 chars) |
| spending_limit | number | optional | Monthly spending limit in USD. Defaults to BIN maximum. |
| allowed_categories | string[] | optional | MCC categories to whitelist (e.g. ["advertising", "software"]) |
| auto_freeze_at | number | optional | Auto-freeze when balance drops below this amount |
| metadata | object | optional | Key-value pairs for your internal tracking (max 20 keys) |
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"}
}'{
"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"
}| Parameter | Type | Description | |
|---|---|---|---|
| status | string | optional | active, frozen, terminated |
| bin_id | string | optional | Filter by BIN |
| page | integer | optional | Page number. Default: 1 |
| per_page | integer | optional | Items per page (1-100). Default: 25 |
apiDocs.cards.getDesc
Возвращает полный PAN, CVV и срок действия. PCI-чувствительный — никогда не логируйте и не храните в открытом виде. Лимит 30 req/min.
Приостанавливает все транзакции. Баланс сохраняется. Карту можно разморозить позже.
Возобновляет транзакции на замороженной карте. Возвращает объект карты со status: "active".
Закрытие карты — окончательно. Остаток баланса возвращается в кошелёк мгновенно.
Добавляйте или выводите средства с отдельных карт. Средства поступают с баланса вашего кошелька.
| Parameter | Type | Description | |
|---|---|---|---|
| amount | number | required | Amount in USD to add. Min: $1.00, Max: $5,000.00 |
Возвращает обновлённые балансы карты и кошелька.
Просматривайте все транзакции по картам. Включает авторизации, расчёты, возвраты и отказы.
| Parameter | Type | Description | |
|---|---|---|---|
| card_id | string | optional | Filter by card |
| type | string | optional | authorization, settlement, refund, decline |
| from | string | optional | Start date (ISO 8601) |
| to | string | optional | End date (ISO 8601) |
| page | integer | optional | Page number. Default: 1 |
Управляйте кошельком аккаунта. Депозиты в крипто, проверка балансов и отслеживание входящих депозитов.
{
"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
}| Parameter | Type | Description | |
|---|---|---|---|
| currency | string | optional | btc, eth, sol, usdt. Omit to get all. |
Список доступных диапазонов BIN с их возможностями, лимитами и уровнем одобрения.
{
"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"]
}
]
}Получение 3DS вызовов и OTP кодов. Все карты автоматически зарегистрированы в 3DS 2.0.
{
"data": [
{
"id": "3ds_m4n5o6p7",
"card_id": "card_8xK2m9Lp4q",
"merchant": "SPOTIFY",
"amount": 9.99,
"otp": "847291",
"status": "pending",
"expires_at": "2026-04-15T15:05:00Z"
}
]
}Получайте уведомления в реальном времени о событиях. Payload подписаны HMAC-SHA256.
card.createdВыпущена новая картаcard.frozenКарта замороженаcard.unfrozenКарта размороженаcard.terminatedКарта закрытаcard.fundedСредства добавлены на картуtransaction.authorizedТранзакция авторизованаtransaction.settledТранзакция завершенаtransaction.declinedТранзакция отклоненаtransaction.refundedВозврат обработан3ds.challengeТребуется 3DS верификацияdeposit.pendingКриптодепозит обнаруженdeposit.confirmedКриптодепозит подтверждён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)| Parameter | Type | Description | |
|---|---|---|---|
| url | string | required | HTTPS endpoint URL to receive events |
| events | string[] | required | Event types to subscribe. Use ["*"] for all. |
| secret | string | optional | Custom signing secret. Auto-generated if omitted. |
Официальные клиентские библиотеки для вашего стека. Все SDKs поддерживают live и sandbox среды.
pip install privcards
npm i privcards
go get privcards
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)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'],
});