Verificar Pagos vía API

    Integra la validación automática de transferencias en tu sistema.

    🛡️ Fraude Cero

    Elimina los comprobantes falsos. La verificación se realiza directamente contra el banco.

    Respuesta Inmediata

    Tus clientes reciben confirmación en segundos, mejorando la experiencia de compra.

    El endpoint de verificación te permite consultar si una transferencia específica ha sido recibida en tu cuenta bancaria. Dependiendo del banco, algunos campos pueden ser opcionales o requeridos.

    Parámetros Requeridos

    Los campos enviados dependen del banco. Consulta la referencia completa de campos dinámicos para ver el formato exacto, tipos y ejemplos de cada campo.

    • userBankId (URL param): El ID de la cuenta bancaria en Pabilo donde se recibió el dinero. Ver cómo copiarlo desde el Dashboard →
    • bank_reference (Body): Los dígitos de la referencia bancaria (requerido).
    • amount (Body): El monto de la transferencia. Opcional para Banco de Venezuela (Personas) y Provincial. Requerido para otros bancos.
    • dni_pagador (Body): Objeto con la cédula del pagador. Requerido para cuentas de empresa (Venezuela, Mercantil). Ejemplo: { "dni_type": "V", "dni_number": "123456" }.
    • phone_pagador (Body): Teléfono del pagador. Requerido para operaciones Pago Móvil en Mercantil y cuentas de empresa.
    • bank_origin (Body): Código del banco de origen. Requerido para cuentas de empresa.
    • fecha_pago (Body): Fecha del pago en formato YYYY-MM-DD. Opcional para Mercantil y Venezuela Empresa (por defecto toma la fecha actual).
    • movement_type (Body): Tipo de movimiento a consultar (requerido para la mayoría). Valores soportados según el banco:
      • Binance, Banesco, Banco de Venezuela (Personas/Jurídico), Notificaciones, Test: Soportan GENERIC (Recomendado).
      • Banco Mercantil y Banco de Venezuela: Soportan MOVIL_PAY (Pago Móvil) y TRANSFER (Transferencia).

    Ejemplo de Código

    cURL (Generic)

    curl -X POST https://api.pabilo.app/userbankpayment/USER_BANK_ID/betaserio \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer TU_API_KEY" \
      -d '{
        "bank_reference": "67890",
        "amount": 0,
        "movement_type": "GENERIC",
        "fecha_pago": "2026-08-03"
      }'

    cURL (Pago Móvil - Mercantil/Venezuela)

    curl -X POST https://api.pabilo.app/userbankpayment/USER_BANK_ID/betaserio \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer TU_API_KEY" \
      -d '{
        "bank_reference": "123456",
        "amount": 100.00,
        "dni_pagador": { "dni_type": "V", "dni_number": "12345678" },
        "phone_pagador": "04141234567",
        "bank_origin": "0102",
        "movement_type": "MOVIL_PAY"
      }'

    JavaScript (Fetch)

    const verifyPayment = async () => {
      const response = await fetch('https://api.pabilo.app/userbankpayment/UB_ID/betaserio', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': 'Bearer TU_API_KEY'
        },
        body: JSON.stringify({
          bank_reference: '123456',
          amount: 100.00,
          // Campos condicionales para Mercantil / Venezuela Empresa
          dni_pagador: { dni_type: 'V', dni_number: '12345678' },
          bank_origin: '0102',
          movement_type: 'MOVIL_PAY', // Solo Mercantil
          phone_pagador: '04141234567', // Solo Pago Movil
          fecha_pago: '2024-02-12' // Opcional
        })
      });
    
      const data = await response.json();
      console.log(data);
    }

    JavaScript (Fetch - Generic)

    fetch("https://api.pabilo.app/userbankpayment/USER_BANK_ID/betaserio", {
      "headers": {
        "accept": "*/*",
        "accept-language": "es-419,es;q=0.7",
        "Authorization": "Bearer TU_API_KEY"
      },
      "body": "{\"amount\":0,\"bank_reference\":\"67890\",\"movement_type\":\"GENERIC\",\"fecha_pago\":\"2026-08-03\"}",
      "method": "POST",
      "mode": "cors",
      "credentials": "include"
    });

    Respuesta del API

    La respuesta indicará si el pago fue validado exitosamente y si es un pago nuevo o uno previamente registrado.

    Respuesta Exitosa (200 OK)
    {
      "user_bank_payment": {
        "id": "ubp_...",
        "bank_reference_id": "123456",
        "amount": 100.00,
        "user_bank_id": "ub_...",
        "status": "verified",
        "created_at": "2024-02-12T10:00:00Z"
      },
      "is_new": true,
      "credit_cost": 1,
      "user_credits_total": 99,
      "user_credits_total_in_usd": 4.95
    }
    Respuesta Exitosa (Pago ya validado anteriormente - is_new: false)
    {
        "data": {
            "credit_cost": 0,
            "is_new": false,
            "user_bank_payment": {
                "id": "6a70ac7f7e8da56b6db795bc",
                "created_at": "2026-08-03T14:58:07.081Z",
                "updated_at": "2026-08-03T14:58:07.081Z",
                "bank_reference_id": "00668482",
                "user_id": "685725869e6febc736848bf1",
                "amount": 3,
                "user_bank_id": "685725c59e6febc736848bf5",
                "status": "paid",
                "credit_cost": 0,
                "payment_params": {
                    "amount": 0,
                    "cedula_pagador": null,
                    "telefono_pagador": "",
                    "fecha_pago": "0001-01-01T00:00:00Z",
                    "banco_origen": "",
                    "cuenta_pagador": "",
                    "invoice_number": "1056",
                    "movement_type": "GENERIC"
                },
                "confirmed_status": false,
                "details": null,
                "currency": "VEF",
                "bank_reference_key": "668482",
                "movement_date": "2026-08-03T14:57:55.736Z"
            },
            "user_credits_total": -1,
            "user_credits_total_in_usd": -10
        },
        "message": "payment confirmed"
    }
    Respuesta de Error (Pago No Encontrado - 404)
    {
        "error": "PAYMENT_NOT_FOUND",
        "message": "payment not found: movement not found with bank reference 67890, movements counts 0"
    }

    Campos Importantes

    • is_new: boolean. Indica si es la primera vez que se verifica este pago (`true`) o si ya había sido verificado anteriormente (`false`).¡Importante para evitar procesar la misma orden dos veces!
    • user_bank_payment: Objeto con los detalles del pago registrado en el sistema.
    • credit_cost: Costo en créditos de esta verificación.
    • user_credits_total: Tus créditos restantes después de la operación.

    Códigos de Error

    • 404 Not Found: El pago no se encuentra en el banco. Revisa la referencia, el monto y el banco seleccionado.
    • 400 Bad Request: Faltan datos obligatorios (referencia, monto, apiKey).
    • 401 Unauthorized: API Key inválida o inactiva.
    • 402 Payment Required: No tienes créditos suficientes para realizar la verificación.