Generación de reportes

Introducción

La API de Reportes está diseñada para facilitar la integración entre sistemas externos y la plataforma, permitiendo generar y recuperar reportes de transacciones de nuestros clientes.

Propósito

Esta API está dirigida a desarrolladores e integradores que buscan automatizar la generación y consulta de reportes de transacciones, proporcionando acceso a datos detallados que pueden ser utilizados para análisis y conciliación de cuentas.

Público objetivo

La API está destinada principalmente a desarrolladores de software que necesitan acceso directo a la información de transacciones realizadas por sus dispositivos POS para la generación de reportes.

⚠️

Para generar reportes debe solicitar una API Key válida en su espacio de trabajo. En caso de problemas, contáctese con soporte.

Diagrama alto nivel


¿Cómo generar un reporte?

Envía una solicitud POST al endpoint para generar un reporte de transacciones. Este reporte se basa en filtros específicos, como el rango de fechas y el número de serie del terminal.

POST /Report/get-report

Ejemplo de uso

curl -X POST "https://integrations.payment.haulmer.com/Report/get-report" \
     -H "Content-Type: application/json" \
     -H "X-API-Key: YOUR_API_KEY" \
     -d '{
           "Filters": {
             "StartDate": "2024-01-01",
             "EndDate": "2024-01-31",
             "SerialNumber": "PN74233A30842"
           },
           "page": 1,
           "pageSize": 10
         }'

Parámetros de entrada

Headers

  • X-API-Key: ApiKey
  • Content-Type: application/json

Body Request

El cuerpo de la solicitud debe contener los siguientes campos:

{
  "Filters": {
    "StartDate": "2024-01-01",
    "EndDate": "2024-01-31",
    "SerialNumber": "PN74233A30842"
  },
  "page": 1,
  "pageSize": 10
}

☝️

Si desea conocer los POS asociados a su comercio, debe hacer uso del endpoint GET /SerialNumbersDevice/get-serial-numbers-device/

Datos Solicitados

CampoTipoDescripciónEjemploRequerido
StartDatestringFecha de inicio del periodo del reporte (YYYY-MM-DD).2024-01-01
EndDatestringFecha de fin del periodo del reporte (YYYY-MM-DD).2024-01-31
SerialNumberstringNúmero de serie del dispositivo POS.PN74233A30842No
PageintNúmero de página para paginación de resultados. Valor por defecto 1.1No
PageSizeintCantidad de registros por página. Máximo 20 registros. Valor por defecto 10.10No

Parámetros de salida

