Back to 0fee
0fee

Una API, 53+ proveedores, 200+ países

Cómo 0fee.dev unifica más de 53 proveedores de pago en más de 200 países en una sola API. Ejemplos de código, lógica de enrutamiento y cobertura. Por Juste A. Gnimavo.

Thales & Claude | March 30, 2026 11 min 0fee
EN/ FR/ ES
api-designsdkpayment-providersdeveloper-experienceglobal-coverage

La promesa central de 0fee.dev es una simplicidad radical: una integración de API reemplaza docenas de implementaciones específicas por proveedor. Detrás de esa simplicidad hay un motor de enrutamiento que mapea cada solicitud de pago al proveedor óptimo basándose en país, moneda, método de pago, costo y métricas de rendimiento en tiempo real. Este artículo recorre el mapa completo de proveedores, la lógica de enrutamiento, la experiencia del SDK y el código que realmente escribes.

El mapa completo de proveedores

0fee se integra con más de 53 proveedores de pago organizados por región y capacidad:

Proveedores globales

ProveedorCoberturaMétodosFortalezas
Stripe46+ paísesTarjetas, billeteras (Apple Pay, Google Pay), SEPA, ACHMejor procesamiento de tarjetas globalmente
PayPal200+ paísesSaldo PayPal, tarjetas vía PayPalConfianza del comprador ubicua
Wise (TransferWise)80+ paísesTransferencias bancarias, multidivisaTransferencias transfronterizas de bajo costo
Adyen60+ paísesTarjetas, billeteras, métodos localesGrado empresarial, omnicanal
SquareEE. UU., CA, UK, AU, JP, IE, FR, ESTarjetas, Cash AppPresencial + en línea

África -- Dinero móvil

ProveedorPaísesMétodos clave
PawaPay21+ paísesM-Pesa, MTN MoMo, Airtel Money, Orange Money, Tigo Pesa, Vodacom
Hub2Costa de Marfil, Senegal, Mali, Burkina Faso, Togo, Benín, Guinea, CamerúnOrange Money, MTN MoMo, Moov Money, Wave
PaiementProCosta de Marfil, Senegal, Burkina Faso, Togo, BenínDinero móvil + Visa/Mastercard
BUICosta de Marfil, Senegal, Mali, Burkina FasoDinero móvil, tarjetas
PaystackNigeria, Ghana, Sudáfrica, KeniaTarjetas, transferencia bancaria, USSD, dinero móvil
Flutterwave30+ países africanosTarjetas, dinero móvil, transferencias bancarias, USSD
Cellulant (Tingg)35+ países africanosDinero móvil, tarjetas, transferencias bancarias
CinetPay15+ países africanos francófonosDinero móvil, tarjetas
CampayCamerúnMTN MoMo, Orange Money
NotchPayCamerún, Costa de Marfil, SenegalDinero móvil, tarjetas

Asia-Pacífico

ProveedorPaísesMétodos clave
RazorpayIndiaUPI, tarjetas, billeteras, banca en línea
PhonePeIndiaUPI
GCashFilipinasBilletera electrónica
GrabPaySudeste asiáticoBilletera electrónica
PromptPayTailandiaTransferencia bancaria
LINE PayJapón, Taiwán, TailandiaBilletera electrónica
AlipayChina, globalBilletera electrónica
WeChat PayChina, globalBilletera electrónica

América Latina

ProveedorPaísesMétodos clave
MercadoPagoArgentina, Brasil, México, Chile, Colombia, UruguayTarjetas, Pix, Boleto, billeteras
PagSeguroBrasilPix, Boleto, tarjetas
OXXOMéxicoVoucher de efectivo
ConektaMéxicoTarjetas, OXXO, SPEI

Oriente Medio y Norte de África

ProveedorPaísesMétodos clave
Tap PaymentsEAU, Arabia Saudita, Kuwait, Baréin, Catar, Omán, Egipto, JordaniaTarjetas, Apple Pay, billeteras
FawryEgiptoEfectivo, billeteras, tarjetas
HyperPayArabia Saudita, EAU, Jordania, EgiptoTarjetas, mada, Apple Pay

