- No custodial
- El dinero, directo a su billetera
- 9 redes · USDT y USDC
Acepte cripto.
El dinero, directo a su billetera.
Procesamiento de pagos cripto listo para su web, app o bot. Cree una factura con una sola solicitud, envíe al cliente a nuestra página de pago y reciba un webhook cuando la red confirme el pago.
- Sandbox sin dinero real
- Clientes para Node, PHP, Python y Go
- Webhooks firmados con reintentos
a1f3…9c0e · TRONElija la moneda
Transfiera el importe exacto
Pago detectado
Esperando las confirmaciones de la red TRON
Confirmaciones
TRON: 19 bloques, alrededor de un minuto
Pagada
49.99 USDT ya en la billetera de la tienda
invoice.paid → su servidor 200 OKUsted vende. Nosotros vigilamos la cadena de bloques.
Coinetic asigna al cliente una dirección propia, detecta el pago, espera el número de confirmaciones necesario y solo entonces comunica a su servidor que la factura está «pagada». El dinero va de la billetera del cliente a la suya, sin pasar por nosotros.
9 redes. Su cliente paga con lo que ya tiene
Monedas nativas, USDT y USDC. El token solo se acredita por la dirección de contrato de la lista blanca: un «USDT» falso no cambia el estado.
Tres pasos y ya acepta cripto
Sin nodos, sin billeteras en el servidor y sin contratos inteligentes por su parte. Nosotros nos encargamos de la página de pago, los tipos de cambio, las direcciones y las confirmaciones.
import { CoineticClient } from "./cryptopay.js";
const cp = new CoineticClient({
baseUrl: "https://pay.coinetic.money",
keyId: process.env.API_KEY,
secret: process.env.API_SECRET, // solo en el servidor
});
const invoice = await cp.createInvoice({
order_id: "ORDER-1001",
price_amount: "49.99", // cadena, no número
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: enviamos al cliente a la página de pago de Coinetic
app.post("/checkout", async (req, res) => {
const order = await createOrder(req);
const invoice = await cp.createInvoice({ /* como en el paso 1 */ }, `order-${order.id}`);
await saveInvoiceId(order.id, invoice.id);
res.redirect(303, invoice.checkout_url);
});$invoice = $cp->createInvoice([/* como en el paso 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(); } // firma no válida
const inv = await cp.getInvoice(event.data.invoice_id); // el estado, de la 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']); // el estado, de la 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"]) # el estado, de la API
if inv["status"] in ("paid", "overpaid"):
fulfil_once(inv["order_id"])
return "", 200Cada cliente es un único archivo sin dependencias: descárguelo para su lenguaje. La guía paso a paso está en el inicio rápido.
REST y webhooks. Idempotente. Predecible.
Una API pequeña y difícil de usar mal. Obtenga las claves del sandbox en el panel en un par de minutos.
Idempotency-Keyen cada solicitud que modifica datosUn reintento tras un tiempo de espera agotado devuelve la misma factura en lugar de crear otra.- Firma HMAC-SHA256El secreto no viaja por la red; la marca de tiempo y el nonce protegen contra repeticiones.
- Importes como cadenasNada de float: cadenas decimales y unidades mínimas del activo.
- Valores de firma de referenciaValide su propio cliente en cualquier lenguaje en un minuto.
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
}Todo lo que normalmente lleva medio año desarrollar
Página de pago
Código QR, importe exacto, aviso de red, estado en tiempo real y temporizador. En ruso e inglés, con tema claro y oscuro.
El dinero, en su billetera
BTC, LTC y TRON: direcciones derivadas de su xpub; EVM: una dirección inteligente que solo transfiere a su billetera; Solana: su propia dirección.
Tipo de cambio fijado
Precio en USD o EUR. El importe en la moneda se calcula con la mediana de tres exchanges y se mantiene 20 minutos. Para USDT y USDC, 1:1.
Pago insuficiente y sobrepago
Estados específicos, pago complementario a la misma dirección, tolerancia para los redondeos de las billeteras y acreditación automática de pagos tardíos en stablecoins.
Webhooks garantizados
Firma HMAC, reintentos durante 24 horas, eventos ordenados por factura, registro de entregas y reenvío desde el panel.
Sandbox
La misma API sin dinero real: los botones «Pagar importe exacto», «Pago insuficiente», «Sobrepago» y «Mitad del importe» prueban cada escenario.
No podemos gastar su dinero. Técnicamente imposible.
Para cobrar solo se necesitan los datos públicos de sus billeteras. Coinetic no solicita ni almacena claves privadas ni frases semilla. La dirección que recibe el cliente se deriva de su clave, y lo comprobamos tres veces.
- Solo claves públicasxpub/zpub para BTC, LTC y TRON, una dirección para Solana y una billetera de recaudación para las redes EVM.
- Cambiar de billetera lleva un tiempo de esperaContraseña, segundo factor, aviso por correo y un plazo para cancelar, incluso si alguien entra en su panel.
- Comisión por separadoNo retenemos ningún porcentaje del pago: le enviamos una factura al mes y usted la paga en cripto.
En qué se diferencia Coinetic de una pasarela custodial
| Pasarela custodial | Coinetic | |
|---|---|---|
| Dónde está el dinero tras el pago | En la cuenta de la pasarela hasta el retiro | Directamente en su billetera |
| Quién puede gastar los fondos | La pasarela | Solo usted |
| Retiro de fondos | Solicitud, límites, espera | No hace falta |
| Comisión | Normalmente se descuenta del pago | En una factura aparte, una vez al mes |
| Si la pasarela sufre un ataque | Peligra el saldo de todos los comercios | No tenemos las claves de su dinero |
«Pagada», solo tras las confirmaciones de la red
El estado solo lo cambia el monitor de la cadena de bloques. No la página de pago, ni el cliente, ni un parámetro de la URL. Si un bloque se revierte, recibirá invoice.reorged.
createdFactura creada; el cliente elige la moneda
awaiting_paymentSe asignan la dirección y el importe exacto
detectedEl pago es visible en la red; aún no se entrega el pedido
confirmingIncluido en un bloque, confirmaciones n/N en curso
paidConfirmado: ya puede entregar el pedido
Cuántas confirmaciones esperamos en cada red: consulte la sección «Redes y activos».
Una integración para cualquier plataforma
Tiendas online
Un botón «Pagar con cripto» junto a las tarjetas. El cliente paga desde cualquier billetera o directamente desde un exchange.
SaaS y productos digitales
Con metadata en la factura, el pago queda vinculado al usuario y al plan. La entrega es automática con el webhook.
Apps y bots
iOS, Android, Telegram: abra el enlace de pago y devuelva al usuario mediante return_url.
Preguntas frecuentes
¿Qué es una pasarela de pagos cripto no custodial?
Es una pasarela que no retiene el dinero de sus clientes. Coinetic asigna al cliente una dirección derivada de su clave pública, vigila la cadena de bloques y le notifica el pago, pero los fondos llegan directamente a su billetera. No podemos gastarlos ni desviarlos.
¿Cuánto tiempo lleva la integración?
El código, una tarde: creación de la factura, redirección y gestor del webhook. Antes, el registro en el panel, las billeteras de cobro y las pruebas en el sandbox. Todo el proceso paso a paso.
¿Qué criptomonedas y redes se admiten?
BTC, LTC, ETH, BNB, POL, TRX y SOL, además de USDT y USDC, en 9 redes: Bitcoin, Litecoin, Ethereum, BNB Smart Chain, Polygon, Base, Arbitrum One, TRON y Solana. Lista completa.
¿Tengo que montar nodos o guardar claves en mi servidor?
No. La monitorización de las redes, las direcciones y las confirmaciones corren a cargo de Coinetic. En su servidor solo hay una clave de API para firmar las solicitudes y el secreto del webhook.
¿En qué moneda fijo el precio?
En USD, EUR, USDT o USDC. El cliente ve el importe en la moneda que elija; para BTC, ETH y otros activos volátiles, el tipo de cambio se fija durante 20 minutos con la mediana de tres exchanges.
¿Cuándo se considera pagada una factura?
Solo tras el número de confirmaciones de red necesario: por ejemplo, 2 bloques en Bitcoin y 19 bloques en TRON. El estado «pagada» lo establece el monitor de la cadena de bloques, no la página de pago ni el cliente. Si un bloque se revierte, recibirá el webhook invoice.reorged.
¿Y si el cliente paga de menos o por otra red?
Un pago insuficiente recibe el estado underpaid y el cliente completa el importe en la misma dirección. Una transferencia por otra red EVM o con un token falso no se acredita, pero aparece en la factura: más información.
¿Puedo reembolsar a un cliente?
Sí. POST /v1/refunds o un botón del panel crean la solicitud. Como el pago llegó a su billetera, usted mismo envía la transferencia y registra el hash; en las redes EVM, Coinetic la localiza por sí mismo en la cadena de bloques y envía el webhook refund.sent. Cómo funcionan los reembolsos.
¿Coinetic funciona con apps móviles y bots de Telegram?
Sí. Su servidor crea la factura y la app o el bot abre el enlace de pago en el navegador del sistema. El secreto de la API nunca llega a la app. Cómo abrir la página de pago.
¿Cuánto cuesta?
Un porcentaje solo sobre las facturas pagadas, sin cuota de alta; la comisión se factura aparte una vez al mes. Precios y calculadora.
Su primer pago de prueba, en 15 minutos
Regístrese, obtenga una clave del sandbox y realice un pago sin dinero real.