Respuesta exitosa

  • 200 OK:

    {
        "code": "200",
        "message": "Report generated successfully.",
        "content": {
            "commerce": {
                "partnerId": "123",
                "commerceName": "Boxbox"
            },
            "reports": [
                {
                    "saleId": "21688",
                    "sequenceNumber": "N/A",
                    "posSerialNumber": "PN74233A30842",
                    "status": "Completed",
                    "amount": 600.00,
                    "currency": "CLP",
                    "typeTransaction": "Cash",
                    "paymentDataTime": "2024-04-10T09:16:18.123",
                    "extraData": {
                        "items": [
                            {
                                "code": null,
                                "quantity": 1.00,
                                "name": "Item Manual",
                                "price": 600
                            }
                        ],
                        "amountCommission": 0,
                        "amountWithoutCommission": 600.00
                    },
                    "reconciliations": [
                        {
                             "paymentDate": "",
                             "installmentNumber": 0,
                             "amount": 0,
                             "reconciliationId": "No reconciliation"
                        }
                    ],
                },
                {
                    "saleId": "21689",
                    "sequenceNumber": "000000040449",
    	                "posSerialNumber": "PN74233A30842",
                    "status": "completed",
                    "amount": 100.00,
                    "currency": "CLP",
                    "typeTransaction": "CREDIT",
                    "paymentDataTime": "2024-04-10T16:55:52.733",
                    "extraData": {
                        "items": [
                            {
                                "code": "",
                                "quantity": 1.00,
                                "name": "Item Manual",
                                "price": 100
                            }
                        ],
                        "amountCommission": 2.00,
                        "amountWithoutCommission": 98.00
                    },
                  "reconciliations": [
                        {
                             "paymentDate": "2024-05-07",
                             "installmentNumber": 1,
                             "amount": 300,
                             "reconciliationId": "3777"
                        },
                    		{
                             "paymentDate": "2024-06-07",
                             "installmentNumber": 2,
                             "amount": 300,
                             "reconciliationId": "Not yet available"
                        }
                  ]
               }
            ],
            "totalItems": 174,
            "totalPages": 18,
            "page": 1
        }
    }

    Descripción detallada de los campos retornados

    CampoTipoDescripción
    CommerceobjectInformación del comercio asociado al reporte.
    ReportsarrayLista de reportes generados basados en los filtros.
    TotalItemsintTotal de registros encontrados que coinciden con los filtros.
    TotalPagesintTotal de páginas disponibles según el pageSize.
    PageintNúmero de la página actual.

    Campo Commerce

    CampoTipoDescripción
    PartnerIdstringIdentificador del comercio asociado.
    CommerceNamestringNombre del comercio.

    Campo Report

    CampoTipoDescripción
    SaleIdstringIdentificador de la venta.
    SequenceNumberstringNúmero de secuencia asociado a la transacción.
    PosSerialNumberstringNúmero de serie del punto de venta (POS).
    StatusstringEstado de la transacción (p.ej., completed).
    AmountdecimalMonto de la transacción.
    CurrencystringMoneda de la transacción.
    TypeTransactionstringTipo de transacción (p.ej., CREDIT, DEBIT o CASH).
    PaymentDataTimeDateTimeFecha y hora del pago.
    ExtraDataExtraDataDatos adicionales sobre la transacción.
    ReconciliationsReconciliationInformación respecto a la reconciliación de la trx.

    Campo ExtraData

    CampoTipoDescripción
    ItemsList<Item>Lista de ítems asociados a la transacción.
    AmountCommissiondecimalComisión + IVA aplicado sobre la comisión.
    AmountWithoutCommissiondecimalMonto de la transacción sin incluir comisiones.

    Campo Item

    CampoTipoDescripción
    CodestringCódigo del ítem.
    QuantitydecimalCantidad del ítem.
    NamestringNombre del ítem.
    PricedecimalPrecio unitario del ítem.

    Campo Reconciliation

    CampoTipoDescripción
    PaymentDatestringPosible fecha de pago de la cuota.
    InstallmentNumberintNúmero de la cuota.
    AmountdoubleMonto de la cuota.
    ReconciliationIdintIdentificador de la reconciliación.

Errores Comunes

  • 401 Unauthorized: Credenciales inválidas.
  • 400 Bad Request: Errores en los filtros proporcionados.
  • 404 Not Found: No existen datos relacionados con la consulta.
  • 500 Internal server error: Error interno del servidor.

Formato de Respuesta de Error

Cuando se encuentre un error, se retornará un JSON con la estructura estándar de error:

{
  "code": "400",
  "message": "StartDate must be a valid calendar date."
}

Tabla de errores conocidos

CódigoMensajeDescripción
400 Bad RequestStartDate is required.Debe proporcionar una fecha de inicio.
400 Bad RequestEndDate is required.Debe proporcionar una fecha de termino.
400 Bad RequestStartDate must be in the format YYYY-MM-DD.Corrige el formato de la fecha de inicio para que coincida con YYYY-MM-DD.
400 Bad RequestEndDate must be in the format YYYY-MM-DD.Corrige el formato de la fecha de termino para que coincida con YYYY-MM-DD.
400 Bad RequestStartDate must be a valid calendar date.La fecha de inicio no es válida en el calendario.
400 Bad RequestEndDate must be a valid calendar date.La fecha de termino no es válida en el calendario.
400 Bad RequestThe date range cannot exceed one month.El rango entre la fecha de inicio y la fecha de fin no debe exceder un mes.
400 Bad RequestInvalid serial number.Verifica que el POS proporcionado se encuentre presente en lo usados por comerciante.
404 Not FoundNo transactions found with the given filtersNo existe datos para los filtros proporcionados.