1. App-to-app
Kushki Docs
English
  • Español
  • English
  • Home
  • Quick Start
    • Frequently Asked Questions
    • Moving to Production
    • Policy for Important API Changes
    • Test Data
    • Error Codes
    • Latest Features
  • Payment Glossary
    • Payments Glossary
  • One-time card payments (Online)
    • Supported card brands
    • Functionalities by business model
    • How do third party commissions work?
    • Integration guide Third Party Commissions
    • Network Tokens
    • One-step Payments
      • How do Card Payments Work?
      • Accept a Card Payment
      • Direct charge (without token)
      • Accept One-Time Payments with OTP
      • OTP Authentication Error Codes
      • Error codes for single card payments
    • Two-steps Payments
      • How do single payments with authorization and capture work?
      • Receive payments with authorization and capture
    • Refunds
      • Returns, cancellations, and refunds
    • 3DS Authentication
      • Introduction to 3DS
      • 3DS API integration
      • 3DS integration with kushki.js library
      • 3DS API integration plus kushki.js library
      • 3DS Error Codes
    • Apple Pay Payments
      • Apple Pay Configuration
      • Apple Pay Sandbox testing
  • Recurring Card Payments (Online)
    • Functionalities by business model
    • External subscriptions to Kushki
    • Authenticate your subscriptions with 3DS
    • Accept one-click payments with 3DS
    • Error codes in recurring charges
    • Apple Pay for Subscriptions
    • Scheduled payments
      • How do Credit or Debit Card Payment Recurring Charges Work?
      • Create a recurring charge
      • Manage your Scheduled Charges
    • OneClick Payments
      • Accepting One-Click Payments
      • How do OneClick payments with authorization and capture work?
      • Receive one-click payments with authorization and capture
  • Card-present payments
    • Card present payments
    • Accept card present payments
    • Test data
    • Webhooks for card present
    • Cloud Terminal API
      • Cloud terminal API overview
      • Take payments
      • Cancel a payment request
      • Check the status of a payment request
      • How to print a customized ticket?
    • App-to-app
      • App-to-app overview
      • Take payments
    • Terminal SDK
      • Terminal SDK Introduction
      • Take payments
    • Raw card-present API
      • Raw card-present API overview
      • Cryptographic key exchange
      • Sample script to encrypt information
      • Take Payments
      • Frequently Asked Questions
      • Error codes for card-present transactions
    • Transactions
      • Transactions
      • Cancel payments
    • Kushki One
      • First Steps
      • Autenticación y Cifrado de Requests
      • Accept payments with Kushki One
      • Amount Format
      • Async services and webhooks
      • Printing on SmartPOS terminal
      • Unified Error Catalog — Kushki ONE Connect
    • Kushki One Payment App
      • Overview
      • Process a payment
      • Split payment on the terminal
      • Refunds and PreAuth & Capture
      • Review Your Transactions
      • Terminal Setup
  • Wire Transfers
    • How do Payments by Wire Transfers Work?
    • Banks and transaction details for bank transfer payments
    • Receive Wire Transfers
    • Check the Status of a Transaction
  • Money Disbursement
    • Wire Transfer
      • How Does a Payment Distribution by Wire Transfer Work?
      • Payment Distribution to Bank Accounts
      • Error codes for transfer dispersions
  • Payment Links
    • Smartlinks
  • Plugins
    • Shopify
      • Shopify
      • Plugin Operation
    • VTEX
      • VTEX Integration Guide
  • Payment forms and buttons
    • Kajita
      • How Does it Work?
      • Payment Kajitas
    • Payment Button
      • Overview
      • Generate a payment button
  • Branch Offices Management
    • How to Onboard Submerchants via API
  • Notifications
    • Webhooks
    • Good Practices
    • Check your Webhooks
    • One-time Payments Webhooks
      • Webhook for One-Time Payments made with a card
      • Webhook for One-Time Payments by Wire Transfer
      • Webhook for One-Time Payments in Cash
    • Recurring Payments Webhooks
      • Webhook for Recurring Payments Made with Card
    • Payment Distribution Webhooks
      • Webhook for payment disbursement through wire transfer
    • Payment button Webhooks
      • Webhooks with Payment Button
    • Smartlinks Webhooks
      • Webhooks with Smartlinks
    • Refunds Webhooks
      • Webhook for Voids and Refunds
      • Chargeback Webhooks
HomeMexico 🇲🇽
Ecuador 🇪🇨Chile 🇨🇱Colombia 🇨🇴Peru 🇵🇪
HomeMexico 🇲🇽
Ecuador 🇪🇨Chile 🇨🇱Colombia 🇨🇴Peru 🇵🇪
Status
Soporte / Support
English
  • Español
  • English
  1. App-to-app

