---
title: "Notificaciones de Pago"
description: "Envío de notificación al recibir un pago"
type: "docs"
category: "doc"
tags: []
authors: [delaf]
date: "2024-03-22"
last_update: "2026-08-20"
time_minutes: 3
draft: false
unlisted: false
url: "https://www.libredte.cl/docs/integracion/webhook/notificacion-al-recibir-pago"
---

# Recibir notificaciones de pagos de tus clientes

Puedes configurar un **servicio web** propio para recibir notificaciones automáticas cuando tus clientes realicen pagos en la plataforma de LibreDTE.

## ¿Cómo funciona?

Cuando se registra un pago, LibreDTE realiza una solicitud **HTTP POST** a la URL que definas. El cuerpo de la solicitud contiene un **JSON** con los datos del pago.

Ejemplo de URL de tu servicio:

```
https://example.com/api/pagos/notificar
```


Ejemplo de payload recibido:

```json
{
  "emisor": 76192083,
  "codigo": "aWRfcGFnbwo=",
  "receptor": 11222333,
  "fecha": "2020-04-01",
  "pagado": "2020-04-21",
  "medio": "webpay",
  "datos": null
}
```

## Campos incluidos

| Campo     | Descripción                                             |
|-----------|---------------------------------------------------------|
| `emisor`  | RUT del emisor del cobro (sin dígito verificador)       |
| `codigo`  | Código único del cobro (útil para validación posterior) |
| `receptor`| RUT del receptor del cobro (sin DV)                     |
| `fecha`   | Fecha de emisión del cobro                              |
| `pagado`  | Fecha en que se realizó el pago                         |
| `medio`   | Medio de pago utilizado (ej. `webpay`)                  |
| `datos`   | Información adicional del medio de pago (opcional)      |

## Validación del cobro

> [!WARNING] No confíes solo en la notificación
>
> Siempre debes validar el pago consultando directamente a LibreDTE usando el **código del cobro**.
> Esto garantiza que la notificación sea auténtica y evita errores o fraudes.

## Ejemplo práctico

El siguiente código incluye cómo recibir el JSON, procesarlo y consultar a LibreDTE para verificar el estado del cobro.

```php
/**
 * Ejemplo básico de servicio web para recibir una notificación de pago
 * desde LibreDTE.
 */

// Se utiliza el API Client de LibreDTE, instalar dependencia con:
//   composer require libredte/libredte-api-client
use libredte\api_client\ApiClient;
use libredte\api_client\ApiException;

// Configuración de autenticación.
$emisor = 76192083; // RUT sin puntos ni DV.
$hash = '';         // Se obtiene en el perfil del usuario.
$user = '';         // Lo defines al configurar el webhook en LibreDTE.
$pass = '';         // Lo defines al configurar el webhook en LibreDTE.

// Verificar si la consulta tiene las credenciales válidas.
if (!auth_check($user, $pass)) {
    throw new ApiException(
        'Usuario no autenticado o credenciales incorrectas.'
    );
}

// Recibir datos del servicio web y extraer EnvioDTE o EnvioBOLETA.
$payload = json_decode(file_get_contents('php://input'), true);
if (!$payload) {
    throw new ApiException('No se recibieron datos del cobro.');
}

// Verificar que el cobro efectivamente esté pagado.
$libredte = new ApiClient($hash);
$resource = sprintf(
    '/pagos/cobros/info/%s/%d',
    $payload['codigo'] ?? throw new ApiException(
        'No se recibió el código del cobro que fue pagado.'
    ),
    $emisor
);
$response = $libredte->get($resource);
if (($response['status']['code'] ?? null) !== 200) {
    throw new ApiException((sprintf(
        'Error al realizar la consulta del cobro: %s',
        $response['body']
    ));
}
$cobro = (object) $response['body'];

// Revisar si el cobro está pagado realmente. Esto asegura que está
// pagado, ya que se consultó a LibreDTE previamente por el estado.
if ($cobro->pagado) {
    cobro_pagado($cobro);
}

// Función que verifica las credenciales utilizando HTTP Auth Basic.
function auth_check(string $user, string $pass): bool
{
    // Error si no se definen las credenciales en la configuración.
    if (empty($user) || empty($pass)) {
        return false;
    }

    // Obtener cabecera de HTTP Auth Basic.
    $headers = apache_request_headers();
    if (empty($headers['Authorization'])) {
        return false;
    }

    // Validar credenciales.
    [$basic, $Authorization] = explode(' ', $headers['Authorization']);
    [$u, $p] = explode(':', base64_decode($Authorization));
    $status = $u === $user && $p === $pass;

    return $status;
}

// Función para hacer lo que se requiera con el cobro pagado.
function cobro_pagado(object $cobro): mixed
{
    print_r($cobro);
}
```

> [!TIP]
>
> Puedes usar este sistema para automatizar acciones como activar servicios, enviar correos o generar documentos tras el pago.



---
Last updated on 20/08/2026

