1. Card Present Billpocket
Español
  • English
  • Español
  • Docs de API 🇲🇽
  • Online Payments
    • Errores ISO
    • Errores del API de Kushki
    • Notas de versión
    • Card Payments
      • Solicitar un token de tarjeta
      • Hacer un cargo o cargo diferido
      • Crear pago (sin token)
      • Solicitar opciones de diferido
      • Reembolsar una transacción
      • Autorizar pagos
      • Preautorización (sin token)
      • Anular una transacción
      • Reautorizar pagos
      • Capturar un pago autorizado
      • Información de BIN V2
      • Información de BIN
      • Validar OTP
    • One-Click and Scheduled Payments
      • Solicitar un token de cargo recurrente
      • Crear un cargo recurrente
      • Hacer un pago One-click
      • Actualizar los datos de la tarjeta del cargo recurrente
      • Cancelar un cargo recurrente
      • Actualizar un cargo recurrente
      • Agregar un cargo o descuento temporal
      • Autorizar pagos
      • Capturar un pago autorizado
      • Consultar información del cargo recurrente
    • Transfer in
      • Consultar lista de bancos
      • Solicitar un token de Transfer In
      • Iniciar transacción
      • Consultar estado
    • Transfer Out
      • Consultar lista de bancos
      • Consultar lista de bancos V2
      • Solicitar un token de Transfer Out
      • Iniciar transacción
      • Consultar estado
      • Saldo para payouts
    • Smartlinks
      • Crear un Smartlink
      • Consultar un Smartlink
      • Eliminar un Smartlink
      • Actualizar un Smartlink
    • Payment Button
      • Crear un Payment Button
    • Analytics
      • Consultar listado de transacciones v2
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Commissions
      • Consultar configuración de comisiones
    • Payment Credentials
      • Crear una credencial
      • Activar o desactivar
      • Eliminar credencial
      • Regenerar una credencial
      • Actualizar credencial
      • Búsqueda avanzada
      • Buscar credenciales
    • Platform Status
      • Consultar estado de la plataforma
      • Consultar estado del gateway
    • Settlement
      • Consultar liquidación
    • Subscription Transactions
      • Consultar transacciones de suscripción
    • Fraud Report
      • Consultar alertas de fraude
  • Card Present Billpocket
    • Notas de versión
    • Notas de versión del SDK de Android
    • Notas de versión de la app de Android
    • Notas de versión de la app de iOS
    • Get Started
      • Crear una cuenta
      • User Token
      • API Keys
    • Webhooks
      • Webhooks — Transferencia de fondos a tu cuenta bancaria
      • Errores de transferencia de fondos
    • Terminals
      • App Review
      • Splash Screen
    • Card not Present Billpocket Services
      • 3DS Checkout
        • Crear checkout
        • Consultar detalles del checkout
      • E-commerce Flex
        • Obtener token
        • Validar token
        • Cobrar pagos
        • Reembolso
        • Capturar un pago autorizado
        • Consultar estado
    • Catalogs
      • Estados
      • Municipios
      • Empresas de impuestos
      • Actividades comerciales
    • Accounts
      • Clabe Account Setup
        • Agregar cuenta CLABE
      • Deposit Accounts
        • Agregar o actualizar cuenta CLABE
    • User Settings
      • Crear usuario
    • Card Present Payment Services
      • Cloud Terminal API
        • Cobrar pagos con tarjeta
        • Imprimir ticket
        • Cancelar notificación push
        • Consultar estado de la transacción
        • Cobrar pagos con tarjeta v2
      • App-to-App
        • Android intents
        • App to App — iOS
        • App to App — Mobile Web
      • Terminal SDK
        • Terminal SDK Android
        • Errores del SDK de Android
    • Transactions
      • Transaction List
        • Obtener token
        • Consultar listado de transacciones
        • Consultar listado de transacciones v2
        • Consultar listado de transacciones v3
        • Consultar listado de transacciones v4
      • Cancel Payments
        • Códigos de error de cancelación
        • Cancelar pagos
  • API Raw Card Present
    • El objeto Amount
    • Catálogo de errores
    • Proceso de intercambio de llaves
    • Notas de versión
    • Datos de prueba
    • One-time payments
      • Pago único
    • Two-step-payments
      • Autorización y captura
    • Voids & Refunds
      • Reembolsar una transacción
      • Anular y reversar
    • Card information
      • Consultar información de BIN
      • Información de BIN V2
      • Solicitar opciones de diferido
    • Query Transactions
      • Búsqueda de transacciones
    • Webhooks
      • Webhooks — Pagos con tarjeta
      • Webhooks — Reembolsos
      • Webhooks — Introducción
      • Buenas prácticas
      • Revisa tus webhooks
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Fraud Report
      • Consultar alertas de fraude
  • Kushki One
    • Error Catalog
    • Release notes
    • Transaction Examples
    • Webhooks
    • Cloud Services
      • Payment
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Void
          • Refund
          • Abort
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
        • Search
          • Transaction Search
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Void
          • Refund
          • Abort
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
          • Abort (Async)
        • Search
          • Transaction Search — Online
          • Transaction Search — Local
      • Print
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • Appian - Submerchant Register
    • Release Notes
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Submerchant Document Upload
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • RequestBodies
      • one-and-two-step-payment
    • Card
    • Channel
    • Amount-cash-in
    • ChargebackListResponse
    • TransactionResponse
    • PrintJobRequest
    • one-and-two-step-payment-2
    • Card Present (CP)
    • one-and-two-step-payment-2
    • SubscriptionTransactionsResponse
    • FraudAlertRequest
    • StatusComponent
    • SettlementDateRangeRequest
    • amount
    • ChargebackItem
    • SubscriptionTransaction
    • extra_taxes
    • RawResponse
    • CommandText
    • Card Not Present (CNP)
    • Deferred
    • networkToken
    • FraudAlertResponse
    • ErrorResponse400
    • SettlementRecord
    • card
    • CardData
    • CommandColumns
    • FraudAlertRecord
    • SettlementResponse
    • currency
    • webhooksItem
    • ErrorResponse
    • Country
    • ErrorResponse401
    • LinkFailure
    • ColumnItem
    • ValidationError
    • Amount
    • card_details
    • ErrorResponse403
    • enc_tlv
    • CommandDivider
    • TransactionEvent
    • extraTaxes
    • payment_method
    • ErrorResponse500
    • CommandFeed
    • TransactionStatus
    • deferred
    • CommandSpace
    • ReadingType
    • pos_details
    • ContactDetails
    • sub_merchant
    • CommandCut
    • FailureReason
    • contact_details
    • Subscription
    • metadata
    • CommandImage
    • EventTerminal
    • documentType
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • EventOperation
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • EventAmount
    • Billing-Address
    • SubscriptionUpdate
    • EventExtraTaxes
    • PrintJobAccepted
    • PrinterError
    • EventMetadata
    • SubscriptionAdjustmentRequest
    • product
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • threeDomainSecure
    • AmountCore
    • webhooks
    • headers
    • ExtraTaxes
    • PrintWebhookPayload
    • webhooksChargeback
    • Metadata
    • AmountWithTip
    • citMit
    • TransactionSearchBody
    • TransactionSearchOnlineBody
    • network
    • binInfo
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • TransactionEvent_2
    • messageFields
    • UnexpectedErrorResponse
    • FailureReason_2
    • transactionType
    • ExternalReferenceId
    • EventTerminal_2
    • ExternalSubscriptionId
    • EventOperation_2
    • EventAmount_2
    • EventExtraTaxes_2
    • EventMetadata_2
    • SettlementTicketRequest
HomePerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
HomePerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Card Present Billpocket

Webhooks

Los webhooks te permiten suscribirte a los eventos que pueden ocurrir, como que una transacción se apruebe o se rechace. Cuando se dispara un evento, te notificamos a través de un endpoint que hayas configurado previamente, enviando una solicitud POST con un objeto JSON que contiene toda la información necesaria sobre el evento.
Con los webhooks, tu aplicación puede escuchar eventos importantes y disparar acciones, como actualizar la base de datos cuando un pago se procesa correctamente en tu sistema.
INFO
Los webhooks son asíncronos. Las notificaciones se envían normalmente de inmediato, pero pueden producirse retrasos ocasionales. Diseña tu integración para tolerar entregas con retraso o fuera de orden.

Requisitos del endpoint#

Antes de configurar un endpoint para recibir notificaciones, este debe cumplir los siguientes requisitos:
Aceptar solicitudes HTTP POST
Tener un certificado SSL válido (HTTPS) y acceso público
Responder con HTTP 200 (OK) en menos de 2 segundos
Aceptar payloads en formato JSON
Tener una URL de no más de 300 caracteres

Tipos de evento#

EventoDescripción
Transacciones aprobadasSe dispara cuando se aprueba un pago con tarjeta.
Transacciones rechazadasSe dispara cuando se rechaza un pago con tarjeta.
ReembolsosSe dispara cuando un reembolso se aprueba, se rechaza o queda pendiente.
Transferencia de fondos a tu cuenta bancariaNotificación de liquidación SPEI por los fondos transferidos a tu cuenta bancaria.
Según el tipo de evento que dispara la notificación, recibes en el payload un objeto con una estructura determinada.
Para asegurarte de que las solicitudes que llegan a tu endpoint provienen de nosotros, usa las cabeceras X-BP-Signature y X-BP-SignatureKey para autenticar la solicitud entrante. Consulta Seguridad para más detalles.

