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 — iOS

Abre la app de punto de venta (POS) desde tu app móvil de iOS para procesar pagos con una terminal. La app POS se llama mediante un custom URL scheme.
INFO
Servicio disponible solo en México 🇲🇽.

Requisitos#

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

Llamar a la app POS#

La app POS usa el custom URL scheme billpocket:// para recibir solicitudes de otras apps. Puedes enviar parámetros en la solicitud para configurar la operación que quieres realizar. Cuando recibe una solicitud, la app se abre en la pantalla que corresponde según la configuración enviada.
Puedes realizar las siguientes operaciones:
Venta
Reembolso

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. 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 custom URL schemes.
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.
comesFromQRBooleanOpcionalN/APonlo en true si la URL de la transacción viene de una imagen QR.

Venta#

Envía una solicitud de venta desde tu app al POS para procesar un pago con una terminal.
Para hacer una solicitud de venta debes:
Poner la propiedad transaction en el valor venta.
Enviar tu user token.
Enviar un identifier generado de tu lado para la trazabilidad. Se devuelve en la respuesta.
Enviar un monto válido.
Enviar un urlScheme donde se devolverá la respuesta.
También puedes definir una propina, diferir un pago y otras operaciones. Consulta el modelo de datos de la solicitud para ver todos los parámetros disponibles en la solicitud.
Los parámetros deben concatenarse en un query string junto con el custom URL scheme billpocket://.
Importante
Debes asegurarte de codificar correctamente los parámetros antes de hacer una solicitud.

Ejemplo de solicitud de venta#

En este ejemplo, los valores necesarios para la solicitud se obtienen de campos de texto para concatenarlos a la URL.
Los valores de NSString se concatenan y se convierten a NSURL para formar una URL válida.
Para concatenar NSString, usa stringWithFormat como se muestra abajo.
Abre la URL con el método open().

Si la solicitud fue exitosa, la app POS se muestra en la pantalla de pago con la configuración enviada.#

Reembolso#

Envía una solicitud desde tu app para procesar un reembolso.
Para hacer un reembolso debes:
Poner la propiedad transaction en el valor devolucion.
Enviar tu user token.
Enviar un identifier generado de tu lado para la trazabilidad. Se devuelve en la respuesta.
Enviar un monto válido.
Enviar un urlScheme donde se devolverá la respuesta.
Enviar el ID de la transacción que se va a reembolsar.
Revisa el modelo de datos de la solicitud.
Los parámetros deben concatenarse en un query string junto con el custom URL scheme billpocket://. Debes asegurarte de codificar correctamente los parámetros antes de solicitar un reembolso.

Condiciones del reembolso#

Para poder reembolsarse, una transacción debe cumplir con las siguientes condiciones:
La transacción original debe llevar aprobada al menos 1 minuto.
La solicitud debe hacerse antes de las 11 p.m. (hora de CDMX) del mismo día en que se hizo la transacción original.
El reembolso debe ser por un monto igual o menor al de la transacción original.
Nota
Para procesar un reembolso en iOS necesitas la app POS en versión 4.3.24 o superior.

Ejemplo de solicitud de reembolso#

Para concatenar NSString, usa stringWithFormat como se muestra abajo.
URLWithString se usa para castear la respuesta NSURL.
Abre la URL con el método open().

Si la solicitud fue exitosa, la app POS se muestra en la pantalla de pago con la configuración enviada.#

Respuesta#

Averigua si la solicitud fue aprobada (aprobada), rechazada (rechazada) o si hubo un error (error) con la propiedad result que se devuelve en la respuesta.
La respuesta se envía junto con los parámetros de la operación a la URL que definiste en la propiedad urlScheme. El payload viene codificado como query string, así que tiene una estructura parecida a la de la solicitud. Debes procesar la respuesta correctamente para continuar con el flujo de pago.
Entre los parámetros importantes que se devuelven está la propiedad transactionId, que contiene el ID de la transacción aprobada y te permite realizar otras operaciones, como un reembolso.

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.

Ejemplo de una respuesta#

myapp://result=aprobada&statusinfo=&amount=100.00&tip=15.00&reference=Pago%20%26%20%25%20%23%20(%20)%20/%20@%20con%20propina%20a%203%20meses%20sin%20intereses&transactionid=72037…

Puedes implementar un Custom URL Scheme o un Universal Link para manejar la respuesta en tu aplicación. Consulta la documentación de Apple sobre cómo definir un custom URL scheme y cómo permitir que las apps y los sitios web enlacen a tu contenido.#

Consulta también#

Descubre cómo configurar un splash screen al llamar a la app POS.#

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