Take payments

Android
iOS
Accept payments with a terminal from your mobile point of sale through our POS app. You can integrate your app on Android using Intents and Links.

Intents#

Execute an action in our POS application through an Intent on Android from your application. Install the SDK and send the required parameters when executing an action.

Adding the SDK to your proyect#

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

Building the Intent#

Create an instance of BPIntentBuilder class and set an action:
Next, every mandatory or optional parameter should be set to the instance:

Request data model#

These are all the parameters you can configure when making a request.
PropertyTypeRequiredDescription
transactionStringYesTransaction type: venta: Sale operation. devolucion: Refund operation.
userTokenStringYesUser token
identifierStringYesSend an identifier generated on your side for transaction traceability. It will be returned in the response. 256 characters maximum.
amountNumberYesTransaction amount. Do not include tip. Two decimals.
urlSchemeStringYesApp, 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.
tipNumberNoTip included in the transaction. Two decimals.
msiIntegerNoDefer a payment. Choose the number of monthly installments to defer payment:
  • 0 : One-time payment.
  • 3: 3 installments.
  • 6: 6 installments.
  • 9: 9 installments.
  • 12: 12 installments.
referenceStringNoText reference to identify the transaction. 256 characters maximum.
emailStringNoCustomer’s email (when provided). 150 characters maximum.
phoneStringNoCustomer's phone number (when provided). 14 characters maximum.
showPhotoButtonBooleanNoIt allows you to attach a photo during the transaction. The default value is false.
mandatoryPhotoBooleanNoMake photography mandatory during the transaction. You will need to set the showPhotoButton property to true.
deviceTokenStringNoString identifier for the device.
3pIDStringNoSpecify an identifier for the third party requesting the transaction.
hidePrinterBooleanNoSpecify if the printer option should be displayed after a successful transaction or not.
skipMailPrintBooleanNoSpecify if the ticket should be automatically sent after a successful transaction or not, this requires a mail or phone number set and will skip the send ticket activity.
xpLandscapeBooleanNoSpecify whether the POS application will launch in landscape mode. Only applies to large screens.
deviceNameStringNoName to identify the device.
setTimerFinishTRXIntegerNoSet the timer (in seconds) to continue to the next screen in case there is no user interaction on the confirmation screen.
autoPaymentEnabledBoolean (true or false)NoWhen this parameter is sent as true, the payment process will be triggered automatically without waiting for confirmation via the Pay button.

Operations#

Discover all the operations available through App to App integrations.

Sale#

Send a request with the required payment settings from your system to a terminal to perform the desired transaction.
Start the POS application via the builder function by sending an Intent with all the required parameters.
If the information submitted is correct, the POS app will open to the payment screen with the transaction settings configured. Follow the steps on the screen to complete the payment process with the terminal.
Please review the documentation to perform a cancellation.

Tipping#

You must enable the option in the settings menu to use tipping via Intents. Follow the steps below to enable tipping.
Click on the top left icon and select the Settings option.
Ajustes pos app
Activate the Propina option.
Habilita propina aplicación POS
If a transaction is set to a tip greater than 0, the tip amount will be displayed in a new label below the transaction amount.
Pantalla de pago aplicación POS
If no tip amount is submitted in the request or if it is equal to 0 and the tip option is enabled, the tip selection dialog will be displayed.
Diálogo de propina aplicación POS

Response#

The response will be received as an Intent by the onActivityResult method of the calling activity.
Depending on the result of the operation, you may receive additional information through some of the following properties.
Remember that not all properties will be available in the response. It will depend on the result of the operation.
PropertyTypeDescription
resultStringThe result of the operation. It can be:
  • aprobada: approved.
  • rechazada: declined.
  • error: error.
statusinfoStringIn case of error, additional information will be returned.
amountNumberMonto de la transacción (sin propina incluida). Dos decimales.
tipNumberTip included in the transaction.
referenceStringText reference to identify the transaction.
transactionIdStringTransaction id.
msiIntegerIf it is a deferred payment, the number of installments will be returned.
  • 0 : One-time payment.
  • 3: 3 installments.
  • 6: 6 installments.
  • 9: 9 installments.
  • 12: 12 installments.
authorizationStringAuthorization given by the issuer bank
creditcardStringLas 4 digits of the card.
emailStringCustomer’s email (when provided).
phoneStringCustomer's phone number (when provided).
cardtypeStringCard type.
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.
identifierStringTransaction amount. Do not include tip.
bankStringCard issuer.
accountTypeStringAccount type:
  • credit: credit card.
  • debit: debit card.
nameStringCardholder name.
bp_versionStringPOS app version.
Simulate different scenarios with test data.

Links#