Registra tu endpoint#

1.
Inicia sesión en el dashboard con las credenciales correctas según el ambiente.
2.
Ve a Configuración > Integraciones.
3.
Ingresa la URL de tu endpoint en la sección Webhook General.
4.
Selecciona el tipo de eventos a los que quieres suscribirte.
5.
Haz clic en Guardar.
Nota
El endpoint debe responder con un HTTP Status Code 200 para que se guarde correctamente. Los cambios pueden tardar unos minutos en aplicarse.
register-endpoint-webhook.png

Seguridad#

Cada notificación POST incluye una firma digital. Los valores de la firma están disponibles en las cabeceras de la solicitud:
CabeceraDescripción
X-BP-SignatureValor de la firma del payload entregado, codificado en Base64.
X-BP-SignatureKeyÍndice de la llave privada con la que se firmó el mensaje.
Para obtener la llave pública con la que se verifica la firma, agrega el índice de la llave a la siguiente URL, con la extensión .pem o .der según el formato que prefiera tu aplicación:
https://keys.billpocket.com/webhook/
Ejemplo — para el índice de llave k1:
PEM: https://keys.billpocket.com/webhook/k1.pem
DER: https://keys.billpocket.com/webhook/k1.der
INFO
Te recomendamos guardar en caché o almacenar de algún modo el contenido de la llave pública en tu lado para acelerar la verificación de la firma en las notificaciones siguientes. Las llaves no cambian con el tiempo, pero el índice de la llave puede actualizarse para usar un nuevo par de llaves.

Ejemplos de código#

A continuación tienes ejemplos de código para recibir notificaciones de eventos mediante webhooks.
Java
PHP
Node.js
Si usas Spring Boot, obtén los valores de la firma y de la llave de firma para verificar el payload recibido:
El código anterior tiene las siguientes dependencias:
<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.6</version>
</dependency>

<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcprov-jdk15on</artifactId>
  <version>1.54</version>
</dependency>

Transacciones aprobadas#

Configura el webhook#

Inicia sesión con tu cuenta en el dashboard y selecciona la opción Configuración > Integraciones.
Define la URL de tu webhook en la sección Webhook General y selecciona la opción Transacciones Aprobadas en la pestaña Ventas. Haz clic en Guardar para guardar los cambios.
Nota
Los cambios pueden tardar unos minutos en aplicarse. La URL del webhook no debe superar los 300 caracteres.
approved-transactions-webhook.png

Campos del payload#

A continuación tienes todas las propiedades que puede contener el payload de un evento de transacción aprobada.
PropiedadTipoDescripción
resultStringResultado de la transacción. Valores posibles: aprobada para transacciones aprobadas.
amountStringMonto de la transacción.
tipStringSi la transacción incluye propina, se devuelve.
paymentsIntegerSi la transacción es diferida, el número de meses de diferido. Por ejemplo, 3.
authorizationTimeStringHora de autorización. Formato de fecha RFC 3339.
referenceStringDescripción de la transacción.
transactionidStringID de la transacción generado por Kushki.
authorizationStringCadena de autorización de la transacción.
creditcardStringÚltimos 4 dígitos del Primary Account Number de la tarjeta.
cardtypeStringEmisor de la tarjeta. Valores posibles: VISA, MASTERCARD, CARNET, AMERICAN EXPRESS.
arqcStringSolo EMV. Authorization Request Cryptogram (ARQC) de la transacción.
userIDIntegerID del usuario que realizó la transacción.
aidStringSolo EMV. Application ID del chip.
applabelStringSolo EMV. Application Label del chip.
urlStringIdentificador único para acceder al comprobante de la transacción.
emailStringCorreo al que se envía el comprobante de la transacción.
phoneStringNúmero de teléfono al que se envía el comprobante de la transacción.
cardBrandStringRed del emisor de la tarjeta.
cardIssuerStringBanco emisor de la tarjeta.
cardCountryStringCódigo de país de la tarjeta (ISO 3166-1 alpha-2).
cardClassStringTarjeta DEBIT (débito) o CREDIT (crédito).
launchTimeStringHora en que se envió la transacción.
maskedPANStringNúmero de tarjeta enmascarado.
uniqueReferenceStringIdentificador único por transacción generado en tu lado para evitar duplicados. Por ejemplo, un UUID.