Cobertura por países

La siguiente tabla muestra una muestra representativa de la cobertura por países. La lista completa abarca más de 200 países:

RegiónPaísesMétodos principalesProveedores principales
NorteaméricaEE. UU., CATarjetas, ACH, billeterasStripe, PayPal, Square
Europa OccidentalUK, FR, DE, ES, IT, NL, BETarjetas, SEPA, iDEAL, BancontactStripe, Adyen, PayPal
Europa OrientalPL, CZ, RO, HUTarjetas, transferencias localesStripe, Adyen
África Occidental (francófona)CI, SN, ML, BF, TG, BJ, GN, CMOrange Money, MTN MoMo, Wave, MoovHub2, PaiementPro, PawaPay
África Occidental (anglófona)NG, GHTarjetas, transferencia bancaria, MTN MoMoPaystack, Flutterwave
África OrientalKE, TZ, UG, RWM-Pesa, MTN MoMo, Airtel MoneyPawaPay, Flutterwave
África AustralZA, MZ, ZM, MWTarjetas, dinero móvilPaystack, PawaPay
África CentralCM, CD, CGMTN MoMo, Orange Money, AirtelPawaPay, Hub2
Asia del SurINUPI, tarjetas, billeterasRazorpay
Sudeste AsiáticoPH, TH, SG, MY, IDBilleteras electrónicas, tarjetas, transferencia bancariaGrabPay, varios locales
Asia OrientalCN, JPAlipay, WeChat Pay, tarjetasAlipay, LINE Pay
América LatinaBR, MX, AR, CO, CLPix, Boleto, OXXO, tarjetasMercadoPago, Conekta
MENAAE, SA, EG, JOTarjetas, mada, billeterasTap Payments, Fawry

Cómo funciona el enrutamiento

Cuando tu aplicación envía una solicitud de pago a 0fee, el motor de enrutamiento ejecuta un proceso de decisión en múltiples pasos:

Paso 1: Detección de país

El campo country en la solicitud (ISO 3166-1 alfa-2) determina qué proveedores son elegibles. Cada proveedor tiene una lista registrada de países soportados.

Paso 2: Coincidencia de método

El campo method (ej., PAYIN_ORANGE_CI, PAYIN_CARD) filtra los proveedores a aquellos que soportan el método de pago solicitado en el país dado.

Paso 3: Verificación de credenciales

El motor verifica si la aplicación del comerciante tiene credenciales válidas y activas para cada proveedor elegible. Un proveedor sin credenciales configuradas es excluido.

Paso 4: Puntuación del proveedor

Cada proveedor restante recibe una puntuación compuesta basada en:

pythondef calculate_provider_score(
    provider: Provider,
    app_config: AppRoutingConfig
) -> float:
    # Tasa de éxito en tiempo real (últimas 24 horas)
    success_weight = 0.35
    success_score = provider.metrics.success_rate_24h

    # Latencia promedio (menor es mejor)
    latency_weight = 0.20
    latency_score = 1.0 - min(provider.metrics.avg_latency_ms / 10000, 1.0)

    # Costo de transacción (menor es mejor)
    cost_weight = 0.25
    cost_score = 1.0 - min(provider.fee_percent / 5.0, 1.0)

    # Prioridad del comerciante (configurada en el panel)
    priority_weight = 0.20
    priority_score = app_config.get_priority(provider.id) / 10.0

    return (
        success_weight * success_score +
        latency_weight * latency_score +
        cost_weight * cost_score +
        priority_weight * priority_score
    )

Paso 5: Selección y failover

El proveedor con la puntuación más alta es seleccionado como principal. El segundo y tercero quedan en cola como objetivos de failover. Si el principal devuelve un error no reintentable (proveedor caído, mantenimiento, límite de tasa), el motor reintenta automáticamente con el siguiente proveedor.

Solicitud: Pagar 5.000 XOF vía Orange Money en CI
  |
  +-> Puntuación: Hub2 (0,92) -- PRINCIPAL
  +-> Puntuación: PaiementPro (0,87) -- FAILOVER 1
  +-> Puntuación: PawaPay (0,81) -- FAILOVER 2
  |
  Hub2 procesa exitosamente -> listo
  Hub2 falla (503) -> reintentar PaiementPro -> éxito

