डेवलपर
API रेफ़रेंस
इनवॉइस, पेमेंट लिंक, बैलेंस और स्वीकार किए गए कॉइन के लिए एक छोटा REST API। यह HTTPS पर JSON इस्तेमाल करता है, और हर रिक्वेस्ट आपकी सीक्रेट की से की जाती है।
बेस URL
- प्रोडक्शन
https://cryptomerchant.online/api/v1- लोकल डेवलपमेंट
http://localhost:3000/api/v1
इस API का मशीन से पढ़ने योग्य विवरण /openapi.json पर है (OpenAPI 3.1)। आप इसे Postman या किसी क्लाइंट जनरेटर में इम्पोर्ट कर सकते हैं।
ऑथेंटिकेशन
हर रिक्वेस्ट के Authorization हेडर में अपनी सीक्रेट की Bearer टोकन के रूप में भेजें। पोर्टल में डेवलपर के अंतर्गत की बनाएँ।
Authorization: Bearer cm_live_…- की मेननेट पर
cm_live_से और टेस्टनेट परcm_test_से शुरू होती हैं। - पूरी की सिर्फ़ एक बार दिखाई जाती है, जब आप उसे बनाते हैं। हम उसका सिर्फ़ हैश सेव करते हैं, इसलिए उसे किसी सुरक्षित जगह रखें।
- की सिर्फ़ अपने सर्वर पर इस्तेमाल करें। उन्हें कभी किसी वेब पेज, मोबाइल ऐप या सार्वजनिक कोड रिपॉज़िटरी में न डालें।
- अगर किसी की के लीक होने की आशंका है, तो उसे पोर्टल में रद्द करें और नई की बनाएँ।
एरर
जब कोई रिक्वेस्ट फ़ेल होती है, तो रिस्पॉन्स में HTTP एरर स्टेटस होता है और एक JSON बॉडी होती है, जिसमें मशीन के पढ़ने लायक code और इंसान के पढ़ने लायक message होता है:
{
"error": {
"code": "amount_too_small",
"message": "Amount must be at least 0.50 USD."
}
}HTTP स्टेटस
400- रिक्वेस्ट मान्य नहीं है, जैसे कोई फ़ील्ड मौजूद नहीं है या राशि बहुत कम है।
401- API की मौजूद नहीं है, ग़लत है या रद्द की जा चुकी है।
403- आपका अकाउंट यह नहीं कर सकता: वह अभी लाइव नहीं है, या निलंबित है।
404- ऑब्जेक्ट मौजूद नहीं है, या किसी दूसरे बिज़नेस का है।
409- इनवॉइस अपने मौजूदा स्टेटस में यह नहीं कर सकता, जैसे ऐसे इनवॉइस को रद्द करना जिसमें पहले से भुगतान आ चुका है।
500- हमारी तरफ़ से कुछ गड़बड़ हो गई। थोड़ी देर बाद फिर कोशिश करें।
कोड जो आपको दिख सकते हैं
invalid_json- रिक्वेस्ट बॉडी JSON ऑब्जेक्ट नहीं है।
invalid_request- कोई फ़ील्ड मौजूद नहीं है या मान्य नहीं है। मैसेज में फ़ील्ड का नाम होता है।
unauthorized- API की मौजूद नहीं है, ग़लत है या रद्द की जा चुकी है।
account_suspended- यह मर्चेंट अकाउंट निलंबित है।
merchant_not_live- आपका अकाउंट अभी लाइव नहीं है। पहले पोर्टल में सेटअप पूरा करें।
invalid_amount- राशि मौजूद नहीं है, संख्या नहीं है, या शून्य से ज़्यादा नहीं है।
amount_too_small- राशि की वैल्यू 0.50 अमेरिकी डॉलर से कम है।
invalid_asset- यह कॉइन ID किसी ज्ञात कॉइन की नहीं है।
asset_not_accepted- आप वह कॉइन स्वीकार नहीं करते।
invalid_state- इनवॉइस अपने मौजूदा स्टेटस में यह नहीं कर सकता।
not_found- उस ID का कोई ऑब्जेक्ट नहीं है।
server_error- हमारी तरफ़ से कुछ गड़बड़ हो गई।
इनवॉइस ऑब्जेक्ट
API रिस्पॉन्स और वेबहुक में इनवॉइस इसी रूप में होते हैं। राशियाँ दशमलव स्ट्रिंग होती हैं, ताकि प्रिसिशन न खोए।
idstring- इनवॉइस ID, जो
inv_से शुरू होती है। objectstring- हमेशा
invoice। statusstring- मौजूदा स्टेटस। नीचे स्टेटस की सूची देखें।
amountstring- आपकी माँगी गई क़ीमत,
currencyमें। currencystring- क़ीमत की करेंसी, जैसे
USD। amount_usdstring- अमेरिकी डॉलर में क़ीमत।
descriptionstring | null- आपका विवरण, जो ग्राहक को दिखाया जाता है।
order_idstring | null- आपका अपना ऑर्डर रेफ़रेंस।
customer_emailstring | null- ग्राहक का ईमेल, अगर आपने दिया हो।
metadataobject- इनवॉइस बनाते समय आपके द्वारा भेजा गया ऑब्जेक्ट, जो बिना बदलाव के लौटाया जाता है।
coinobject | null- ग्राहक द्वारा चुना गया कॉइन, या वह कॉइन जिसमें उसने असल में भुगतान किया, उसके
id,symbolऔरnetworkके साथ। कॉइन चुने जाने तकnull। requested_coinobject | null- आम तौर पर
null। जब ग्राहक ने किसी दूसरे कॉइन में या किसी दूसरे नेटवर्क पर भुगतान किया और भुगतान गिन लिया गया, तब यह वह कॉइन है जो इनवॉइस में माँगा गया था,coinजैसे ही फ़ील्ड के साथ। देखें ग़लत कॉइन या ग़लत नेटवर्क। pay_addressstring | null- इस इनवॉइस का डिपॉज़िट पता। कॉइन चुने जाने तक
null। pay_amountstring | null- चुने गए कॉइन में भेजने के लिए सटीक राशि।
network_fee_amountstringpay_amountका हिस्सा: वह गैस शुल्क जो ग्राहक क़ीमत के ऊपर चुकाता है, कॉइन में। कोई शुल्क न होने पर0।network_fee_usdstring- वही गैस शुल्क अमेरिकी डॉलर में।
rate_usdstring | null- चुने गए कॉइन की एक यूनिट की लॉक की गई क़ीमत, अमेरिकी डॉलर में।
received_amountstring- अब तक कितनी राशि आई है, चुने गए कॉइन में।
received_usdstring- जो राशि आई है उसकी अमेरिकी डॉलर में वैल्यू।
overpaid_amountstring- इनवॉइस में माँगी गई राशि से कितना ज़्यादा भुगतान हुआ, चुने गए कॉइन में।
refunded_amountstring- आपने रिफ़ंड लिंक से इस भुगतान पर कितना रिफ़ंड किया है, भुगतान वाले कॉइन में। कुछ नहीं हो तो
0। checkout_urlstring- इनवॉइस पेज। भुगतान के लिए अपने ग्राहक को यहाँ भेजें।
redirect_urlstring | null- भुगतान के बाद ग्राहक कहाँ जा सकता है।
expires_atISO 8601- कोई भुगतान न दिखने पर इनवॉइस कब एक्सपायर होगा।
paid_atISO 8601 | null- इनवॉइस का भुगतान कब हुआ, या
null। created_atISO 8601- इनवॉइस कब बनाया गया।
{
"id": "inv_…",
"object": "invoice",
"status": "open",
"amount": "49.9",
"currency": "USD",
"amount_usd": "49.9",
"description": "Annual plan",
"order_id": "1042",
"customer_email": "[email protected]",
"metadata": { "plan": "annual" },
"coin": null,
"requested_coin": null,
"pay_address": null,
"pay_amount": null,
"network_fee_amount": "0",
"network_fee_usd": "0",
"rate_usd": null,
"received_amount": "0",
"received_usd": "0",
"overpaid_amount": "0",
"refunded_amount": "0",
"checkout_url": "https://cryptomerchant.online/pay/i/inv_…",
"redirect_url": "https://yourstore.example/thanks",
"expires_at": "2026-10-28T10:00:00.000Z",
"paid_at": null,
"created_at": "2026-10-28T09:30:00.000Z"
}इनवॉइस स्टेटस
openखुला- बनाया गया। ग्राहक ने अभी कोई कॉइन नहीं चुना है।
awaiting_paymentभुगतान बाकी- कॉइन चुना गया है, डिपॉज़िट पता असाइन हो गया है और दर लॉक हो गई है।
confirmingकन्फ़र्म हो रहा है- ऑन-चेन एक भुगतान दिखा है और वह कन्फ़र्मेशन का इंतज़ार कर रहा है।
underpaidकम भुगतान- कन्फ़र्म भुगतान आपकी छूट सीमा से ज़्यादा कम है। ग्राहक बाक़ी राशि चुका सकता है या रिफ़ंड माँग सकता है।
paidभुगतान हुआ- भुगतान हो गया और कन्फ़र्म है। शुल्क घटाकर राशि आपके बैलेंस में है। आंशिक रिफ़ंड के बाद भी यही स्टेटस रहता है।
expiredएक्सपायर- कोई भुगतान दिखने से पहले समय ख़त्म हो गया।
cancelledरद्द- कोई भुगतान दिखने से पहले इनवॉइस रद्द कर दिया गया।
refundedरिफ़ंड हुआ- कम भुगतान वाले इनवॉइस पर ग्राहक को उसकी भेजी गई राशि रिफ़ंड कर दी गई, या आपने किसी भुगतान हो चुके इनवॉइस से अपने पास रही पूरी राशि रिफ़ंड कर दी।
इनवॉइस बनाएँ
POST/invoices
एक इनवॉइस बनाता है और स्टेटस 201 के साथ इनवॉइस ऑब्जेक्ट लौटाता है। अपने ग्राहक को उसके checkout_url पर भेजें।
बॉडी पैरामीटर
amountज़रूरीnumber | string- क़ीमत, संख्या या दशमलव स्ट्रिंग के रूप में। इसकी वैल्यू कम से कम 0.50 अमेरिकी डॉलर होनी चाहिए।
currencyवैकल्पिकstring- क़ीमत की करेंसी, जैसे
USD। डिफ़ॉल्टUSDहै। descriptionवैकल्पिकstring- ग्राहक किस चीज़ के लिए भुगतान कर रहा है, 300 अक्षरों तक। इनवॉइस पेज पर दिखाया जाता है।
order_idवैकल्पिकstring- आपका अपना ऑर्डर रेफ़रेंस, 120 अक्षरों तक, ताकि इनवॉइस को ऑर्डर से मिलाया जा सके।
customer_emailवैकल्पिकstring- ग्राहक का ईमेल पता। पोर्टल में भुगतान ग्राहक के हिसाब से ग्रुप किए जाते हैं।
customer_nameवैकल्पिकstring- ग्राहक का नाम, 120 अक्षरों तक।
redirect_urlवैकल्पिकstring- एक पूरा URL जहाँ ग्राहक भुगतान के बाद जा सकता है।
metadataवैकल्पिकobject- 4 KB तक का कोई भी JSON ऑब्जेक्ट। इनवॉइस पर और वेबहुक में बिना बदलाव के लौटाया जाता है।
coinवैकल्पिकstring- कोई कॉइन उसकी ID से पहले से चुनें, जैसे
USDT.TRON। यह आपके स्वीकार किए गए कॉइन में से एक होना चाहिए।
पहले से चुने गए coin के साथ, डिपॉज़िट पता तुरंत असाइन हो जाता है और दर लॉक हो जाती है, इसलिए pay_address और pay_amount भरे होते हैं और आप भुगतान का विवरण अपने इंटरफ़ेस में दिखा सकते हैं।
curl https://cryptomerchant.online/api/v1/invoices \
-H "Authorization: Bearer $CM_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": "49.90",
"currency": "USD",
"order_id": "1042",
"description": "Annual plan",
"customer_email": "[email protected]",
"redirect_url": "https://yourstore.example/thanks",
"metadata": { "plan": "annual" }
}'const res = await fetch("https://cryptomerchant.online/api/v1/invoices", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CM_SECRET_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: "49.90",
currency: "USD",
order_id: "1042",
description: "Annual plan",
}),
});
if (!res.ok) {
const { error } = await res.json();
throw new Error(`${error.code}: ${error.message}`);
}
const invoice = await res.json();
// Send the customer to invoice.checkout_urlइनवॉइस की सूची
GET/invoices
आपके इनवॉइस लौटाता है, सबसे नए पहले, एक बार में एक पेज।
क्वेरी पैरामीटर
statusवैकल्पिकstring- सिर्फ़ इस स्टेटस वाले इनवॉइस, जैसे
paid। ऊपर दिए गए स्टेटस में से एक होना चाहिए। limitवैकल्पिकnumber- कितने इनवॉइस लौटाने हैं, 1 से 100 तक। डिफ़ॉल्ट 20 है।
starting_afterवैकल्पिकstring- एक इनवॉइस ID। अगले पेज के लिए, उसके बाद आने वाले इनवॉइस लौटाता है।
इनवॉइस data में होते हैं। जब has_more true हो, तो starting_after को आपको मिले आख़िरी इनवॉइस की ID पर सेट करके अगला पेज माँगें।
curl "https://cryptomerchant.online/api/v1/invoices?status=paid&limit=20" \
-H "Authorization: Bearer $CM_SECRET_KEY"{
"object": "list",
"data": [
{ "id": "inv_…", "object": "invoice", "status": "paid", … }
],
"has_more": true
}इनवॉइस प्राप्त करें
GET/invoices/{id}
ID से एक इनवॉइस लौटाता है।
curl https://cryptomerchant.online/api/v1/invoices/$INVOICE_ID \
-H "Authorization: Bearer $CM_SECRET_KEY"इनवॉइस रद्द करें
POST/invoices/{id}/cancel
इनवॉइस रद्द करता है। यह सिर्फ़ तब काम करता है जब इनवॉइस का भुगतान नहीं हुआ हो और उसके लिए कोई भुगतान न दिखा हो।
curl -X POST https://cryptomerchant.online/api/v1/invoices/$INVOICE_ID/cancel \
-H "Authorization: Bearer $CM_SECRET_KEY"बैलेंस
GET/balances
लौटाता है कि आपका बिज़नेस हर कॉइन में कितना रखता है, अमेरिकी डॉलर में कुल राशि, और आपका गैस बैलेंस।
data[].coin- कॉइन ID, जैसे
USDT.TRON। data[].symbol- कॉइन सिंबल, जैसे
USDT। data[].network- वह नेटवर्क जिस पर कॉइन है।
data[].amount- आपके पास कॉइन की कितनी मात्रा है, दशमलव स्ट्रिंग के रूप में।
data[].usd- मौजूदा क़ीमत पर अमेरिकी डॉलर में इसकी वैल्यू।
total_usd- आपके सभी कॉइन की अमेरिकी डॉलर में वैल्यू।
gas_balance_usd- अमेरिकी डॉलर में आपका गैस बैलेंस, जो गैस शुल्क चुकाने में इस्तेमाल होता है।
curl https://cryptomerchant.online/api/v1/balances \
-H "Authorization: Bearer $CM_SECRET_KEY"{
"object": "balance",
"data": [
{ "coin": "USDT.TRON", "symbol": "USDT", "network": "Tron", "amount": "…", "usd": "…" }
],
"total_usd": "…",
"gas_balance_usd": "…"
}स्वीकार किए गए कॉइन
GET/coins
वे कॉइन लौटाता है जो आप अभी स्वीकार करते हैं, हर एक अपने id, symbol, name, network और decimals के साथ। इनवॉइस बनाते समय id को coin के रूप में इस्तेमाल करें। उदाहरण के लिए:
curl https://cryptomerchant.online/api/v1/coins \
-H "Authorization: Bearer $CM_SECRET_KEY"{
"object": "list",
"data": [
{
"id": "ETH.ETH",
"symbol": "ETH",
"name": "Ethereum",
"network": "Ethereum",
"decimals": 18
},
{
"id": "USDT.ETH",
"symbol": "USDT",
"name": "Tether USD",
"network": "Ethereum",
"decimals": 6
},
{
"id": "USDC.ETH",
"symbol": "USDC",
"name": "USD Coin",
"network": "Ethereum",
"decimals": 6
}
]
}पेमेंट लिंक बनाएँ
POST/payment-links
एक पेमेंट लिंक बनाता है और उसे स्टेटस 201 के साथ लौटाता है, जिसमें उसकी id और शेयर करने लायक url शामिल हैं।
बॉडी पैरामीटर
titleज़रूरीstring- ग्राहक जिस चीज़ के लिए भुगतान करता है उसका नाम, 120 अक्षरों तक।
amountवैकल्पिकnumber | string- तय क़ीमत। ग्राहक को राशि ख़ुद डालने देने के लिए इसे छोड़ दें।
currencyवैकल्पिकstring- क़ीमत की करेंसी। डिफ़ॉल्ट
USDहै। descriptionवैकल्पिकstring- ग्राहक को दिखाया जाने वाला अतिरिक्त विवरण, 300 अक्षरों तक।
curl https://cryptomerchant.online/api/v1/payment-links \
-H "Authorization: Bearer $CM_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Consulting hour",
"amount": "80",
"currency": "USD"
}'{
"id": "…",
"object": "payment_link",
"title": "Consulting hour",
"description": null,
"amount": "80",
"currency": "USD",
"active": true,
"url": "https://cryptomerchant.online/pay/l/…",
"created_at": "2026-10-28T09:30:00.000Z"
}पेमेंट लिंक की सूची
GET/payment-links
आपके सबसे हाल के 100 पेमेंट लिंक data में लौटाता है, सबसे नए पहले।
curl https://cryptomerchant.online/api/v1/payment-links \
-H "Authorization: Bearer $CM_SECRET_KEY"पेआउट ऑब्जेक्ट
पेआउट वेबहुक (payout.sent और payout.failed) data में यह ऑब्जेक्ट लेकर आते हैं। रेवेन्यू स्प्लिट से किसी पार्टनर के हिस्से के पेआउट भी यही ऑब्जेक्ट इस्तेमाल करते हैं, जिसमें partner_share true पर सेट होता है।
idstring- पेआउट ID।
objectstring- हमेशा
payout। coinstring- कॉइन ID, जैसे
USDT.TRON। amountstring- पेआउट की गई राशि, उसी कॉइन में।
network_feestring- इसे भेजने का गैस शुल्क, उसी कॉइन में।
to_addressstring- वह वॉलेट पता जिस पर इसे भेजा गया।
statusstringqueued,running,doneयाfailed।tx_hashstring | null- ब्लॉकचेन पर ट्रांज़ैक्शन ID, भेजे जाने के बाद।
autobooleantrueअगर पेआउट अपने-आप हुआ, किसी व्यक्ति के अनुरोध पर नहीं।partner_sharebooleantrueअगर यह पेआउट रेवेन्यू स्प्लिट से किसी पार्टनर का हिस्सा है, जो पार्टनर के वॉलेट में भेजा गया।created_atISO 8601- पेआउट कब बनाया गया।
{
"id": "…",
"object": "payout",
"coin": "USDT.TRON",
"amount": "120",
"network_fee": "…",
"to_address": "T…",
"status": "done",
"tx_hash": "…",
"auto": true,
"partner_share": true,
"created_at": "2026-10-28T09:30:00.000Z"
}