Ejemplo#

{
    "cardBrand": "MASTERCARD",
    "cardIssuer": "SANTANDER",
    "cardCountry": "MX",
    "cardClass": "CREDIT",
    "launchTime": "2024-05-29T11:01:27.360-0600",
    "userID": 61000,
    "authorizationTime": "2024-05-29T11:01:27.360-0600",
    "result": "aprobada",
    "amount": "100.00",
    "payments": 0,
    "transactionid": "128010",
    "authorization": "BP3500",
    "creditcard": "0009",
    "cardtype": "MASTERCARD",
    "arqc": "A38051D19B2548E3",
    "aid": "A0000000041010",
    "applabel": "Mastercard",
    "url": "face3142cb4d32a545f42d278b8cf4ce5ea3d0b1",
    "maskedPAN": "500000******0009",
    "uniqueReference": "d6732f94-6cf2-4dfb-aed7-11b64b739407"
}

Transacciones rechazadas#

Configura el webhook#

Inicia sesión con tu cuenta en el dashboard y selecciona la opción Configuración > Integraciones.
Define la URL de tu webhook en la sección Webhook General y selecciona la opción Transacciones Rechazadas en la pestaña Ventas. Haz clic en Guardar para guardar los cambios.
Nota
Los cambios pueden tardar unos minutos en aplicarse.
rejected-transactions-webhook.png

Campos del payload#

A continuación tienes todas las propiedades que puede contener el payload de un evento de transacción rechazada.
PropiedadTipoDescripción
resultStringResultado de la transacción. Valores posibles: rechazadaProsa para transacciones rechazadas.
amountStringMonto de la transacción.
tipStringSi la transacción incluye propina, se devuelve.
paymentsIntegerSi la transacción es diferida, el número de meses de diferido. Por ejemplo, 3.
authorizationTimeStringHora de autorización. Formato de fecha RFC 3339.
referenceStringDescripción de la transacción.
transactionidStringID de la transacción generado por Kushki.
creditcardStringÚltimos 4 dígitos del Primary Account Number de la tarjeta.
cardtypeStringEmisor de la tarjeta. Valores posibles: VISA, MASTERCARD, CARNET, AMERICAN EXPRESS.
arqcStringSolo EMV. Authorization Request Cryptogram (ARQC) de la transacción.
userIDIntegerID del usuario que realizó la transacción.
aidStringSolo EMV. Application ID del chip.
applabelStringSolo EMV. Application Label del chip.
cardBrandStringRed del emisor de la tarjeta.
cardIssuerStringBanco emisor de la tarjeta.
cardCountryStringCódigo de país de la tarjeta (ISO 3166-1 alpha-2).
cardClassStringTarjeta DEBIT (débito) o CREDIT (crédito).
launchTimeStringHora en que se envió la transacción.
maskedPANStringNúmero de tarjeta enmascarado.
uniqueReferenceStringIdentificador único por transacción generado en tu lado para evitar duplicados. Por ejemplo, un UUID.
Nota
A diferencia de las transacciones aprobadas, los rechazos no devuelven authorization, url, email ni phone.

Ejemplo#

