1. App-to-App
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. App-to-App

Intents de Android

Abre la app de punto de venta (POS) desde tu app móvil de Android para procesar pagos con una terminal.
INFO
Servicio disponible solo en México 🇲🇽.

Requisitos#

Para llamar a la app POS desde tu app en un dispositivo Android, debes cumplir con los siguientes requisitos:
Una cuenta válida
La última versión disponible de la app POS de Billpocket instalada desde la Google Play Store
Tener la sesión iniciada en la app POS
Una terminal POS compatible

Agregar el SDK a tu proyecto#

Agrega el SDK en el archivo build.gradle de tu proyecto.
Agrega las siguientes dependencias necesarias:

Construir el Intent#

Asegúrate de incluir el siguiente import en tu proyecto:
Crea una instancia de la clase BPIntentBuilder y define una acción:
Después, define en la instancia cada parámetro obligatorio u opcional:
enableDialogTip está pendiente de confirmación para este canal
Hoy BPIntentBuilder no tiene un setter documentado para enableDialogTip. Sí está confirmado como campo Boolean para el canal Mobile web (Links) y para extras.enableDialogTip de Cloud Terminal API.
Antes de publicarlo como soportado aquí, confirma con el equipo de ingeniería de BP si existe (o está planeado) un setter para Android intents.

Llamar a la app POS#

La app POS debe llamarse de forma implícita desde tu aplicación, con el siguiente action string.

Modelo de datos de la solicitud#

Para enviar una solicitud a la terminal, debes enviar un objeto con todas las propiedades requeridas. Abajo está la lista de todas las propiedades disponibles en la solicitud según el tipo de operación.
PropiedadTipoVentaReembolsoDescripción
transactionStringRequeridoRequeridoTipo de transacción: venta para una venta o devolucion para un reembolso.
userTokenStringRequeridoRequeridoTu user token. Se define con .setUserToken(...). A diferencia de Mobile web (Links), el nombre de la propiedad o del método va en camelCase: aquí no interviene ninguna clave de query string.
identifierStringRequeridoRequeridoUn identificador que generas de tu lado para la trazabilidad de la transacción. Se devuelve en la respuesta. Máximo 256 caracteres.
amountDecimalRequeridoN/AMonto de la transacción. No incluye la propina. Dos decimales.
urlSchemeStringRequeridoRequeridoApp, webhook o URL scheme al que se llama al final de cualquier transacción. Esa app debe estar lista para atender la llamada de la app POS. Máximo 50 caracteres.
transactionIdStringN/ARequeridoID de la transacción original que generamos nosotros y que se va a reembolsar.
tipDecimalOpcionalN/APropina incluida en la transacción. Dos decimales.
msiIntegerOpcionalN/ADifiere un pago. Número de meses de diferido: 0 (pago único), 3, 6, 9 o 12.
referenceStringOpcionalN/AReferencia de texto para identificar la transacción. Máximo 256 caracteres.
emailStringOpcionalN/ACorreo del cliente (cuando se envía). Máximo 150 caracteres.
phoneStringOpcionalN/ATeléfono del cliente (cuando se envía). Máximo 14 caracteres.
showPhotoButtonBooleanOpcionalN/APermite adjuntar una foto durante la transacción. Por defecto false.
mandatoryPhotoBooleanOpcionalN/AHace obligatoria la foto durante la transacción. Requiere showPhotoButton en true.
deviceTokenStringOpcionalN/AIdentificador del dispositivo, de tipo string. Se define con .setDeviceToken(...): camelCase, con la misma nota que userToken de arriba.
3pIDStringOpcionalN/AIdentificador del tercero que solicita la transacción.
hidePrinterBooleanOpcionalN/AIndica si se muestra la opción de impresora después de una transacción exitosa. Se define con .setHidePrinterOption(...).
skipMailPrintBooleanOpcionalN/AIndica si el ticket se envía automáticamente después de una transacción exitosa. Requiere un correo o un teléfono definido y se salta la pantalla de envío del ticket.
xpLandscapeBooleanOpcionalN/AIndica si la app POS se abre en modo horizontal. Solo aplica a pantallas grandes.
deviceNameStringOpcionalN/ANombre para identificar el dispositivo.
setTimerFinishTRXIntegerOpcionalN/ATemporizador (en segundos) para avanzar a la siguiente pantalla si no hay interacción del usuario en la pantalla de confirmación. Requiere la app POS en versión 4.3.36 o superior y la dependencia billpocket-integration 2.30.0 o superior. Nota: el campo subyacente se llama timerFinishTRX (sin set) en extras.timerFinishTRX de Cloud Terminal API y en el typed extra de Links de la misma funcionalidad; el prefijo set de aquí es propio de la nomenclatura de esta tabla, no un campo distinto.
autoPaymentEnabledBooleanOpcionalN/APonlo en true para iniciar el cobro de forma automática, sin presionar el botón Cobrar. Es del mismo tipo que extras.autoPaymentEnabled en Cloud Terminal API y que el typed extra que se usa en Mobile web (Links).
enableDialogTipBooleanOpcionalN/ASi lo envías en true y no mandaste propina (omitida o en $0), el diálogo de propina se muestra durante el checkout. Pendiente de confirmación: consulta la nota de arriba; todavía no está confirmado como setter soportado de BPIntentBuilder.

