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

App a app — web móvil

Abre la app de punto de venta (POS) desde una app nativa o web móvil en Android, con custom URL schemes, para procesar pagos con una terminal.
INFO
Servicio disponible solo en México 🇲🇽.

Requisitos#

Para llamar a la app POS desde una aplicación web móvil 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 en Android
Un lector de Billpocket compatible

Llamar a la app POS#

Reúne y envía en la URL, como query string, todos los parámetros string y decimal requeridos cuando llames a la app POS para hacer una operación con una terminal. La app POS se muestra cuando abres un link con el custom URL scheme Billpocket://. La transacción se configura según los parámetros que recibe en la llamada.
Los parámetros Boolean e Integer no se leen del query string
La app POS interpreta los valores Boolean e Integer como tipos nativos. Un query string de URL solo puede transportar texto, así que esos parámetros no se leen de forma confiable si solo viajan en la URL.
Para usar cualquiera de los parámetros de Extras tipados del Intent, adjúntalos como extras tipados del Intent de Android (Intent.putExtra(...)) en el mismo intent ACTION_VIEW que abre la URI billpocket:// — consulta el ejemplo nativo de Android más abajo.

Operaciones disponibles#

Venta
Reembolso

Modelo de datos de la solicitud#

Para enviar una solicitud a la terminal, debes enviar un objeto con todas las propiedades requeridas. Las propiedades están separadas en dos grupos, porque viajan por dos mecanismos distintos en la misma llamada.

Datos del query string#

Parámetros String y Decimal. Envíalos en el query string de la URL billpocket://, con la clave exacta que aparece en la columna Propiedad de abajo.
PropiedadTipoVentaReembolsoDescripción
transactionStringRequeridoRequeridoTipo de transacción: venta para una venta o devolucion para un reembolso.
usertokenStringRequeridoRequeridoTu user token. La clave del query string va en minúsculas. Este mismo valor se llama userToken (camelCase) en Android intents y en el SDK: la app POS no reconoce la clave en camelCase en los links.
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.
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.
devicetokenStringOpcionalN/AIdentificador del dispositivo, de tipo string. La clave del query string va en minúsculas. Este mismo valor se llama deviceToken (camelCase) en Android intents y en el SDK.
3pIDStringOpcionalN/AIdentificador del tercero que solicita la transacción.
deviceNameStringOpcionalN/ANombre para identificar el dispositivo.

Extras tipados del Intent#

Parámetros Boolean e Integer. Envíalos como extras tipados en el Intent que abre la URL billpocket://, no como texto del query string. Consulta Venta desde una app nativa de Android.
PropiedadTipoVentaReembolsoDescripción
msiIntegerOpcionalN/ADifiere un pago. Número de meses de diferido: 0 (pago único), 3, 6, 9 o 12.
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.
hidePrinterBooleanOpcionalN/AIndica si se muestra la opción de impresora después de una transacción exitosa.
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.
enableDialogTipBooleanOpcionalN/APonlo en true para mostrar el diálogo de propina durante el checkout. Para que el diálogo se muestre, tip debe omitirse o enviarse con el valor 0.
autoPaymentEnabledBooleanOpcionalN/APonlo en true para iniciar el cobro de forma automática, sin presionar el botón Cobrar. Es del mismo tipo que se usa en Android intents y que extras.autoPaymentEnabled de Cloud Terminal API.
setTimerFinishTRXIntegerOpcionalN/ATemporizador (en segundos) para avanzar a la siguiente pantalla si no hay interacción del usuario en la pantalla de confirmación. La clave del extra tipado es timerFinishTRX (sin set): coincide con extras.timerFinishTRX de Cloud Terminal API y con la implementación de referencia de Android.
Importante
Los booleanos deben enviarse como true / false, nunca como 1 / 0.

Venta#

Este es un ejemplo de cómo llamar a la app POS con un custom URL scheme en Android para hacer una venta. Cubre solo los parámetros String y Decimal: úsalo desde una página web móvil o un WebView.

Venta desde una app nativa de Android#

Una llamada de navegador con window.location.replace(...) no puede adjuntar extras tipados del Intent: para eso hace falta que una app nativa de Android construya el Intent directamente. Usa este patrón siempre que la venta necesite algún parámetro Boolean o Integer de Extras tipados del Intent:
Si la información que enviaste es correcta, la app POS se abre en la pantalla de pago con la configuración definida para la transacción. Sigue los pasos en pantalla para completar el cobro con la terminal.

Reembolso#

Este es un ejemplo de cómo llamar a la app POS con un custom URL scheme en Android para hacer un reembolso:

Chrome intents#

También puedes crear un Intent desde una aplicación web que corre en Chrome para iniciar la integración con una instancia instalada de la app POS.
Nota
Las integraciones por Chrome intents no devuelven la respuesta por un callback de URL. Para obtener la respuesta, puedes implementar un webhook que reciba los eventos en tu aplicación.
Consulta la referencia de Android Intents con Chrome para más información.

Ajustes de la app POS en Android#

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.
payment-screen.png
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. Es el mismo comportamiento que activa enableDialogTip.
Diálogo de propina en el checkout

Respuesta#

Recibe la respuesta de una solicitud por un callback de URL. La respuesta se devuelve con custom URL schemes. El callback de URL debe procesar correctamente las solicitudes con la respuesta de la operación.
Puedes usar un custom URL scheme en la URL de callback. Tendrás que registrar tu custom URL scheme dentro de tu aplicación para que pueda atender las solicitudes entrantes. Revisa la documentación de Android sobre cómo registrar custom URL schemes.
Este es un ejemplo de respuesta a un custom URL scheme:
myApp://identifier=bpTRX&amount=10.00&authorization=BP6602&result=aprobada&reference=Venta%2520-%2520B99773E6BA6&creditcard=3292&cardtype=MASTERCARD&aid=A0000000041010&tip=1.01&url=68a30855f20923fc0d20eeaeee11061a62ab0eec&arqc=3C2A4D155F23AA81&bank=Bancomer%2520%252F%2520Banamex&name=%2520PERFIL%2520EJECUTIVO%252FPRG%2520%2520%2520%2520%2520&bp_version=4.3.0&transactionid=111029&accountType=DEBIT&applabel=Debit%2520Mastercard

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.

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