orquestación de pagos · méxico

Todos los métodos de pago de México.
Una sola API.

Tarjeta y MSI, SPEI, DiMo, OXXO — Mercado Pago, Conekta, STP y más, detrás de una integración estilo Stripe. Sin custodia de fondos y con un ledger de doble partida que cuadra al centavo, todos los días.

Ya procesa los cobros de Antech y muvx.

curl · crear un cobro
POST /v1/payment_intents
{
  "amount_minor": 84900,
  "currency": "MXN",
  "payment_method_types": ["card", "spei", "oxxo"]
}
→ 201 · Idempotency-Key obligatoria · webhook firmado
Tarjeta · MSI — instante SPEI — minutos DiMo — minutos OXXO — 1–2 días

Por qué elegir Winal

Un solo contrato

Un PaymentIntent para todo: el método y el proveedor son configuración, no código. Cambia de procesador sin tocar tu integración.

Nunca pierdas una venta

Ruteo por prioridad y failover automático ante caídas del proveedor, con circuit breakers por conector. La caída de un procesador deja de ser tu caída.

Cuadra al centavo

Ledger inmutable de doble partida y conciliación diaria contra los reportes de cada proveedor. Si un peso no cuadra, lo sabes tú antes que nadie.

El cierre del día, cerrado.

Cada cobro se verifica contra el proveedor y contra tu ledger. El anillo gira mientras procesa; el punto aparece cuando todo cuadró.

Hoy · Antech POS
$128,450.00 MXN
Conciliación
● Cerrada

¿Plataforma o ISV? Winal con tu marca.

Ofrece pagos a tus clientes con tu propia marca sobre nuestros rieles: white-label con precios transparentes en pesos, sin mínimos enterprise.

Hablemos
desarrolladores

Intégralo en minutos, sin build ni dependencias

winal.js son ~500 líneas vanilla: sin npm install, sin bundlers. Tu servidor crea el PaymentIntent con tu clave sk_test_…, tu página lo confirma con winal.js — que dibuja el QR, la CLABE o la referencia según el método — y tu servidor recibe la verdad desde el webhook firmado.

html · confirmar con winal.js
<script src="https://<host>/js/winal.js"></script>
<div id="winal-mount"></div>
<script>
  const winal = Winal({ baseUrl: "https://<host>" });

  winal.confirmPayment({
    clientSecret: "pi_secret_9f...",
    intentId: "5b6b8b3e-...-a1c2",
    paymentMethod: "card",
    paymentToken: "tok_sim_ok",
    mountEl: document.getElementById("winal-mount"),
    onStatus: (status) => console.log("estado:", status),
  }).then((intent) => {
    if (intent.status === "succeeded") alert("¡Pago exitoso!");
  });
</script>
  • Idempotency-Key obligatoria en todo POST que mueve dinero — incluido el intento inicial.
  • client_secret: token de capacidad de corto plazo; solo confirma o consulta ese PaymentIntent, nunca autentica nada más.
  • Cada webhook llega firmado (Gateway-Signature, HMAC) — mismo esquema que Stripe-Signature.

Ver la guía completa (quickstart) →