Skip to main content

BNC

Introduction

This document provides the specifications for implementing BNC payment methods through the Luka API.

The URL is specified in Environments.

Authentication is done via a token (JWT) returned by the login method using the credentials provided by Lukapay. See documentation.

Payment methods

Mobile Payment

Allows you to register and validate payments made through mobile payment methods.

Request

POST {URL}/api/v1/transaccion/bnc.registar.pago.movil

Headers

Content-Type: application/json
Authorization: Bearer {token}
userIp: {client IP address}

Request Body

Field NameDescriptionTypeRequired
NombrePagadorName of the clientStringNo
CodigoBancoPagadorCode of the destination bank for the fundsStringYes
TelefonoPagadorPhone number from which the mobile payment was madeStringYes
CedulaIdentification document of the natural or legal person receiving the fundsStringYes
NumeroReferenciaReference number of the mobile payment madeStringYes
TelefonoReceptorPhone number where the mobile payment is receivedStringNo
MontoAmount of the operationNumberYes
EmailEmail address of the client making the paymentStringYes
TrazaIdUnique trace identifier in the merchant's databaseStringYes
ReferenciaIdentification of the final client if requiredStringNo
IdCanalChannel through which the operation is made. Possible values: 1: Gateway, 2: API (default), 3: Payment Link, 4: Android, 5: iOSNumberNo
FechaMovimientoDate when the mobile payment was made. Format: “YYYYMMDD”StringNo

Response

Field NameDescriptionType
CanalChannel used to process the paymentNumber
CargosAdicionalesAdditional charges detailsObject
CuotasInformation about payment installmentsObject
DescripciónResponse providing the transaction status and any additional informationString
ExitosoIndicates if the transaction was successfulBoolean
FechaOperacionDate and time of the transactionString
InfoProcesoDetailed information about the transaction statusObject
InfoTarjetaCredit card details used for payment (if applicable)Object
InfoUsuarioPagadorInformation about the customer making the paymentObject
MedioDePagoPayment method usedString
MerchantIdMerchant's transaction identifierString
MonedaCurrency used for the paymentString
MontoAmount paidNumber
MontoOriginalInformation about the original amount (if currency conversion applies)Object
MontoUsdValue of the amount in U.S. dollarsNumber
TarjetaHabientePayer's details if a card is usedObject
TransaccionIdTransaction identifier in LukapayNumber
TransaccionMerchantIdTransaction identifier from the merchantNumber
TrazaIdUnique identifier for the transaction in the merchant's databaseString

For more details on the response objects, see Transaction Response.

Example Usage

Request Body

{
"Cedula": "V12345678",
"NombrePagador": "Pedro Perez",
"CodigoBancoPagador": "0191",
"TelefonoPagador": "584121234567",
"FechaTransaccion": "20240807",
"NumeroReferencia": "12345",
"Monto": 16.03,
"Email": "demo@example.com",
"Link": null,
"MontoOriginal": null,
"Referencia": null,
"TrazaId": "1362c6e9f67e",
"IdCanal": 2,
"CargosAdicionales": null
}

Response Body

{
"Monto": 16.03,
"MontoUsd": 0,
"InfoProceso": {
"EstatusProcesamiento": "pending",
"CodigoRespuestaCvv": null
},
"TarjetaHabiente": null,
"Moneda": "VES",
"InfoTarjeta": null,
"InfoUsuarioPagador": {
"Nombre": "Pedro",
"Apellido": "Perez",
"Email": "demo@example.com"
},
"TransaccionId": 12345,
"MerchantId": 516458,
"Descripcion": "transaction under review",
"TrazaId": "1362c6e9f67e",
"Exitoso": true,
"MedioDePago": "Mobile payment",
"Canal": "API",
"MontoOriginal": null,
"MerchantId": "30867220134",
"FechaOperacion": "05/07/2024 19:23:20",
"CargosAdicionales": null,
"Cuotas": null
}

Auth for Debit Card Payment

Allows you to obtain the authentication key for paying with a debit card through BNC.

Request

POST {URL}/api/v1/transaccion/bnc.auth

Headers

Content-Type: application/json
Authorization: Bearer {token}

Request Body

Field NameDescriptionTypeRequired
CedulaIdentification document associated with the debit card to be paidStringYes
TarjetaDebit card numberStringYes

Response

Field NameDescriptionType
ExitosoIndicates if the authentication was successfulBoolean
WorkingKeyKey provided by the bankString
TipoDeAutorizacionType of authorizationString

Example Usage

Request Body

{
"cedula": "V1234",
"tarjeta": "6276123456789010"
}

Response Body

{
"Exitoso": true,
"WorkingKey": "933a60e56163d38978d07c6d57e9d049",
"TipoDeAutorizacion": "otp"
}