Este mecanismo de failover es invisible para el comerciante. Envían una solicitud y reciben una respuesta. La lógica de enrutamiento y reintento es completamente interna.

La experiencia del SDK

0fee proporciona SDKs en siete lenguajes. Cada SDK envuelve la API REST con modelos tipados, reintentos automáticos y patrones idiomáticos para cada lenguaje.

Instalación

bash# Node.js / TypeScript
npm install zerofee

# Python
pip install zerofee

# PHP
composer require zerofee/zerofee-php

# Ruby
gem install zerofee

# Go
go get github.com/zerofee/zerofee-go

# Java
// Maven
<dependency>
  <groupId>dev.zerofee</groupId>
  <artifactId>zerofee-java</artifactId>
  <version>1.0.0</version>
</dependency>

# C#
dotnet add package ZeroFee

Ejemplo en TypeScript: flujo completo de pago

typescriptimport { ZeroFee } from 'zerofee';

const zf = new ZeroFee({
  apiKey: process.env.ZEROFEE_API_KEY!,
  environment: 'live'  // o 'test'
});

// 1. Crear un pago
const payment = await zf.payments.create({
  amount: 25_00,          // $25,00 en centavos
  currency: 'USD',
  country: 'US',
  method: 'PAYIN_CARD',
  customer: {
    email: '[email protected]',
    name: 'John Doe'
  },
  metadata: {
    orderId: 'order_12345',
    productName: 'Pro Plan'
  },
  returnUrl: 'https://yourapp.com/payment/success',
  cancelUrl: 'https://yourapp.com/payment/cancel'
});

console.log(payment.checkoutUrl);
// -> https://checkout.0fee.dev/pay_abc123

// 2. Verificar estado del pago
const status = await zf.payments.get(payment.id);
console.log(status.status);
// -> 'pending' | 'completed' | 'failed' | 'expired'

// 3. Emitir un reembolso
const refund = await zf.refunds.create({
  paymentId: payment.id,
  amount: 25_00,  // reembolso total
  reason: 'Customer requested cancellation'
});

Ejemplo en Python: pago con dinero móvil

pythonfrom zerofee import ZeroFee

zf = ZeroFee(api_key="zf_live_...")

# Crear un pago Orange Money en Costa de Marfil
payment = zf.payments.create(
    amount=10000,           # 10.000 XOF
    currency="XOF",
    country="CI",
    method="PAYIN_ORANGE_CI",
    customer={"phone": "+2250700112233"},
    metadata={"invoice_id": "INV-2026-001"},
    return_url="https://yourapp.com/callback"
)

print(f"Payment ID: {payment.id}")
print(f"Status: {payment.status}")
# El cliente recibe USSD push en su teléfono

# Listar pagos recientes con filtros
payments = zf.payments.list(
    country="CI",
    status="completed",
    limit=50,
    offset=0
)

for p in payments.data:
    print(f"{p.id}: {p.amount} {p.currency} - {p.status}")

Manejo de webhooks (Express.js)

typescriptimport express from 'express';
import { ZeroFee } from 'zerofee';

const app = express();
const zf = new ZeroFee({ apiKey: process.env.ZEROFEE_API_KEY! });

app.post('/webhooks/zerofee', express.raw({ type: 'application/json' }), (req, res) => {
  const signature = req.headers['x-zerofee-signature'] as string;

  try {
    const event = zf.webhooks.verify(req.body, signature);

    switch (event.type) {
      case 'payment.completed':
        // Cumplir el pedido
        fulfillOrder(event.data.metadata.orderId);
        break;

      case 'payment.failed':
        // Notificar al cliente
        notifyPaymentFailed(event.data.customer.email);
        break;

      case 'refund.completed':
        // Actualizar estado del pedido
        markOrderRefunded(event.data.paymentId);
        break;
    }

    res.status(200).json({ received: true });
  } catch (err) {
    console.error('Webhook verification failed:', err);
    res.status(400).json({ error: 'Invalid signature' });
  }
});

