1. App-to-App
  • API Docs Mexico 🇲🇽
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Create payment (tokenless)
      • Request deferred options
      • Refund a transaction
      • Authorize payments
      • Preauthorization (tokenless)
      • Void a transaction
      • Reauthorize payments
      • Capture an authorized payment
      • Bin Info V2
      • Bin Info
      • Validate OTP
    • One-Click and Scheduled Payments
      • Request a recurring charge token
      • Create a recurring charge
      • Make an One-click payment
      • Update recurring charge card data
      • Cancel a recurring charge
      • Update a recurring charge
      • Add a temporary charge or discount
      • Authorize payments
      • Capture an authorized payment
      • Get recurring charge Info
    • Transfer in
      • Get Bank List
      • Request a Transfer In token
      • Init Transaction
      • Get Status
    • Transfer Out
      • Get Bank List
      • Get Bank List V2
      • Request a Transfer Out token
      • Init Transaction
      • Get Status
      • Balance for Payouts
    • Smartlinks
      • Create a Smartlink
      • Get a Smartlink
      • Delete a smartlink
      • Update a Smartlink
    • Payment Button
      • Create a payment button
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Chargebacks
      • Query Chargebacks
      • Request Chargeback Export
    • Commissions
      • Get Commission Configuration
    • Payment Credentials
      • Create a credential
      • Activate or deactivate
      • Delete credential
      • Regenerate a credential
      • Update credential
      • Advanced search
      • Search credentials
    • Platform Status
      • Get platform status
      • Get gateway status
    • Settlement
      • Query settlement
    • Subscription Transactions
      • Get subscription transactions
  • Card Present Billpocket
    • Get Started
      • Create Account
      • User Token
      • API Keys
    • Webhooks
      • Webhooks — Transfer Funds to Your Bank Account
      • Transfer Funds Errors
    • Terminals
      • App Review
      • Splash Screen
    • Card Present Payment Services
      • Cloud Terminal API
        • Collect card payments
        • Print Ticket
        • Cancel Push Notification
        • Get transaction status
        • Collect card payments v2
      • App-to-App
        • Android intents
        • App to App — iOS
        • App to App — Mobile Web
      • Terminal SDK
        • Terminal SDK Android
        • Android SDK errors
    • Card not Present Billpocket Services
      • 3DS Checkout
        • Create checkout
        • Get checkout details
      • E-commerce Flex
        • Get token
        • Validate token
        • Collect payments
        • Refund
        • Capture an authorized payment
        • Get status
    • Catalogs
      • States
      • Municipalities
      • Tax companies
      • Commercial activities
    • User Settings
      • Create user
    • Accounts
      • Clabe Account Setup
        • Add CLABE account
      • Deposit Accounts
        • Add or update CLABE account
    • Transactions
      • Transaction List
        • Get token
        • Get transaction list
        • Get transaction list v2
        • Get transaction list v3
        • Get transaction list v4
      • Cancel Payments
        • Cancel payments Error Codes
        • Cancel payments
  • API Raw Card Present
    • The Amount Object
    • Error Catalog
    • Key Exchange Process
    • Release Notes
    • Test Data
    • One-time payments
      • Single payment
    • Two-step-payments
      • Authorization and capture
    • Voids & Refunds
      • Refund a transaction
      • Void & Reverse
    • Card information
      • Get BIN Info
      • Bin Info V2
      • Request deferred options
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Webhooks — Introduction
      • Good Practices
      • Webhooks — Card Payments
      • Webhooks — Refunds
      • Check Your Webhooks
    • Chargebacks
      • Query Chargebacks
      • Request Chargeback Export
  • 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
    • 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
    • StatusComponent
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • amount
    • TransactionResponse
    • PrintJobRequest
    • one-and-two-step-payment-2
    • networkToken
    • ChargebackItem
    • SubscriptionTransaction
    • extra_taxes
    • RawResponse
    • CommandText
    • currency
    • ErrorResponse400
    • ErrorResponse
    • SettlementResponse
    • SettlementRecord
    • webhooksItem
    • card
    • CardData
    • CommandColumns
    • Amount
    • Country
    • ErrorResponse401
    • card_details
    • LinkFailure
    • ColumnItem
    • extraTaxes
    • ErrorResponse403
    • enc_tlv
    • CommandDivider
    • TransactionEvent
    • Deferred
    • payment_method
    • ErrorResponse500
    • deferred
    • CommandFeed
    • TransactionStatus
    • pos_details
    • CommandSpace
    • ReadingType
    • ContactDetails
    • contact_details
    • sub_merchant
    • CommandCut
    • FailureReason
    • documentType
    • Subscription
    • metadata
    • CommandImage
    • EventTerminal
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • EventOperation
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • EventAmount
    • Billing-Address
    • SubscriptionUpdate
    • EventExtraTaxes
    • PrintJobAccepted
    • product
    • SubscriptionAdjustmentRequest
    • PrinterError
    • EventMetadata
    • threeDomainSecure
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • webhooks
    • AmountCore
    • headers
    • ExtraTaxes
    • PrintWebhookPayload
    • Metadata
    • webhooksChargeback
    • citMit
    • AmountWithTip
    • network
    • TransactionSearchBody
    • TransactionSearchOnlineBody
    • binInfo
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • messageFields
    • TransactionEvent_2
    • UnexpectedErrorResponse
    • FailureReason_2
    • transactionType
    • ExternalReferenceId
    • EventTerminal_2
    • ExternalSubscriptionId
    • EventOperation_2
    • EventAmount_2
    • EventExtraTaxes_2
    • EventMetadata_2
    • SettlementTicketRequest
BienvenidaPerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. App-to-App

App to App — Mobile Web

Open the point of sale (POS) app from a native or mobile web app on Android using custom URL schemas to process payments through a terminal.
INFO
Service available in Mexico 🇲🇽 only.

Requirements#

In order to call the POS app from a mobile web application within an Android device, you must meet the following requirements:
A valid account
The latest available version of the Billpocket POS app installed on Android
A supported Billpocket reader

Calling the POS app#

Collect and send all the required string and decimal parameters in the URL as a query string when calling the POS app to perform an operation with a terminal. The POS app is displayed when you open a link with the custom URL scheme Billpocket://. The transaction is configured according to the parameters received in the call.
Boolean and Integer parameters are not read from the query string
The POS app parses Boolean and Integer values as native types. A URL query string can only carry text, so those parameters are not read reliably if they only travel in the URL.
To use any of the parameters listed in Typed Intent extras, attach them as typed Android Intent extras (Intent.putExtra(...)) on the same ACTION_VIEW intent that opens the billpocket:// URI — see the native Android example below.

Supported operations#

Sale
Refund

Request data model#

To send a request to the terminal, you must send an object that contains all the required properties. The properties are split into two groups, because they travel through two different mechanisms on the same call.

Query string parameters#

String and Decimal parameters. Send these as the query string of the billpocket:// URL, using the exact key shown in the Property column below.
PropertyTypeSaleRefundDescription
transactionStringRequiredRequiredTransaction type: venta (sale) or devolucion (refund).
usertokenStringRequiredRequiredYour user token. The query string key is lowercase. This same value is called userToken (camelCase) in Android intents and in the SDK — the POS app does not recognize the camelCase key in links.
identifierStringRequiredRequiredAn identifier generated on your side for transaction traceability. It is returned in the response. 256 characters maximum.
amountDecimalRequiredN/ATransaction amount. Does not include tip. Two decimals.
urlSchemeStringRequiredRequiredApp, webhook or URL scheme to be called at the end of any transaction. This app should be ready to handle the POS app call. 50 characters maximum.
transactionIdStringN/ARequiredOriginal transaction ID generated by us, to be refunded.
tipDecimalOptionalN/ATip included in the transaction. Two decimals.
referenceStringOptionalN/AText reference to identify the transaction. 256 characters maximum.
emailStringOptionalN/ACustomer's email (when provided). 150 characters maximum.
phoneStringOptionalN/ACustomer's phone number (when provided). 14 characters maximum.
devicetokenStringOptionalN/AString identifier for the device. The query string key is lowercase. This same value is called deviceToken (camelCase) in Android intents and in the SDK.
3pIDStringOptionalN/AIdentifier for the third party requesting the transaction.
deviceNameStringOptionalN/AName to identify the device.

Typed Intent extras#