Venta#

Llama a la app POS con el siguiente action string:
com.billpocket.payments.START
Inicia la app POS con la función builder, enviando un Intent con todos los parámetros requeridos.

Reembolso#

Para usar la funcionalidad de reembolso, asegúrate de incluir el siguiente import en tu proyecto:
Reembolsa una transacción autorizada previamente con un Intent, enviando el ID de la transacción. El reembolso debe hacerse el mismo día de la venta, antes de las 23:00 (22:59:59) hora de CDMX. Consulta todos los parámetros requeridos para reembolsar una transacción.
Nota
Al momento del reembolso, la transacción debe tener 1 minuto o más de autorizada.
Hay dos formas de ejecutar los intents.

Opción 1 — Con validación del ID de la transacción#

Usa el servicio de autenticación que verifica la existencia del ID de la transacción:
Esta es la validación del servicio en el listener:

Opción 2 — Intent directo#

Envía el intent directamente, sin pasar por el servicio que valida la existencia del ID de la transacción:

Respuesta#

La respuesta llega al método onActivityResult de la Activity que hizo la llamada, como un Intent que contiene el resultado de la solicitud de transacción. Puedes parsearlo a un objeto BPPaymentResponse.

Modelo de datos de la respuesta#

Según el resultado de la operación, puedes recibir información adicional en las siguientes propiedades:
PropiedadTipoDescripción
resultStringResultado de la operación: aprobada, rechazada o error.
statusinfoStringEn caso de error, se devuelve información adicional.
amountDecimalMonto de la transacción. No incluye la propina.
tipDecimalPropina incluida en la transacción.
referenceStringReferencia de texto para identificar la transacción.
transactionidStringID de la transacción que generamos nosotros.
msiIntegerNúmero de meses de diferido a los que se difirió el pago: 0 (pago único), 3, 6, 9 o 12.
authorizationStringAutorización que otorga el banco emisor.
creditcardStringÚltimos 4 dígitos de la tarjeta.
cardtypeStringTipo de tarjeta.
emailStringCorreo del cliente (cuando se envía).
phoneStringTeléfono del cliente (cuando se envía).
arqcStringCriptograma validado del chip de la tarjeta (cuando está disponible).
aidStringIdentificador de aplicación del chip de la tarjeta (cuando está disponible).
applabelStringEtiqueta de aplicación del chip de la tarjeta (cuando está disponible).
urlStringIdentificador para obtener el comprobante digital.
identifierStringIdentificador que enviaste en la venta para la trazabilidad.
bankStringEmisor de la tarjeta.
accountTypeStringTipo de cuenta: credit (tarjeta de crédito) o debit (tarjeta de débito).
nameStringNombre del tarjetahabiente.
bp_versionStringVersión de la app POS.

Ajustes de la app POS#

Activa o desactiva funcionalidades desde los ajustes de la app POS.

Propinas#

Para usar propinas mediante Intents, hay que activar la opción en el menú de ajustes.
Menú de ajustes de la app POS de Billpocket en Android
Activa la opción Propina.
Opción Propina activada en los ajustes de la app POS
Ahora, si envías una transacción con un monto de propina mayor que 0, se muestra una nueva etiqueta debajo del monto de la transacción.
Etiqueta de propina debajo del monto de la transacción en la pantalla de pago
Si no envías monto de propina en la solicitud, o si es igual a 0 y la opción de propina está activada en los ajustes de la app, se muestra el diálogo de propina.
Diálogo de propina en el checkout
¿Necesitas acceso a la impresora de la terminal?
Consulta la documentación del fabricante.

Recursos#

Revisa los siguientes demos y dependencias:
Demo de Android intents
Dependencia GMS
Documentación de la impresora

¿Tienes una sugerencia sobre esta documentación? Contáctanos.
Modified at 2026-09-11 14:44:42
Previous
App-to-App
Next
App to App — iOS
Built with