Overview
The No KYC Card API v2 provides a complete set of endpoints for generating payment addresses, verifying blockchain transactions, issuing virtual cards, and managing card lifecycle operations. All requests return JSON responses and support CORS for client-side integrations.
Our API follows RESTful conventions with predictable resource-oriented URLs. All timestamps are returned in ISO 8601 format (UTC). Rate limiting and API key authentication are available for production integrations.
Rate Limiting
All API endpoints are limited to 30 requests per 60 seconds per IP address. Exceeding this returns a 429 Too Many Requests response. Rate limit status is included in every response under meta.rate_remaining. Integrations should implement exponential backoff with jitter when rate-limited.
Base URL
All API requests should be directed to /api/v2/. The current API version is v2. Version v1 is deprecated and will be sunset on December 31, 2026.
Supported Cryptocurrencies
| Ticker | Network | Avg. Confirmation |
|---|---|---|
| BTC | Bitcoin | 10-30 min |
| ETH | Ethereum | 3-5 min |
| SOL | Solana | < 1 min |
| POLYGON | Polygon | 2-3 min |
| USDC | USDC (Solana) | < 1 min |
| USDT-SOL | USDT (Solana) | < 1 min |
| USDT-ERC20 | USDT (ERC-20) | 3-5 min |
| XMR | Monero | 20-30 min |
If no ticker is specified, the API defaults to BTC. Invalid tickers also fall back to Bitcoin.
Authentication
All API requests require authentication using an API key passed in the X-API-Key header. Keys are provisioned from your dashboard under Developer Settings.
Test mode keys use the prefix ncc_test_ and operate in a sandbox environment. Keys are scoped to specific endpoints — request the appropriate scope during provisioning.
Core Endpoints
/v2/?ticker={ticker}
Generate a crypto payment address. Returns a unique transaction hash, verification hash, and a wallet address for the specified cryptocurrency.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | no | Crypto ticker (BTC, ETH, SOL, etc). Default: BTC |
| hash | string | no | Custom verification hash. Auto-generated if omitted |
| amount | number | no | Expected deposit amount in USD (optional metadata) |
Example Request
https://nokyccard.cc/api/v2/?ticker=ETH
Example Response
{
"success": true,
"data": {
"request_id": "req_a1b2c3d4e5f6",
"transaction_hash": "txn_3f8a2c1b9d4e...",
"verification_hash": "verification_7e4d2a...",
"payment_method": "ETH",
"payment_address": "0x6383Af3476eF7fb1...",
"status": "address_generated",
"created_at": "2026-06-01T14:30:00.000Z",
"expires_in": 3600
},
"meta": {
"api_version": "2.0.0",
"environment": "production",
"timestamp": 1717247400,
"rate_limit": "30 / 60s",
"rate_remaining": 29
}
}
/v2/ver?verification_hash={hash}
Verification endpoint. Check the status of a blockchain transaction using its verification hash. Returns payment status, confirmation count, and next check interval.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| verification_hash | string | yes | The verification hash from the payment address generation step |
Example Request
https://nokyccard.cc/api/v2/ver?verification_hash=verification_7e4d2a1f3b8c9e5d7a0f2b6c
Example Response
{
"success": true,
"data": {
"request_id": "req_b2c3d4e5f6a7",
"verification_hash": "verification_7e4d2a1f3b8c9e5d7a0f2b6c",
"status": "pending_payment",
"status_description": "Payment submitted, awaiting 3 confirmations",
"confirmations": "0/3",
"checked_at": "2026-06-01T14:30:00.000Z",
"next_check": "60 seconds"
}
}
/v2/cards
Issue a new virtual card. The card is pre-funded with a payment address and enters pending_topup status until payment is confirmed. Maximum 3 cards per 24-hour period per account.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| bin | string | yes | BIN prefix for the card (e.g. "549948" for Mastercard) |
| ticker | string | no | Preferred crypto for top-up. Default: BTC |
/v2/cards/{id}/withdraw
Initiate a withdrawal from an active card. The card is permanently closed and its remaining balance is returned to the account wallet. Only available for cards in active status.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | yes | Card ID to withdraw from |
Response Fields
| Field | Type | Description |
|---|---|---|
| success | boolean | Whether the withdrawal was successful |
| data.balance | string | Balance amount returned, formatted to 2 decimal places |
| data.message | string | Human-readable result description |
/v2/cards/{id}/freeze
Temporarily freeze an active card, blocking all new authorizations. The card can be unfrozen via a subsequent call. Does not affect already-authorized transactions. Only available for cards in active status.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | yes | Card ID to freeze |
/v2/cards/{id}
Permanently delete a card. This action is irreversible. All associated tokens, authorizations, and transaction history are immediately purged. This operation does not affect the daily card generation limit.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | yes | Card ID to delete |
| force | boolean | no | Skip confirmation check. Default: false |
Webhooks
Receive real-time event notifications by configuring webhook endpoints in your dashboard. Events are delivered via HTTP POST with a JSON payload and signed using HMAC-SHA256 for verification.
| Event | Trigger |
|---|---|
| payment.address_generated | A new crypto payment address is generated. |
| payment.confirmed | A crypto payment reaches the required confirmations. |
| card.created | A new virtual card is issued. |
| card.activated | A card transitions to active status after top-up. |
| card.withdrawn | A card is withdrawn and closed. |
| card.frozen | A card is frozen via API or dashboard. |
| card.deleted | A card is permanently removed. |
Error Handling
The API uses conventional HTTP response codes. All error responses follow a consistent JSON structure.
{
"success": false,
"error": {
"code": "card_not_found",
"message": "No card exists with the provided identifier.",
"request_id": "req_9hK2mP7xR4vL"
}
}
| Code | Meaning |
|---|---|
| 400 | Bad Request — Invalid parameters or malformed request body |
| 401 | Unauthorized — Missing or invalid API key |
| 403 | Forbidden — Insufficient permissions for the requested resource |
| 404 | Not Found — The requested resource does not exist |
| 409 | Conflict — Card is not in a state that allows this operation (e.g. withdraw on pending_topup) |
| 429 | Too Many Requests — Rate limit exceeded |
| 500 | Internal Server Error — Retry with exponential backoff |
Quickstart
To generate a payment address and verify a transaction, follow these two steps:
Generate a payment address
curl -s https://nokyccard.cc/api/v2/?ticker=ETH
Store the returned verification_hash and payment_address for verification.
Verify the payment
curl -s https://nokyccard.cc/api/v2/ver?verification_hash=verification_7e4d2a1f3b8c9e5d7a0f2b6c
Once confirmations reaches 3/3, the card activates automatically.
Pro tip: Poll the verification endpoint every 60 seconds for real-time status updates. Use webhooks for event-driven architectures to avoid polling altogether.