Perform an action in our POS app using custom URL schemes on Android from your native or web app. Set the URL with all the parameters required to open the POS app and perform the operation. The POS app will open when a link with the custom URL scheme Billpocket:// is clicked.
You need to have our POS app installed and configured on the same device as the point of sale app.

Request data model#

These are all the parameters you can configure when making a request.
PropertyTypeRequiredDescription
transactionStringYesTransaction type: venta: Sale operation. devolucion: Refund operation.
userTokenStringYesUser token.
identifierStringYesSend an identifier generated on your side for transaction traceability. It will be returned in the response. 256 characters maximum.
amountNumberYesTransaction amount. Do not include tip. Two decimals.
urlSchemeStringYesApp, 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.
tipNumberNoTip included in the transaction. Two decimals.
msiIntegerNoDefer a payment. Choose the number of monthly installments to defer payment:
  • 0 : One-time payment.
  • 3: 3 installments.
  • 6: 6 installments.
  • 9: 9 installments.
  • 12: 12 installments.
referenceStringNoText reference to identify the transaction. 256 characters maximum.
emailStringNoCustomer’s email (when provided). 150 characters maximum.
phoneStringNoCustomer's phone number (when provided). 14 characters maximum.
showPhotoButtonBooleanNoIt allows you to attach a photo during the transaction. The default value is false.
mandatoryPhotoBooleanNoMake photography mandatory during the transaction. You will need to set the showPhotoButton property to true.
deviceTokenStringNoString identifier for the device.
3pIDStringNoSpecify an identifier for the third party requesting the transaction.
hidePrinterBooleanNoSpecify if the printer option should be displayed after a successful transaction or not.
skipMailPrintBooleanNoSpecify if the ticket should be automatically sent after a successful transaction or not, this requires a mail or phone number set and will skip the send ticket activity.
xpLandscapeBooleanNoSpecifies whether the POS application will launch in landscape mode. Only applies to large screens.
deviceNameStringNoName to identify the device.
enableDialogTipBooleanNoSet the property to true to display the tip dialog during checkout. For the dialog to be displayed, the tip must be omitted or sent with the value of $0.
autoPaymentEnabledinteger (1 for true or o for false)NoWhen this parameter is sent as 1, the payment process will be triggered automatically without waiting for confirmation via the Pay button.

Operations#

Discover all the operations available through App to App integrations.

Sale#

Send a request with the required payment settings from your system to a terminal to perform the desired transaction.
Below is an example of how to call the POS application.
If the information submitted is correct, the POS app will open to the payment screen with the settings configured for the transaction. Follow the steps on the screen to complete the payment process with the terminal.
Please review the documentation to perform a cancellation.

Chrome Intents#

You can also create an Intent from an app running in Chrome to perform an operation with the POS app.
Note: Integrations via Chrome Intents do not return a response via a callback. Instead, implement a [webhook]((/card-present-payments/webhooks) to receive the response from the operation.
Please review the documentation on Android Intents with Chrome.

Response#

Receive the response of a request via a URL callback. The response is returned to a custom URL scheme that you define. You must register the custom URL scheme within your application so that it can handle incoming requests. Please review the documentation on how to register a custom URL scheme in Android.
Example response to a 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
Depending on the result of the operation, you may receive additional information through some of the following properties.
Remember that not all properties will be available in the response. It will depend on the result of the operation.
PropertyTypeDescription
resultStringThe result of the operation:
  • aprobada: approved.
  • rechazada: declined.
  • error: error.
statusinfoStringIn case of error, additional information will be returned.
identifierStringIdentifier sent during the sale for traceability.
amountNumberTransaction amount. Do not include tip.
authorizationStringAuthorization given by the issuer bank
transactionIdStringTransaction id.
tipNumberTip included in the transaction.
msiIntegerIf it is a deferred payment, the number of installments will be returned.
  • 0 : One-time payment.
  • 3: 3 installments.
  • 6: 6 installments.
  • 9: 9 installments.
  • 12: 12 installments.
referenceStringText reference to identify the transaction.
emailStringCustomer’s email (when provided).
phoneStringCustomer's phone number (when provided).
creditcardStringLas 4 digits of the card.
cardtypeStringCard type.
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.
bankStringCard issuer.
accountTypeStringAccount type:
  • credit: credit card.
  • debit: debit card.
nameStringCardholder name.
bp_versionStringPOS app version.
Simulate different scenarios with the test data.
Please review the Android reference for Intents or Links for more detailed information.

Test data
Make any necessary adjustments to your system using the test data.
Transactions
Get the list of transactions with information relevant to your operations.
Modificado en 2026-10-14 19:44:26
Anterior
App-to-app overview
Siguiente
Terminal SDK
Built with