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

Android intents

Open the point of sale (POS) app from your Android mobile app to process payments with a terminal.
INFO
Service available in Mexico 🇲🇽 only.

Requirements#

In order to call the POS app from your app within an Android device, you must meet the following requirements:
A valid account
The latest available version of the Billpocket POS app installed from the Google Play Store
Be logged in within the POS app
A supported POS terminal

Adding the SDK to your project#

Add the SDK in your project's build.gradle file.
Add the following necessary dependencies:

Building the Intent#

Make sure to include the following import in your project:
Create an instance of the BPIntentBuilder class and set an action:
Next, every mandatory or optional parameter should be set to the instance:
enableDialogTip is pending confirmation for this channel
BPIntentBuilder does not have a documented setter for enableDialogTip today. It is confirmed as a Boolean field for the Mobile web (Links) channel and for Cloud Terminal API's extras.enableDialogTip.
Before publishing it as supported here, confirm with BP engineering whether a setter exists (or is planned) for Android intents.

Calling the POS app#

The POS app must be called implicitly from your application, through the following action string.

Request data model#

To send a request to the terminal, you must send an object that contains all the required properties. Below is the list of all the properties available in the request by operation type.
PropertyTypeSaleRefundDescription
transactionStringRequiredRequiredTransaction type: venta (sale) or devolucion (refund).
userTokenStringRequiredRequiredYour user token. Set via .setUserToken(...). Unlike Mobile web (Links), the property/method name is camelCase — there is no raw query string key involved.
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.
msiIntegerOptionalN/ADefer a payment. Number of monthly installments: 0 (one-time payment), 3, 6, 9 or 12.
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.
showPhotoButtonBooleanOptionalN/AAllows attaching a photo during the transaction. Default false.
mandatoryPhotoBooleanOptionalN/AMakes the photo mandatory during the transaction. Requires showPhotoButton set to true.
deviceTokenStringOptionalN/AString identifier for the device. Set via .setDeviceToken(...) — camelCase, same note as userToken above.
3pIDStringOptionalN/AIdentifier for the third party requesting the transaction.
hidePrinterBooleanOptionalN/ASpecifies whether the printer option is displayed after a successful transaction. Set via .setHidePrinterOption(...).
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.
deviceNameStringOptionalN/AName to identify the device.
setTimerFinishTRXIntegerOptionalN/ATimer (in seconds) to continue to the next screen if there is no user interaction on the confirmation screen. Requires POS app version 4.3.36 or higher and billpocket-integration dependency 2.30.0 or higher. Note: the underlying field is called timerFinishTRX (without set) in Cloud Terminal API's extras.timerFinishTRX and in the Links typed extra of the same functionality — the set prefix here is specific to this table's naming, not a different field.
autoPaymentEnabledBooleanOptionalN/ASet to true to activate the collection process automatically, without pressing the Cobrar button. Same type as extras.autoPaymentEnabled in Cloud Terminal API and as the typed extra used in Mobile web (Links).
enableDialogTipBooleanOptionalN/AIf sent as true and no tip was sent (omitted or $0), the tip dialog is displayed during checkout. Pending confirmation — see the note above; not yet confirmed as a supported BPIntentBuilder setter.

Sale#

Call the POS app through the following action string:
com.billpocket.payments.START
Start the POS app through the builder function by sending an Intent with all required parameters.

Refund#

To use the refund functionality, make sure to include the following import in your project:
Refund a previously authorized transaction through an Intent by sending the transaction ID. The refund of the transaction must be made the same day of the sale, before 23:00 (22:59:59) CDMX time. View all the required parameters to refund a transaction.
Note
The transaction must be authorized within 1 minute or more at the time of a refund.
There are two ways to perform the intents.

Option 1 — With transaction ID validation#

Use the transaction ID existence authentication service:
This is the validation of the service in the listener:

Option 2 — Direct intent#

Send the intent directly, without validating the transaction ID existence service:

Response#

The response is received by the calling Activity's onActivityResult method as an Intent, which contains the result of the transaction request. You can parse it to a BPPaymentResponse object.

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.

POS app settings#

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.
Tip label shown below the transaction amount on the payment screen
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.
Tip dialog displayed at checkout
Do you need access to the terminal printer?
Check the manufacturer's documentation.

Resources#

Check out the following demos and dependencies:
Android intents demo
GMS dependency
Printer documentation

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