{
    "cardBrand": "MASTERCARD",
    "cardIssuer": "SANTANDER",
    "cardCountry": "MX",
    "cardClass": "CREDIT",
    "launchTime": "2024-05-29T10:46:52.221-0600",
    "userID": 61000,
    "authorizationTime": "2024-05-29T10:46:52.221-0600",
    "result": "rechazadaProsa",
    "amount": "99.00",
    "payments": 0,
    "transactionid": "128011",
    "creditcard": "0009",
    "cardtype": "MASTERCARD",
    "arqc": "6FEC34124C9AAEEB",
    "aid": "A0000000041010",
    "applabel": "Mastercard",
    "maskedPAN": "500000******0009",
    "uniqueReference": "d6732f94-6cf2-4dfb-aed7-11b64b739407"
}

Reembolsos#

Configura el webhook#

Inicia sesión con tu cuenta en el dashboard y selecciona la opción Configuración > Integraciones.
Define la URL de tu webhook en la sección Webhook General y selecciona la opción Transacciones Aprobadas o Transacciones Rechazadas, o ambas, en la pestaña Devoluciones. Haz clic en Guardar para guardar los cambios.
Nota
Los cambios pueden tardar unos minutos en aplicarse.
refund-webhook.png

Campos del payload#

A continuación tienes todas las propiedades que puede contener el payload de un evento de reembolso aprobado o rechazado.
PropiedadTipoDescripción
resultStringResultado de la transacción. Valores posibles: aprobada para reembolsos aprobados; rechazadaRiesgo, rechazadaProsa o rechazada para reembolsos rechazados; pendiente para reembolsos pendientes.
amountStringMonto del reembolso.
paymentsIntegerSi la transacción es diferida, el número de meses de diferido. Por ejemplo, 3.
authorizationTimeStringHora de autorización. Formato de fecha RFC 3339.
transactionidStringID de la transacción generado por Kushki.
authorizationStringCadena de autorización de la transacción. Solo en reembolsos aprobados.
creditcardStringÚltimos 4 dígitos del Primary Account Number de la tarjeta.
cardtypeStringEmisor de la tarjeta. Valores posibles: VISA, MASTERCARD, CARNET, AMERICAN EXPRESS.
userIDIntegerID del usuario que realizó la transacción.
urlStringIdentificador único para acceder al comprobante de la transacción. Solo en reembolsos aprobados.
cardBrandStringRed del emisor de la tarjeta.
cardCountryStringCódigo de país de la tarjeta (ISO 3166-1 alpha-2).
cardClassStringTarjeta DEBIT (débito) o CREDIT (crédito).
launchTimeStringHora en que se envió la solicitud.
maskedPANStringNúmero de tarjeta enmascarado.
uniqueReferenceStringIdentificador único por transacción generado en tu lado para evitar duplicados. Por ejemplo, un UUID.
transactionTypeStringTipo de transacción. Valores posibles: devolucion para reembolsos.
transactionRefundedIdStringID de la transacción original reembolsada.

Ejemplo de reembolso aprobado#

{
    "cardBrand": "VISA",
    "cardCountry": "US",
    "cardClass": "CREDIT",
    "uniqueReference": "d6732f94-6cf2-4dfb-aed7-11b64b739407",
    "launchTime": "2024-08-16T10:02:37.965-0600",
    "userID": 61000,
    "authorizationTime": "2024-08-16T10:02:37.965-0600",
    "result": "aprobada",
    "amount": "1018.0",
    "payments": 0,
    "transactionid": "128013",
    "authorization": "BP4160",
    "creditcard": "0002",
    "cardtype": "VISA",
    "url": "19c6f19bc1a7a00a1d76021aa5eaef2627aba950",
    "maskedPAN": "400000******0002",
    "transactionType": "devolucion",
    "transactionRefundedId": "128012"
}

Ejemplo de reembolso rechazado#

{
    "cardBrand": "VISA",
    "cardCountry": "US",
    "cardClass": "CREDIT",
    "launchTime": "2024-08-15T16:22:52.461-0600",
    "userID": 61000,
    "authorizationTime": "2024-08-15T16:22:52.461-0600",
    "result": "rechazadaProsa",
    "amount": "1003.0",
    "payments": 0,
    "transactionid": "128015",
    "creditcard": "0002",
    "cardtype": "VISA",
    "maskedPAN": "400000******0002",
    "transactionType": "devolucion",
    "transactionRefundedId": "128014"
}

¿Tienes una sugerencia sobre esta documentación? Escríbenos.
Modified at 2026-09-10 20:37:20
Previous
API Keys
Next
Webhooks — Transferencia de fondos a tu cuenta bancaria
Built with