Skip to main content

Webhook

Due to their nature, payments via Zelle and Pago Móvil are made in a asynchronous manner, meaning the customer pays directly through their bank and then records the authorization code in our platform.

Luka has the ability to validate the reference registered by the user online. However, it is possible that the user might enter it incorrectly, which could prevent the system from finding it automatically. In this case, Luka marks the transaction with the status Pending.

When a transaction is marked as pending, it is automatically checked every 2 minutes until the transaction reflects in the account. If it still cannot be found, a manual review is conducted. In this manual review, the transaction is either approved or rejected, with the reason for rejection provided. In both cases, the customer will receive an email with the result of the operation.

For integration purposes, in the response, the field Exitoso will have the value true, but it is also necessary to check the InfoProceso.EstatusProcesamiento property, which indicates the real status of the payment. The two possibilities are: success (successful) or pending (pending).

{
"Monto":16.03,
"MontoUsd":0,
"InfoProceso":{
"EstatusProcesamiento":"pending"
},
"TarjetaHabiente":{
"Nombre":"",
"Apellido":""
},
"Moneda":"USD",
"InfoTarjeta":{
"Id":0,
"UltimosCuatroDigitos":"",
"SubTipoTarjeta":"",
"TipoTarjeta":"",
"CategoriaTarjeta":"",
"Bin":"",
"FechaVencimiento":"",
"Pais":"",
"Direccion":"",
"CodigoPostal":"",
"Descripcion":""
},
"InfoUsuarioPagador":{
"Nombre":"Dennis",
"Apellido":"Castillo",
"Email":"demo@payco.net.ve"
},
"TransaccionId":11339,
"TransaccionMerchantId":0,
"Descripcion":"Tx Pendiente",
"TrazaId":"d225cd97-f3bd-40ad-a92f-ae05f72eb042",
"Exitoso":true,
"MedioDePago":"Zelle",
"Canal":"API",
"MontoOriginal":{
"Monto":16.03,
"Moneda":"USD",
"ComisionMerchant":0.76487
},
"MerchantId": null,
"FechaOperacion": null,
"CargosAdicionales": null,
"Cuotas": null
}

If the transaction remains in Pending status, a message should be displayed to the user, indicating that their payment will be reviewed and they will receive a response via email.

To receive the final transaction status, the response is sent via a webhook.

In this case, the integrator must create a function in their API that receives the response from Lukapay and updates the transaction status in their system.

The object with the response, sent through the POST method, follows this format:

Field NameDescriptionTypeMandatory
MontoTransaction amountnumberYes
IdTransaction identifier in LukanumberYes
IdTrazaUnique traceability identifier in the merchant's databasestringYes
CodigoAutorizacionAuthorization code from ZellestringYes
EstatusObject with the transaction status detailsobjectYes
Estatus.IdTransaction status ID returned by Lukapay. Possible values: 6 (successful), 7 (failed)numberYes
Estatus.DescripcionTransaction status description returned by Lukapay. Possible values: Tx Exitosa, Tx FallidastringYes
FechaDate of the transactionstringYes
FechaCreacionCreation date of the transactionstringYes
[
{
"Monto":16.03,
"Id":8357,
"IdTraza":"1234567890",
"CodigoAutorizacion":"kjfkgds874k",
"Estatus":{
"Id":6,
"Descripcion":"Tx Exitosa"
},
"Fecha":"2022-02-23T18:27:47.0170155Z",
"FechaCreacion":"2022-02-23T18:27:47.1959116Z"
},
{
"Monto":1.0,
"Id":3547,
"IdTraza":"1234567890",
"CodigoAutorizacion":"kljghdfjg45646",
"Estatus":{
"Id":7,
"Descripcion":"Tx Fallida"
},
"Fecha":"2021-04-23T22:10:29.4103Z",
"FechaCreacion":"2021-04-23T22:10:29.4519723Z"
}
]

Note: Once the webhook endpoint is created, this information should be sent to the Luka development team for configuration in the service.