Debit Card

Allows you to make payments with a debit card.

note

Authentication is required as a prior step; this corresponds to the previous method.

Request

POST {URL}/api/v1/transaccion/bnc.vposDebito

Headers

Content-Type: application/json
Authorization: Bearer {token}
userIp: {client IP address}

Request Body

Field NameDescriptionTypeRequired
CedulaIdentification document associated with the debit card to be paidStringYes
TarjetaDebit card numberStringYes
MasterkeybncCorresponds to the WorkingKey field returned in the authStringYes
IdTrazaUnique trace identifier in the merchant's databaseStringYes
NombreTarjetaHabienteName of the cardholderStringYes
FechaExpiracionExpiration date of the debit card. Format: “MM/YYYY”StringYes
CodigoSeguridadSecurity code CVVStringNo
MontoAmount of the operationNumberYes
IdCanalChannel through which the operation is made. Possible values: 1: Gateway, 2: API (default), 3: Payment Link, 4: Android, 5: iOSNumberNo
EmailEmail address of the client making the paymentStringYes
ClaveDebit card PINStringNo
TipodeCuentaType of accountStringYes
TipoTarjetaType of cardStringNo
CargosAdicionalesObject with information on additional chargesObjectNo

Response

Field NameDescriptionType
CanalChannel used to process the paymentNumber
CargosAdicionalesAdditional charges detailsObject
CuotasInformation about payment installmentsObject
DescripciónResponse providing the transaction status and any additional informationString
ExitosoIndicates if the transaction was successfulBoolean
FechaOperacionDate and time of the transactionString
InfoProcesoDetailed information about the transaction statusObject
InfoTarjetaCredit card details used for payment (if applicable)Object
InfoUsuarioPagadorInformation about the customer making the paymentObject
MedioDePagoPayment method usedString
MerchantIdMerchant's transaction identifierString
MonedaCurrency used for the paymentString
MontoAmount paidNumber
MontoOriginalInformation about the original amount (if currency conversion applies)Object
MontoUsdValue of the amount in U.S. dollarsNumber
TarjetaHabientePayer's details if a card is usedObject
TransaccionIdTransaction identifier in LukapayNumber
TransaccionMerchantIdTransaction identifier from the merchantNumber
TrazaIdUnique identifier for the transaction in the merchant's databaseString

For more details on the response objects, see Transaction Response.

Example Usage

Request Body

{
"Cedula": "V12345678",
"Tarjeta": "6276123456789010",
"Masterkeybnc": "933a60e56163d38978d07c6d57e9d049",
"IdTraza": "91fcd4eda882",
"NombreTarjetaHabiente": "Pedro Perez",
"FechaExpiracion": "12/2024",
"CodigoSeguridad": "467",
"Monto": 16.03,
"IdCanal": 2,
"MontoOriginal": null,
"Link": null,
"Email": "demo@example.com",
"Clave": "1234",
"TipodeCuenta": "20",
"TipoTarjeta": "3",
"CargosAdicionales": null,
"Moneda": "VES"
}

Response Body

{
"Monto": 16.03,
"MontoUsd": 0.0,
"InfoProceso": {
"EstatusProcesamiento": "success",
"CodigoRespuestaCvv": null
},
"TarjetaHabiente": {
"Nombre": "Pedro",
"Apellido": "Perez",
"NumeroIdentificacionPersonal": "V12345678",
"NumeroTelefono": null,
"LukapayId": null
},
"InfoUsuarioPagador": {
"Nombre": "Pedro",
"Apellido": "Perez",
"NumeroIdentidad": "V12345678",
"NumeroTelefono": null,
"Email": "demo@example.com"
},
"Moneda": "VES",
"InfoTarjeta": {
"Id": 0,
"UltimosCuatroDigitos": "9010",
"SubTipoTarjeta": null,
"TipoTarjeta": null,
"CategoriaTarjeta": null,
"Bin": "627612",
"FechaVencimiento": "12/2024",
"Pais": null,
"EstaBoveda": false,
"Direccion": null,
"Descripcion": null,
"IdStatus": 0,
"Moneda": null,
"Ciudad": null,
"Estado": null,
"CodigoPostal": null
},
"TransaccionId": 102295,
"TransaccionMerchantId": 121545,
"Descripcion": "successful transaction",
"TrazaId": "91fcd4eda882",
"Exitoso": true,
"Canal": "API",
"MedioDePago": "Debit",
"MontoOriginal": null,
"MerchantId": null,
"FechaOperacion": null,
"CargosAdicionales": null,
"Cuotas": null
}

Credit Card

Allows you to make payments with a credit card. Authentication corresponding to the previous method is required.

Request

POST {URL}/api/v1/transaccion/bnc.vposCredito

