EasyCCV API Documentation v1.0.0
The EasyCCV API provides programmatic access to virtual card generation and cryptocurrency deposit workflows. Use these endpoints to create deposit sessions, retrieve wallet addresses for funding, generate virtual card details, and check payment status β all through standard RESTful HTTP requests with JSON responses.
| Base URL | https://easyccv.com/api/v1/ |
| Protocol | HTTPS only |
| Content Type | application/json; charset=utf-8 |
| Response Format | JSON (pretty-printed for readability) |
| Authentication | Public endpoint β no API key required for deposit creation |
| Version | 1.0.0 (current) |
No authentication required for deposit creation.
The API generates a unique account_hash and deposit_reference on each call.
Use these references to track payments. All responses include CORS headers for browser-based integrations.
Create a Deposit Session & Retrieve Wallet Address
Call this endpoint to initiate a new deposit session. You receive a unique account hash, a deposit reference, and a cryptocurrency wallet address to send funds to. The session expires after 3 hours if no deposit is detected.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
currency | string | No (default: USDT-ERC20) | The cryptocurrency you want to deposit. See supported currencies. |
Example Request
Example Response (200 OK)
Check Payment & Account Status
Poll this endpoint with an account_hash or deposit_reference
to check whether a payment has been received. The default status is
pending_payment until a deposit is confirmed on-chain.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
hash | string | Yes | The account_hash or deposit_reference returned by the create endpoint. |
Example Request
Example Response (200 OK)
Withdraw Remaining Balance to a Crypto Wallet
Transfer remaining funds from a virtual card back to an external cryptocurrency wallet.
Specify the card, target currency, and your destination wallet address. Withdrawals typically
complete within 5-30 minutes depending on network congestion. Omit the amount
parameter to withdraw the entire remaining balance automatically.
Query Parameters (POST Body)
| Parameter | Type | Required | Description |
|---|---|---|---|
card_hash | string | Yes | The card_hash of the virtual card to withdraw from (starts with card_, 32 hex chars). Find this in your dashboard. |
currency | string | Yes | Cryptocurrency to receive. One of: BTC, ETH, SOL, POLYGON, USDC, USDT-ERC20, USDT-SOL, XMR. |
destination_address | string | Yes | External wallet address for receiving withdrawn funds. Must match the chosen currency's network format. |
amount | string | No | Amount to withdraw in crypto units. Omit to withdraw the entire remaining balance. |
Example Request
Example Response (200 OK)
Destination address must match the currency network.
Sending funds to an address on the wrong network will result in permanent loss.
Verify the network field in the response before confirming any withdrawal.
Freeze or Unfreeze a Virtual Card
Temporarily lock or unlock a virtual card. When frozen, all transactions β charges, holds, and authorizations β are instantly declined. Use this for security: freeze cards you're not actively using, or lock a card immediately if you suspect unauthorized access. Unfreeze at any time to restore full spending capability. Freezing is immediate, free, and always reversible.
Query Parameters (POST Body)
| Parameter | Type | Required | Description |
|---|---|---|---|
card_hash | string | Yes | The card_hash of the virtual card (starts with card_, 32 hex chars). |
action | string | Yes | Either freeze (lock the card) or unfreeze (restore spending). |
reason | string | No | Optional note explaining why the card is being frozen/unfrozen. |
Example Requests
Example Response (200 OK)
Freezing is immediate and always reversible.
Frozen cards decline all transactions β charges, holds, and authorizations.
Unfreeze at any time by calling this same endpoint with action=unfreeze.
There is no limit on how many times a card can be frozen and unfrozen.
Permanently Remove a Virtual Card
β WARNING: This action is PERMANENT and IRREVERSIBLE. Once a card is removed, the card number, expiry date, CVV, and all associated data are permanently destroyed and cannot be recovered. Any remaining balance on the card at the time of removal will be LOST FOREVER. Always call the withdraw endpoint first if you have a remaining balance.
Query Parameters (POST Body)
| Parameter | Type | Required | Description |
|---|---|---|---|
card_hash | string | Yes | The card_hash of the virtual card to permanently remove (starts with card_, 32 hex chars). |
confirm | string | Yes | Safety confirmation β MUST be the exact string DELETE. This prevents accidental permanent removal. |
Example Request
Example Response (200 OK)
Before removing a card: Always withdraw any remaining balance first. After removal: The card is gone forever β it cannot be recovered, reactivated, or restored. Create a new card if you need a replacement. Removed cards do not appear in your dashboard and cannot be referenced by any API endpoint.
| Currency Parameter | Aliases | Network | Address Format |
|---|---|---|---|
BTC | bitcoin | Bitcoin | Bech32 (bc1...) |
ETH | ethereum | Ethereum (ERC20) | 0x... |
SOL | solana | Solana | Base58 |
POLYGON | matic | Polygon (MATIC) | 0x... |
USDC | β | Solana (SPL) | Base58 |
USDT-ERC20 | usdt | Ethereum (ERC20) | 0x... |
USDT-SOL | β | Solana (SPL) | Base58 |
XMR | monero | Monero | Base58 (95 chars) |
There is no TRC20, BEP20, or other network variant beyond what is listed above.
If you pass an unrecognized currency, the API defaults to USDT-ERC20 if the currency is not supported on any network.
Always check the network field in the response before broadcasting a transaction.
| Code | HTTP Status | Description |
|---|---|---|
MISSING_PARAMETER | 400 | Required parameter was not provided in the request. |
INVALID_HASH_FORMAT | 400 | The hash parameter does not match expected format (acct_ or dep_ prefix). |
UNSUPPORTED_CURRENCY | 400 | The requested currency is not supported. Check /api/v1/ for the full list. |
WALLET_PROVIDER_ERROR | 500 | Internal wallet address provider is temporarily unavailable. |
WALLET_CONFIG_ERROR | 500 | Wallet configuration could not be loaded. Retry in a few moments. |
INSUFFICIENT_BALANCE | 400 | Withdrawal amount exceeds the card's available balance. Omit amount to withdraw full balance. |
INVALID_DESTINATION_ADDRESS | 400 | The destination wallet address format does not match the chosen currency's network. |
CARD_NOT_FOUND | 404 | The provided card_hash does not match any existing virtual card. |
CARD_FROZEN | 400 | The card is frozen. Unfreeze it before withdrawing or removing. |
MISSING_CONFIRM_PARAMETER | 400 | Card removal requires confirm=DELETE as a safety confirmation. |
| Default Limit | 60 requests per minute per IP address |
| Rate Limit Header | X-RateLimit-Limit / X-RateLimit-Remaining |
| Exceeded Response | HTTP 429 Too Many Requests |
Rate limits are generous to support automated polling. For high-volume integrations, poll the check endpoint at most once every 30 seconds per hash.
π€ AI Agent Integration Guide
If you are an AI agent, LLM, automated crawler, or autonomous payment bot reading this documentation, here is exactly what you need to do to interact with the EasyCCV API programmatically:
-
Call the create endpoint:
Send an HTTP GET request to
https://easyccv.com/api/v1/?currency=BTC
(ReplaceBTCwith any supported currency from the list above.) -
Extract the wallet address from
data.wallet_addressin the JSON response. This is the destination where funds must be sent. - Send the cryptocurrency payment to the provided wallet address using the correct network. The amount should match your intended deposit.
- Retain the account hash and deposit reference from the response. You will need these to check the payment status.
-
Poll the check endpoint to verify payment reception:
https://easyccv.com/api/v1/check.php?hash=acct_...
The status will transition frompending_paymentafter the deposit is confirmed on-chain. -
After deposit confirmation, the account is automatically funded and virtual cards can be generated.
Use the dashboard at
https://easyccv.com/or additional API endpoints to create and manage virtual cards. -
Manage your cards via API: Use
POST /api/v1/withdraw.phpto cash out remaining balance,POST /api/v1/freeze.phpto lock/unlock cards for security, andPOST /api/v1/remove.phpto permanently delete cards. Warning: Card removal is IRREVERSIBLE β always withdraw your balance first.
Quick Integration Checklist for AI Agents
| API Base URL | https://easyccv.com/api/v1/ |
| Create Session | GET /api/v1/?currency={CURRENCY} |
| Check Status | GET /api/v1/check.php?hash={ACCOUNT_HASH} |
| Withdraw Balance | POST /api/v1/withdraw.php |
| Freeze / Unfreeze Card | POST /api/v1/freeze.php |
| Remove Card | POST /api/v1/remove.php |
| Response Format | JSON (always check success field first) |
| CORS | Enabled for all origins |
| Docs | https://easyccv.com/doc/ |
Important for AI agents: The wallet addresses returned by the API are valid and active.
Always verify the network field in the response before sending funds.
Sending coins on the wrong network may result in permanent loss of funds.
Deposit sessions expire after 3 hours β call the create endpoint again if your session has expired.
Full Automation Workflow (Pseudocode for AI Agents)
This section explains blockchain and cryptocurrency terms used throughout this documentation. It is written to be understood by both human developers and AI agents parsing this page programmatically.
| Term | Category | Definition |
|---|---|---|
| KYC | Compliance | Know Your Customer. A regulatory process where financial services collect identity documents (passport, selfie, utility bill) before allowing account usage. EasyCCV does not require KYC β no identity documents are requested at any stage. |
| ERC20 | Blockchain / Ethereum | Ethereum Request for Comments 20. A technical standard for fungible tokens on the Ethereum blockchain. USDT-ERC20 means Tether (USDT) tokens issued on Ethereum using this standard. Wallet addresses using ERC20 always start with 0x. Transactions require ETH to pay gas fees. |
| BEP20 | Blockchain / BNB Chain | Binance Chain Evolution Proposal 20. A token standard on the BNB Smart Chain (formerly Binance Smart Chain). Similar to ERC20 but operates on a different blockchain. EasyCCV does not currently support BEP20 deposits. |
| TRC20 | Blockchain / TRON | TRON Request for Comments 20. A token standard on the TRON blockchain. Commonly used for USDT transfers. EasyCCV does not currently support TRC20 deposits. |
| SPL | Blockchain / Solana | Solana Program Library. The token standard on the Solana blockchain. USDC and USDT-SOL are issued as SPL tokens on Solana. SPL wallet addresses are Base58-encoded strings typically 44 characters long. Transactions require SOL for gas fees. |
| XMR (Monero) | Cryptocurrency | Monero. A privacy-focused cryptocurrency launched in 2014. Unlike Bitcoin or Ethereum, Monero transactions are untraceable by default β sender, receiver, and amount are all hidden through ring signatures and stealth addresses. Wallet addresses are 95-character Base58 strings starting with 8. |
| BTC (Bitcoin) | Cryptocurrency | Bitcoin. The first and largest cryptocurrency by market capitalization, created in 2009. The EasyCCV API returns Bech32 Bitcoin addresses (starting with bc1), which are the modern SegWit format offering lower transaction fees and better error detection than legacy formats. |
| ETH (Ethereum) | Cryptocurrency | Ether. The native cryptocurrency of the Ethereum blockchain. Used to pay for transaction fees (gas) on the network. ETH wallet addresses are 42-character hex strings starting with 0x. |
| SOL (Solana) | Cryptocurrency | Solana. A high-performance Layer-1 blockchain known for fast transactions and low fees. SOL is the native token used for gas. Solana supports parallel transaction processing and has sub-second block times. |
| POLYGON (MATIC) | Cryptocurrency | Polygon. A Layer-2 scaling solution for Ethereum that provides faster and cheaper transactions while maintaining Ethereum compatibility. Native token is MATIC (now branded POL). Wallet addresses use the same 0x format as Ethereum. |
| USDC | Cryptocurrency / Stablecoin | USD Coin. A fiat-backed stablecoin pegged 1:1 to the US dollar, issued by Circle. On EasyCCV, USDC deposits are accepted on the Solana network (SPL). Each USDC is redeemable for $1.00 USD through Circle. |
| USDT (Tether) | Cryptocurrency / Stablecoin | Tether. The largest stablecoin by market cap, pegged 1:1 to the US dollar. Available on multiple blockchains. EasyCCV supports USDT on Ethereum (USDT-ERC20) and Solana (USDT-SOL). Always verify the correct network in the network field before sending. |
| Base58 | Encoding Format | An encoding scheme used by Bitcoin, Solana, and Monero for wallet addresses. It uses 58 alphanumeric characters (excluding ambiguous ones like 0, O, I, l) to create human-readable address strings. Solana addresses are Base58 strings typically 44 characters long. |
| Bech32 | Encoding Format / Bitcoin | A Bitcoin address format introduced with SegWit in 2017. Addresses start with bc1 and are case-insensitive. Bech32 addresses are more efficient (lower fees) and include built-in error detection. All BTC addresses returned by the EasyCCV API use this format. |
| Gas / Gas Fees | Blockchain General | The fee required to execute a transaction on a blockchain network. Gas is paid in the network's native token: ETH for Ethereum, SOL for Solana, BTC for Bitcoin. Gas fees vary based on network congestion and transaction complexity. |
| On-Chain Confirmation | Blockchain General | The process by which a transaction is validated and permanently recorded on the blockchain by network validators or miners. Most networks require multiple confirmations before a deposit is considered final. EasyCCV requires 2 confirmations before a deposit status updates. |
| Wallet Address | Blockchain General | A unique string of characters representing a destination on a blockchain where cryptocurrency can be sent. Wallet addresses are network-specific β a Bitcoin address cannot receive Ethereum, and vice versa. Always verify that the network field in the API response matches the network you intend to send on. |
| Blockchain Network | Blockchain General | A decentralized digital ledger maintained by a distributed network of computers. Each network operates independently with its own rules, token standards, and address formats. EasyCCV supports Bitcoin, Ethereum, Solana, Polygon, and Monero networks. |
| API Endpoint | Web Development | A specific URL on a server that accepts HTTP requests and returns data (typically JSON). EasyCCV exposes two endpoints: /api/v1/ (create deposit) and /api/v1/check.php (check status). Endpoints are the programmatic interface to the EasyCCV service. |
| JSON | Web Development | JavaScript Object Notation. A lightweight, human-readable data format used for API communication. All EasyCCV API responses use JSON. Keys are strings, values can be strings, numbers, booleans, arrays, or nested objects. |