Boolean and Integer parameters. Send these as typed extras on the Intent that opens the billpocket:// URL — not as query string text. See Sale from a native Android app.
PropertyTypeSaleRefundDescription
msiIntegerOptionalN/ADefer a payment. Number of monthly installments: 0 (one-time payment), 3, 6, 9 or 12.
showPhotoButtonBooleanOptionalN/AAllows attaching a photo during the transaction. Default false.
mandatoryPhotoBooleanOptionalN/AMakes the photo mandatory during the transaction. Requires showPhotoButton set to true.
hidePrinterBooleanOptionalN/ASpecifies whether the printer option is displayed after a successful transaction.
skipMailPrintBooleanOptionalN/ASpecifies whether the ticket is automatically sent after a successful transaction. Requires an email or phone number set, and skips the send-ticket activity.
xpLandscapeBooleanOptionalN/ASpecifies whether the POS app launches in landscape mode. Only applies to large screens.
enableDialogTipBooleanOptionalN/ASet to true to display the tip dialog during checkout. For the dialog to be displayed, tip must be omitted or sent with the value 0.
autoPaymentEnabledBooleanOptionalN/ASet to true to activate the collection process automatically, without pressing the Cobrar button. Same type used in Android intents and in Cloud Terminal API's extras.autoPaymentEnabled.
setTimerFinishTRXIntegerOptionalN/ATimer (in seconds) to continue to the next screen if there is no user interaction on the confirmation screen. The typed extra key is timerFinishTRX (without set) — it matches extras.timerFinishTRX in Cloud Terminal API and the reference Android implementation.
Important
Booleans must be sent as true / false, never as 1 / 0.

Sale#

Here is an example of how to call the POS app via custom URL schema on Android to make a sale. This covers String / Decimal parameters only — use it from a mobile web page or WebView.

Sale from a native Android app#

A pure browser window.location.replace(...) call cannot attach typed Intent extras — that requires a native Android caller building the Intent directly. Use this pattern whenever the sale needs any Boolean / Integer parameter from Typed Intent extras:
If the information sent is correct, the POS app opens on the payment screen with the configuration set for the transaction. Follow the on-screen steps to complete the collection process with the terminal.

Refund#

Here is an example of how to call the POS app via custom URL schema on Android to make a refund:

Chrome intents#

You can also create an Intent from a web application running on Chrome to start the integration process with an installed instance of the POS app.
Note
Integrations via Chrome intents do not return a response via a URL callback. To get the response, you can implement a webhook to receive the events in your application.
Check out the Android Intents with Chrome reference for more information.

POS app settings on Android#

Enable or disable features within the settings in the POS app.

Tips#

To use tips through intents, it is necessary to activate the option in the settings menu.
Billpocket POS app settings menu on Android
Activate the Propina option.
Propina option enabled in the POS app settings
Now, if a transaction is submitted with a tip amount greater than 0, a new label is displayed below the transaction amount.
payment-screen.png
If no tip amount is sent in the request, or if it is equal to 0 and the tip option is activated in the app settings, the tip dialog is displayed. This is the same behavior triggered by enableDialogTip.
Propina option enabled in the POS app settings

Response#

Receive the response of a request through a URL callback. The response is returned via custom URL schemas. The URL callback must correctly process the requests with the operation response.
You can place a custom URL scheme in the callback URL. You will need to register your custom URL scheme within your application so that it can handle incoming requests. Review the Android documentation on how to register custom URL schemes.
Below is an example of a response to a custom URL schema:
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

Response data model#

Depending on the result of the operation, you may receive additional information through the following properties:
PropertyTypeDescription
resultStringThe result of the operation: aprobada (approved), rechazada (declined) or error.
statusinfoStringIn case of error, additional information is returned.
amountDecimalTransaction amount. Does not include tip.
tipDecimalTip included in the transaction.
referenceStringText reference to identify the transaction.
transactionidStringTransaction ID generated by us.
msiIntegerNumber of monthly installments the payment was deferred to: 0 (one-time payment), 3, 6, 9 or 12.
authorizationStringAuthorization given by the issuer bank.
creditcardStringLast 4 digits of the card.
cardtypeStringCard type.
emailStringCustomer's email (when provided).
phoneStringCustomer's phone number (when provided).
arqcStringCard's chip validated cryptogram (when available).
aidStringCard's chip application identifier (when available).
applabelStringCard's chip application label (when available).
urlStringIdentifier to obtain a digital voucher.
identifierStringIdentifier sent during the sale for traceability.
bankStringCard issuer.
accountTypeStringAccount type: credit (credit card) or debit (debit card).
nameStringCardholder name.
bp_versionStringPOS app version.

Got a suggestion on this documentation? Contact us.
Modified at 2026-08-25 17:02:28
Previous
App to App — iOS
Next
Terminal SDK
Built with