Headers

Content-Type: application/json
Authorization: Bearer {token}
userIp: {client IP address}

Request Body

Field NameDescriptionTypeRequired
CedulaIdentification document associated with the debit card to be paidStringYes
TarjetaCredit card numberStringYes
IdTrazaUnique trace identifier in the merchant's databaseStringYes
NombreTarjetaHabienteName of the cardholderStringYes
FechaExpiracionExpiration date of the credit card. Format: “MM/YYYY”StringYes
CodigoSeguridadSecurity code CVVStringNo
MontoAmount of the operationNumberYes
IdCanalChannel through which the operation is made. Possible values: 1: Gateway, 2: API (default), 3: Payment Link, 4: Android, 5: iOSNumberNo
EmailEmail address of the client making the paymentStringYes
CargosAdicionalesObject with information on additional chargesObjectNo

Response

Field NameDescriptionType
CanalChannel used to process the paymentNumber
CargosAdicionalesAdditional charges detailsObject
CuotasInformation about payment installmentsObject
DescripciónResponse providing the transaction status and any additional informationString
ExitosoIndicates if the transaction was successfulBoolean
FechaOperacionDate and time of the transactionString
InfoProcesoDetailed information about the transaction statusObject
InfoTarjetaCredit card details used for payment (if applicable)Object
InfoUsuarioPagadorInformation about the customer making the paymentObject
MedioDePagoPayment method usedString
MerchantIdMerchant's transaction identifierString
MonedaCurrency used for the paymentString
MontoAmount paidNumber
MontoOriginalInformation about the original amount (if currency conversion applies)Object
MontoUsdValue of the amount in U.S. dollarsNumber
TarjetaHabientePayer's details if a card is usedObject
TransaccionIdTransaction identifier in LukapayNumber
TransaccionMerchantIdTransaction identifier from the merchantNumber
TrazaIdUnique identifier for the transaction in the merchant's databaseString

For more details on the response objects, see Transaction Response.

Example Usage

Request Body

{
"IdTraza": "dc12c15d2cbe",
"Tarjeta": "4850123456789010",
"Cedula": "V12345678",
"NombreTarjetaHabiente": "Pedro Perez",
"FechaExpiracion": "12/2024",
"CodigoSeguridad": "123",
"Monto": 10.0,
"DireccionIp": "10.0.0.0",
"IdCanal": 2,
"MontoOriginal": null,
"Link": null,
"Email": "djcasti@gmail.com",
"BrowserAgent": "Chrome",
"Referencia": null,
"CargosAdicionales": {
"Comision": 0.0,
"OtrosCargos": [
{
"Concepto": "VAT",
"Monto": 1.6
}
],
"TotalCargos": 1.6,
"MonedaCargos": "VES"
}
}

Response Body

{
"Monto": 10.0,
"MontoUsd": 0.0,
"InfoProceso": null,
"TarjetaHabiente": {
"Nombre": "Pedro Perez",
"Apellido": "",
"NumeroIdentificacionPersonal": null,
"NumeroTelefono": null,
"LukapayId": null
},
"InfoUsuarioPagador": null,
"Moneda": "VES",
"InfoTarjeta": {
"Id": 0,
"UltimosCuatroDigitos": "9010",
"SubTipoTarjeta": null,
"TipoTarjeta": null,
"CategoriaTarjeta": null,
"Bin": "485012",
"FechaVencimiento": "12/2024",
"Pais": null,
"EstaBoveda": false,
"Direccion": null,
"Descripcion": null,
"IdStatus": 0,
"Moneda": null,
"Ciudad": null,
"Estado": null,
"CodigoPostal": null
},
"TransaccionId": 82025,
"TransaccionMerchantId": 442528,
"Descripcion": "successful transaction",
"TrazaId": "dc12c15d2cbe",
"Exitoso": true,
"Canal": "API",
"MedioDePago": "Credit",
"MontoOriginal": null,
"MerchantId": null,
"FechaOperacion": null,
"CargosAdicionales": {
"Comision": 0.0,
"OtrosCargos": [
{
"Concepto": "VAT",
"Monto": 1.6
}
],
"TotalCargos": 1.6,
"MonedaCargos": "VES"
}
}

Webhooks for Asynchronous Payments

Our platform validates the payment reference provided by the user in real-time. If the reference is not automatically found, the transaction is marked as "Pending Review" and retried up to 5 times, with attempts every 2 minutes. If it still cannot be found, the transaction is reviewed manually. In such cases, the user is notified via email. In the integration, the Exitoso field will be marked as true, but you must check InfoProceso.EstatusProcesamiento to determine the actual status of the payment: either success (successful) or pending. The final status is sent through a webhook.

Learn more about webhooks.