Métodos de pago disponibles por categoría

0fee soporta 117 métodos de pago organizados en cinco categorías:

Tarjetas (global)

MétodoDescripción
PAYIN_CARDVisa, Mastercard, Amex, Discover, JCB, UnionPay
PAYIN_CARD_3DSTarjetas con autenticación 3D Secure obligatoria

Dinero móvil (África)

MétodoPaíses
PAYIN_ORANGE_*CI, SN, ML, BF, CM
PAYIN_MTN_*GH, CM, UG, CI, BJ
PAYIN_MPESA_*KE, TZ
PAYIN_WAVE_*SN, CI
PAYIN_MOOV_*CI, BJ, TG
PAYIN_AIRTEL_*UG, TZ, KE
PAYIN_VODACOM_*TZ, MZ
PAYIN_TIGO_*TZ

Transferencias bancarias

MétodoPaíses
PAYIN_SEPAUE/EEE
PAYIN_ACHEE. UU.
PAYIN_WIREGlobal
PAYIN_PIXBR
PAYIN_SPEIMX
PAYIN_IDEALNL
PAYIN_BANCONTACTBE
PAYIN_UPIIN

Billeteras digitales

MétodoDisponibilidad
PAYIN_APPLE_PAYEE. UU., UK, UE, AU, CA, SG, HK, JP
PAYIN_GOOGLE_PAYEE. UU., UK, UE, AU, CA, SG, IN
PAYIN_PAYPAL200+ países
PAYIN_ALIPAYCN, global
PAYIN_WECHAT_PAYCN, global
PAYIN_GRABPAYSG, MY, PH, TH
PAYIN_GCASHPH

Efectivo y vouchers

MétodoPaíses
PAYIN_OXXOMX
PAYIN_BOLETOBR
PAYIN_FAWRYEG

Precios

0fee cobra un 0,99% fijo por transacción exitosa. Eso es todo.

Característica0fee.devCompetidores típicos
Tarifa por transacción0,99%2,5% - 3,5%
Tarifa mensual$0$0 - $500+
Tarifa de configuración$0$0 - personalizado
Recargo del proveedorTransferido al costoFrecuentemente incrementado
Compromiso mínimoNingunoFrecuentemente anual
Cobertura en África50+ paísesLimitada o ninguna

La tarifa de 0,99% es el costo de la capa de orquestación. Las tarifas del proveedor (el 2,9% de Stripe, las tarifas variables de PawaPay, etc.) se transfieren al costo. El comerciante ve un desglose transparente: tarifa de orquestación + tarifa del proveedor = costo total por transacción.

Comenzar: cinco minutos para pagos globales

bash# 1. Instalar el SDK
npm install zerofee

# 2. Obtener tu clave de API en dashboard.0fee.dev

# 3. Comenzar a aceptar pagos
typescriptimport { ZeroFee } from 'zerofee';

const zf = new ZeroFee({ apiKey: 'zf_test_...' });

// Aceptar un pago desde cualquier lugar del mundo
const payment = await zf.payments.create({
  amount: 1000,
  currency: 'USD',
  country: 'US',
  method: 'PAYIN_CARD',
  customer: { email: '[email protected]' },
  returnUrl: 'https://localhost:3000/success'
});

console.log(`Checkout: ${payment.checkoutUrl}`);

El modo de prueba usa proveedores simulados que reflejan el comportamiento real del proveedor -- incluyendo flujos asíncronos de dinero móvil con retrasos configurables y escenarios de fallo. Cuando estés listo para ir a producción, cambia zf_test_ por zf_live_, configura tus credenciales de proveedor en el panel de control y tu integración está lista para producción.

Una API. Cincuenta y tres proveedores. Doscientos países. Cero tarifas mensuales.


Este artículo es parte de la serie "Cómo construimos 0fee.dev". 0fee.dev es un orquestador de pagos que cubre más de 53 proveedores en más de 200 países, construido por Juste A. GNIMAVO y Claude desde Abiyán sin ningún ingeniero humano. Sigue la serie para conocer la historia completa de construcción.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles