On This Page
Sale with On-Receipt Tipping
Use this information to process a sale with on-receipt tipping. After the original
transaction amount is pre-authorized, the customer writes the tip or total amount on the
printed receipt. A follow-on tip adjust request must be sent within 24 hours to capture
the transaction. For more information, see Tip Adjust.
By using this feature, you assume the risk of the
overcapture being declined and increased chargebacks. Only use this feature when
required. The recommendation is to process a sale with on-reader tipping whenever
possible. For more information, see Sale with On-Reader Tipping.
Process a Sale with On-Receipt Tipping
After completing a sale with on-receipt tipping transaction, a follow-on tip adjust
request must be sent within 24 hours to capture the transaction. For more information,
see Tip Adjust.
Follow these steps to process a sale with on-receipt tipping.
- Create aTransactionParametersobject and provide the required information for the payment.
- Retrieve thetransactionIntentvariable from themposUiobject and use thestartActivitymethod to initiate the transaction flow.val transactionParameters = TransactionParameters.Builder() .charge(BigDecimal("50.00"), Currency.USD) .customIdentifier("yourReferenceForTheTransaction") .autoCapture(false) .TipAdjustable(true) .build() val transactionIntent = mposUi.createTransactionIntent(transactionParameters) startActivityForResult(transactionIntent, MposUi.REQUEST_CODE_PAYMENT)
- After the transaction is complete and the Summary screen is dismissed, theonActivityResultmethod is triggered. This action returns information about the last transaction.override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == MposUi.REQUEST_CODE_PAYMENT) { when (resultCode) { // Result code from a successful transaction MposUi.RESULT_CODE_APPROVED -> { val transactionIdentifier = data?.getStringExtra(MposUi.RESULT_EXTRA_TRANSACTION_IDENTIFIER) Toast.makeText(findViewById(android.R.id.content),"Transaction approved!\nIdentifier: $transactionIdentifier", Toast.LENGTH_LONG).show() } // Result code from a declined, aborted or failed transaction MposUi.RESULT_CODE_FAILED -> { Toast.makeText(findViewById(android.R.id.content), "Transaction was declined, aborted, or failed", Toast.LENGTH_LONG).show() } } } }
- Get the full transaction object by retrieving thelatestTransactionfrom the mposUi object.val transactionObject = mposUi.latestTransaction
Tip Adjust
Use this information to process a tip adjust. This is a required follow-on
transaction after processing a sale with on-receipt tipping. The tip adjust request
must be sent within 24 hours to capture the transaction.
After the original sale transaction is pre-authorized, the customer writes the tip or
total amount on the printed receipt. The tip adjust request must be submitted with the
tip amount or with
0
, if no tip was provided. The tip adjust amount is
limited to 20% of the original transaction amount. Requests for higher amounts will be
rejected. A follow-on tip adjust request is then sent to capture the additional tip
amount. This transaction is also called an overcapture
. For more information, see Sale with On-Receipt Tipping.
Process a Tip Adjust
Follow these steps to process a tip adjust.
- Create aTransactionParametersobject and provide the required information for the payment.
- Retrieve thetransactionIntentvariable from themposUiobject and use thestartActivitymethod to initiate the transaction flow.val transactionParameters = TransactionParameters.Builder() .adjustTip("transactionIdentifier", BigDecimal("10.00"), Currency.USD) .build() val transactionIntent = mposUi.createTransactionIntent(transactionParameters) startActivityForResult(transactionIntent, MposUi.REQUEST_CODE_PAYMENT)
- After the transaction is complete and the Summary screen is dismissed, theonActivityResultmethod is triggered. This action returns information about the last transaction.override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == MposUi.REQUEST_CODE_PAYMENT) { when (resultCode) { // Result code from a successful transaction MposUi.RESULT_CODE_APPROVED -> { val transactionIdentifier = data?.getStringExtra(MposUi.RESULT_EXTRA_TRANSACTION_IDENTIFIER) Toast.makeText(findViewById(android.R.id.content),"Transaction approved!\nIdentifier: $transactionIdentifier", Toast.LENGTH_LONG).show() } // Result code from a declined, aborted or failed transaction MposUi.RESULT_CODE_FAILED -> { Toast.makeText(findViewById(android.R.id.content), "Transaction was declined, aborted, or failed", Toast.LENGTH_LONG).show() } } } }
- Get the full transaction object by retrieving thelatestTransactionfrom the mposUi object.val transactionObject = mposUi.latestTransaction