Inicio Rápido

Crea tu primer link de pago en menos de 5 minutos. Esta guía te llevará paso a paso desde obtener tus credenciales hasta generar tu primer cobro.

Prerequisitos

Antes de comenzar, necesitas:

  • Una cuenta de negocio en NIIO (solicítala a tu contacto en NIIO)
  • Tu perfil de merchant configurado y aprobado
  • Tus credenciales de API (API Key y API Secret), entregadas por NIIO
Obtén tus API Keys
Ve a Dashboard → Configuración → API Keys para crear tus credenciales. Guarda el API Secret de forma segura, solo se muestra una vez.

Paso 1: Configura tus credenciales

Tus solicitudes a la API deben incluir dos headers de autenticación:

Headers de Autenticación
X-Api-Key: tu_api_key_aqui
X-Api-Secret: tu_api_secret_aqui
Content-Type: application/json
Mantén tus credenciales seguras
Nunca expongas tu API Secret en código del lado del cliente. Todas las llamadas a la API deben hacerse desde tu servidor backend.

Paso 2: Crea tu primer link de pago

Envía una solicitud POST al endpoint /v1/collect con los datos del cobro:

curl -X POST https://api.prod.niiopay.com/api/v1/collect \
  -H "X-Api-Key: tu_api_key" \
  -H "X-Api-Secret: tu_api_secret" \
  -H "Content-Type: application/json" \
  -d '{
    "reference": "ORDER-001",
    "amount": 50000,
    "currency": "COP",
    "description": "Compra en Mi Tienda",
    "customerName": "Juan Pérez",
    "customerEmail": "juan@email.com",
    "customerDocType": "CC",
    "customerDocNumber": "1234567890",
    "expirationMinutes": 60,
    "callbackUrl": "https://mitienda.com/gracias"
  }'
const response = await fetch('https://api.prod.niiopay.com/api/v1/collect', {
  method: 'POST',
  headers: {
    'X-Api-Key': process.env.NIIO_API_KEY,
    'X-Api-Secret': process.env.NIIO_API_SECRET,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    reference: 'ORDER-001',
    amount: 50000,
    currency: 'COP',
    description: 'Compra en Mi Tienda',
    customerName: 'Juan Pérez',
    customerEmail: 'juan@email.com',
    customerDocType: 'CC',
    customerDocNumber: '1234567890',
    expirationMinutes: 60,
    callbackUrl: 'https://mitienda.com/gracias',
  }),
});

const order = await response.json();
console.log(order.data.collectUrl);
// Redirige al cliente a esta URL
import requests
import os

response = requests.post(
    'https://api.prod.niiopay.com/api/v1/collect',
    headers={
        'X-Api-Key': os.environ['NIIO_API_KEY'],
        'X-Api-Secret': os.environ['NIIO_API_SECRET'],
        'Content-Type': 'application/json',
    },
    json={
        'reference': 'ORDER-001',
        'amount': 50000,
        'currency': 'COP',
        'description': 'Compra en Mi Tienda',
        'customerName': 'Juan Pérez',
        'customerEmail': 'juan@email.com',
        'customerDocType': 'CC',
        'customerDocNumber': '1234567890',
        'expirationMinutes': 60,
        'callbackUrl': 'https://mitienda.com/gracias',
    }
)

order = response.json()
print(order['data']['collectUrl'])
# Redirige al cliente a esta URL
<?php
$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.prod.niiopay.com/api/v1/collect',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'X-Api-Key: ' . getenv('NIIO_API_KEY'),
        'X-Api-Secret: ' . getenv('NIIO_API_SECRET'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'reference' => 'ORDER-001',
        'amount' => 50000,
        'currency' => 'COP',
        'description' => 'Compra en Mi Tienda',
        'customerName' => 'Juan Pérez',
        'customerEmail' => 'juan@email.com',
        'customerDocType' => 'CC',
        'customerDocNumber' => '1234567890',
        'expirationMinutes' => 60,
        'callbackUrl' => 'https://mitienda.com/gracias',
    ]),
]);

$response = curl_exec($ch);
$order = json_decode($response, true);

echo $order['data']['collectUrl'];
// Redirige al cliente a esta URL

Respuesta exitosa

201 Created
{
  "success": true,
  "data": {
    "id": "clxyz123abc456def",
    "reference": "ORDER-001",
    "amount": 50000,
    "currency": "COP",
    "status": "PENDING",
    "collectUrl": "https://pay.niiopay.com/c/clxyz123abc456def",
    "expiresAt": "2024-01-15T13:00:00.000Z",
    "createdAt": "2024-01-15T12:00:00.000Z"
  }
}

Paso 3: Redirige al cliente

Usa la URL collectUrl de la respuesta para redirigir a tu cliente a la página de pago:

// Opción 1: Redirección completa
window.location.href = order.data.collectUrl;

// Opción 2: Abrir en nueva ventana
window.open(order.data.collectUrl, '_blank');

El cliente verá una página de pago donde puede seleccionar su método preferido (PSE o transferencia bancaria) y completar el pago.

Paso 4: Verifica el estado

Consulta el estado de la orden en cualquier momento usando el endpoint GET:

curl -X GET https://api.prod.niiopay.com/api/v1/collect/clxyz123abc456def \
  -H "X-Api-Key: tu_api_key" \
  -H "X-Api-Secret: tu_api_secret"

Respuesta

{
  "success": true,
  "data": {
    "id": "clxyz123abc456def",
    "reference": "ORDER-001",
    "amount": 50000,
    "currency": "COP",
    "status": "COMPLETED",
    "selectedMethod": "PSE",
    "customer": {
      "name": "Juan Pérez",
      "email": "juan@email.com",
      "documentType": "CC",
      "documentNumber": "1234567890"
    },
    "paidAt": "2024-01-15T12:15:00.000Z",
    "createdAt": "2024-01-15T12:00:00.000Z"
  }
}

Paso 5: Recibe el webhook (opcional)

Si configuraste un webhookUrl en tu cuenta de merchant, NIIO enviará una notificación POST cuando el pago se complete o falle:

{
  "event": "payment.completed",
  "data": {
    "id": "clxyz123abc456def",
    "reference": "ORDER-001",
    "amount": 50000,
    "currency": "COP",
    "status": "COMPLETED",
    "paidAt": "2024-01-15T12:15:00.000Z",
    "metadata": {}
  },
  "timestamp": "2024-01-15T12:15:01.000Z"
}
¡Listo!
Ya tienes tu integración básica funcionando. Consulta la Referencia de API para ver todos los parámetros disponibles.

Siguientes pasos