- Non custodial
- Les fonds arrivent directement sur votre portefeuille
- 9 réseaux · USDT et USDC
Acceptez la crypto.
Encaissez directement sur votre portefeuille.
Une solution de paiement crypto clé en main pour votre site, votre application ou votre bot. Créez une facture en une seule requête, redirigez le client vers notre page de paiement et recevez un webhook dès que le réseau a confirmé le paiement.
- Sandbox sans argent réel
- Clients pour Node, PHP, Python, Go
- Webhooks signés avec relances
a1f3…9c0e · TRONChoisissez une devise
Envoyez le montant exact
Paiement détecté
En attente des confirmations du réseau TRON
Confirmations
TRON : 19 blocs, environ une minute
Payé
49.99 USDT reçus sur le portefeuille de la boutique
invoice.paid → votre serveur 200 OKVous vendez. Nous surveillons la blockchain.
Coinetic attribue au client une adresse dédiée, détecte le paiement, attend le nombre de confirmations requis et seulement alors signale à votre serveur « payé ». Les fonds vont du portefeuille du client au vôtre, sans jamais transiter par nous.
9 réseaux. Le client paie avec ce qu’il a
Cryptos natives, USDT et USDC. Un token n’est crédité que si son adresse de contrat figure sur la liste blanche : un faux « USDT » ne changera pas le statut.
Trois étapes et vous acceptez la crypto
Aucun nœud, aucun wallet sur votre serveur, aucun smart contract de votre côté. Page de paiement, taux de change, adresses et confirmations : nous nous occupons de tout.
import { CoineticClient } from "./cryptopay.js";
const cp = new CoineticClient({
baseUrl: "https://pay.coinetic.money",
keyId: process.env.API_KEY,
secret: process.env.API_SECRET, // uniquement côté serveur
});
const invoice = await cp.createInvoice({
order_id: "ORDER-1001",
price_amount: "49.99", // une chaîne, pas un nombre
price_currency: "USD",
return_url: "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001"); // Idempotency-Keyrequire 'Cryptopay.php';
$cp = new \Cryptopay\Client('https://pay.coinetic.money', getenv('API_KEY'), getenv('API_SECRET'));
$invoice = $cp->createInvoice([
'order_id' => 'ORDER-1001',
'price_amount' => '49.99',
'price_currency' => 'USD',
'return_url' => 'https://shop.example/orders/ORDER-1001',
], 'order-ORDER-1001');from cryptopay import CoineticClient
cp = CoineticClient("https://pay.coinetic.money", os.environ["API_KEY"], os.environ["API_SECRET"])
invoice = cp.create_invoice({
"order_id": "ORDER-1001",
"price_amount": "49.99",
"price_currency": "USD",
"return_url": "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001")cp := &cryptopayclient.Client{
BaseURL: "https://pay.coinetic.money",
KeyID: os.Getenv("API_KEY"),
Secret: os.Getenv("API_SECRET"),
HTTP: &http.Client{Timeout: 10 * time.Second},
}
inv, err := cp.CreateInvoice(ctx, cryptopayclient.CreateInvoice{
OrderID: "ORDER-1001",
PriceAmount: "49.99",
PriceCurrency: "USD",
ReturnURL: "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001")// Express : on redirige le client vers la page de paiement Coinetic
app.post("/checkout", async (req, res) => {
const order = await createOrder(req);
const invoice = await cp.createInvoice({ /* comme à l’étape 1 */ }, `order-${order.id}`);
await saveInvoiceId(order.id, invoice.id);
res.redirect(303, invoice.checkout_url);
});$invoice = $cp->createInvoice([/* comme à l’étape 1 */], 'order-' . $order['id']);
save_invoice_id($order['id'], $invoice['id']);
header('Location: ' . $invoice['checkout_url'], true, 303);
exit;# Flask
@app.post("/checkout")
def checkout():
order = create_order(request)
invoice = cp.create_invoice({...}, f"order-{order.id}")
save_invoice_id(order.id, invoice["id"])
return redirect(invoice["checkout_url"], code=303)http.Redirect(w, r, inv.CheckoutURL, http.StatusSeeOther)import { verifyWebhook } from "./cryptopay.js";
app.post("/webhooks/coinetic", express.raw({ type: "application/json" }), async (req, res) => {
let event;
try { event = verifyWebhook(process.env.WEBHOOK_SECRET, req.headers, req.body); }
catch (e) { return res.status(e.status ?? 400).end(); } // signature invalide
const inv = await cp.getInvoice(event.data.invoice_id); // le statut vient de l’API
if (inv.status === "paid" || inv.status === "overpaid") await fulfilOnce(inv.order_id);
res.sendStatus(200);
});$headers = array_change_key_case(getallheaders(), CASE_LOWER);
try {
$event = \Cryptopay\verify_webhook(getenv('WEBHOOK_SECRET'), $headers, file_get_contents('php://input'));
} catch (\Cryptopay\CryptopayException $e) {
http_response_code($e->status); exit;
}
$inv = $cp->getInvoice($event['data']['invoice_id']); // le statut vient de l’API
if (in_array($inv['status'], ['paid', 'overpaid'], true)) fulfil_once($inv['order_id']);
http_response_code(200);from cryptopay import verify_webhook, CryptopayError
@app.post("/webhooks/coinetic")
def webhook():
headers = {k.lower(): v for k, v in request.headers.items()}
try:
event = verify_webhook(os.environ["WEBHOOK_SECRET"], headers, request.get_data())
except CryptopayError as e:
return "", e.status
inv = cp.get_invoice(event["data"]["invoice_id"]) # le statut vient de l’API
if inv["status"] in ("paid", "overpaid"):
fulfil_once(inv["order_id"])
return "", 200Chaque client tient en un seul fichier sans dépendances : téléchargez celui de votre langage. Le pas-à-pas est dans le démarrage rapide.
REST et webhooks. Idempotent. Prévisible.
Une petite API difficile à mal utiliser. Vos clés sandbox sont disponibles dans le tableau de bord en quelques minutes.
Idempotency-Keysur chaque requête de modificationUne nouvelle tentative après un timeout renvoie la même facture au lieu d’en créer une seconde.- Signature HMAC-SHA256Le secret ne transite jamais sur le réseau ; l’horodatage et le nonce protègent contre le rejeu.
- Des montants en chaînesAucun float : des chaînes décimales et les unités minimales de l’actif.
- Valeurs de référence pour la signatureVotre propre client, dans n’importe quel langage, se vérifie en une minute.
POST /v1/invoices HTTP/1.1
Authorization: CP-HMAC key=ak_live_…, ts=1760000000, nonce=…, sig=…
Idempotency-Key: order-ORDER-1001
Content-Type: application/json
{"order_id":"ORDER-1001","price_amount":"49.99","price_currency":"USD"}{
"id": "inv_x7k2…",
"status": "created",
"checkout_url": "https://pay.coinetic.money/pay/inv_x7k2…#t=…",
"expires_at": "2026-10-12T15:30:00Z",
"livemode": true
}Tout ce qu’on met d’habitude six mois à développer
Page de paiement
QR code, montant exact, avertissement sur le réseau, statut en temps réel et minuteur. En russe et en anglais, thèmes clair et sombre.
Les fonds sur votre portefeuille
BTC, LTC, TRON : adresses dérivées de votre xpub. EVM : une adresse intelligente qui ne reverse que vers votre portefeuille. Solana : votre propre adresse.
Taux bloqué
Prix en USD ou en EUR. Le montant en crypto est calculé sur la médiane de trois plateformes d’échange et reste garanti 20 minutes. Pour l’USDT et l’USDC : 1:1.
Sous-paiement et surpaiement
Des statuts dédiés, un complément sur la même adresse, une tolérance pour les arrondis des wallets, et un paiement tardif en stablecoin crédité automatiquement.
Webhooks garantis
Signature HMAC, relances pendant 24 heures, ordre des événements par facture, journal des livraisons et renvoi depuis le tableau de bord.
Sandbox
La même API sans argent réel : les boutons « Payer le montant exact », « Sous-paiement », « Surpaiement » et « Moitié du montant » testent chaque scénario.
Nous ne pouvons pas dépenser votre argent. Techniquement.
Pour encaisser, seules les données publiques de vos portefeuilles sont nécessaires. Coinetic ne demande ni ne conserve jamais vos clés privées ou phrases de récupération. L’adresse remise au client est dérivée de votre clé, et nous le vérifions trois fois.
- Uniquement des clés publiquesxpub/zpub pour BTC, LTC et TRON, une adresse pour Solana, un portefeuille de collecte pour les réseaux EVM.
- Changement de portefeuille différéMot de passe, second facteur, e-mail et délai d’annulation, même si quelqu’un accède à votre tableau de bord.
- Commission facturée à partNous ne prélevons rien sur le paiement : une fois par mois, nous émettons une facture que vous réglez en crypto.
Coinetic face à un processeur de paiement custodial
| Processeur custodial | Coinetic | |
|---|---|---|
| Où sont les fonds après le paiement | Sur le compte du processeur jusqu’au retrait | Directement sur votre portefeuille |
| Qui peut dépenser les fonds | Le processeur | Vous seul |
| Retrait des fonds | Demande, plafonds, attente | Inutile |
| Commission | Généralement prélevée sur le paiement | Facture séparée une fois par mois |
| En cas de piratage du processeur | Les soldes de tous les marchands sont menacés | Nous n’avons aucune clé de vos fonds |
« Payé » uniquement après les confirmations du réseau
Seul l’observateur de la blockchain change le statut. Ni la page de paiement, ni le client, ni un paramètre d’URL. Si un bloc est annulé, vous recevez invoice.reorged.
createdFacture créée, le client choisit sa crypto
awaiting_paymentAdresse et montant exact attribués
detectedPaiement visible sur le réseau : ne livrez pas encore
confirmingInclus dans un bloc, confirmations n/N en cours
paidConfirmé : vous pouvez livrer la commande
Le nombre de confirmations attendu sur chaque réseau est indiqué dans la rubrique « Réseaux et actifs ».
Une seule intégration, toutes les plateformes
E-commerce
Un bouton « Payer en crypto » à côté de la carte bancaire. Le client paie depuis n’importe quel wallet ou directement depuis un exchange.
SaaS et produits numériques
Le champ metadata de la facture relie le paiement à l’utilisateur et à son abonnement. La livraison se fait automatiquement par webhook.
Applications et bots
iOS, Android, Telegram : ouvrez le lien de paiement, puis ramenez l’utilisateur via return_url.
Questions fréquentes
Qu’est-ce qu’un processeur de paiement crypto non custodial ?
C’est un service de paiement qui ne détient pas les fonds de ses clients. Coinetic attribue au client une adresse dérivée de votre clé publique, surveille la blockchain et vous notifie du paiement, mais les fonds arrivent directement sur votre portefeuille. Nous ne pouvons ni les dépenser ni les rediriger.
Combien de temps prend l’intégration ?
Côté code, une soirée : création de facture, redirection et gestionnaire de webhook. En amont : inscription dans le tableau de bord, portefeuilles de réception et test en sandbox. Le parcours complet étape par étape.
Quelles cryptomonnaies et quels réseaux sont pris en charge ?
BTC, LTC, ETH, BNB, POL, TRX, SOL, ainsi que l’USDT et l’USDC, sur 9 réseaux : Bitcoin, Litecoin, Ethereum, BNB Smart Chain, Polygon, Base, Arbitrum One, TRON et Solana. Liste complète.
Dois-je faire tourner des nœuds ou stocker des clés sur mon serveur ?
Non. La surveillance des réseaux, les adresses et les confirmations sont gérées par Coinetic. Votre serveur ne détient que la clé API servant à signer les requêtes et le secret du webhook.
Dans quelle devise dois-je fixer mes prix ?
En USD, EUR, USDT ou USDC. Le client voit le montant dans la crypto choisie ; pour BTC, ETH et les autres actifs volatils, le taux est bloqué pendant 20 minutes sur la base de la médiane de trois plateformes d’échange.
Quand un paiement est-il considéré comme payé ?
Uniquement après le nombre de confirmations requis par le réseau : par exemple 2 blocs sur Bitcoin et 19 blocs sur TRON. Le statut « payé » est attribué par l’observateur de la blockchain, pas par la page de paiement ni par le client. Si un bloc est annulé, vous recevez le webhook invoice.reorged.
Et si le client paie moins, ou sur un autre réseau ?
Un sous-paiement reçoit le statut underpaid et le client complète sur la même adresse. Un transfert sur un autre réseau EVM ou avec un faux token n’est pas crédité, mais il apparaît dans la facture : en savoir plus.
Peut-on rembourser un client ?
Oui. POST /v1/refunds ou un bouton du tableau de bord crée une demande. Le paiement étant arrivé sur votre portefeuille, vous envoyez vous-même le virement et enregistrez son hash ; sur les réseaux EVM, Coinetic le retrouve lui-même sur la blockchain et envoie le webhook refund.sent. Comment fonctionnent les remboursements.
Coinetic fonctionne-t-il avec les applications mobiles et les bots Telegram ?
Oui. Votre serveur crée la facture, et l’application ou le bot ouvre le lien de paiement dans le navigateur système. Le secret API n’est jamais embarqué dans l’application. Comment ouvrir la page de paiement.
Combien ça coûte ?
Un pourcentage uniquement sur les factures payées, sans frais d’intégration ; la commission fait l’objet d’une facture séparée une fois par mois. Tarifs et simulateur.
Votre premier paiement test en 15 minutes
Inscrivez-vous, récupérez une clé sandbox et effectuez un paiement sans argent réel.