On-Reader Tipping (Pilot)

On-Reader Tipping makes it easy for your merchants to collect tips from their guests. At the start of each transaction, the guest is asked if they want to add a tip and then can enter the tip amount on the card reader.
The .NET solution supports the following tipping strategies:
  • Ask for Tip Amount: The tip amount decided by the customer is entered.
  • Ask for Total Amount: The total amount of the transaction is entered.
  • Ask for Percent Choice: The tip percent selected by the customer is entered.
  • Ask for Fixed Percent Amount: The customer has the option to accept or decline the fixed percent amount. The total amount of the transaction is entered.
Compatibility of Tipping Strategies with Card Readers and Integrations
The compatibility of on-reader tipping strategies with supported card readers and types of integration is shown in the table below.
Tip Amount
Total Amount
Percent Choice
Fixed Percent
Card readers that support tipping strategy
Verifone P400, PAX A920, Miura M010
Verifone P400, PAX A920, Miura M010
Verifone P400, PAX A920
Verifone P400, PAX A920
Integration types that support tipping strategy
PayButton 1.0 & 2.0, PayServer, .NET PayClient
PayButton 1.0 & 2.0, PayServer, .NET PayClient
PayButton 1.0 & 2.0, PayServer, .NET PayClient
PayButton 1.0 & 2.0, PayServer, .NET PayClient
Implementation Considerations for the Verifone Card Reader
On-reader tipping is supported on the Verifone P400 card reader, starting with the following versions:
  • SDK 2.59.0
  • PayServer 1.33.0
  • .NET PayClient 1.32.0
Asking for a Tip
To ask for a tip, create
TransactionProcessParameters
and pass these parameters, in addition to
TransactionParameters
, when starting a transaction. Code examples for the tipping strategies are shown below.
Ask for Tip Amount Code Example
ProcessStepParameters step = new TippingProcessStepParameters.Builder() .AskForTipAmount() .SuggestedAmount(1) // suggested tip amount (optional, alternative to SuggestedPercentage) .SuggestedPercentage(10) // suggested tip amount as a percentage of the original amount (optional, alternative to SuggestedAmount) .MaxTipAmount(2) // maximum tip amount (optional, alternative to MaxTipPercentage) .MaxTipPercentage(20) // maximum tip amount as a percentage of the original amount (optional, alternative to MaxTipAmount) .ShowAddTipConfirmationScreen(true|false) // activates/deactivates add tip confirmation screen (optional, default is true) .ShowTotalAmountConfirmationScreen(true|false) // activates/deactivates total amount confirmation screen (optional, default is false) .FractionDigits(0) // number of fraction digits for the tip amount that the user will have to type (optional, default for most of the currencies is 2) .Build(); processParameters = new TransactionProcessParameters.Builder() .AddStep(step) .Build();
Ask for Total Amount Code Example
ProcessStepParameters step = new TippingProcessStepParameters.Builder() .AskForTotalAmount() .SuggestedAmount(1) // suggested tip amount (optional, alternative to SuggestedPercentage) .SuggestedPercentage(10) // suggested tip amount as a percentage of the original amount (optional, alternative to SuggestedAmount) .MaxTipAmount(2) // maximum tip amount (optional, alternative to MaxTipPercentage) .MaxTipPercentage(20) // maximum tip amount as a percentage of the original amount (optional, alternative to MaxTipAmount) .ShowAddTipConfirmationScreen(true|false) // activates/deactivates add tip confirmation screen (optional, default is true) .ShowTotalAmountConfirmationScreen(true|false) // activates/deactivates total amount confirmation screen (optional, default is false) .FractionDigits(0) // number of fraction digits for the tip amount that the user will have to type (optional, default for most of the currencies is 2) .Build(); processParameters = new TransactionProcessParameters.Builder() .AddStep(step) .Build();
For the Miura card reader, both the
AskForTipAmount()
and
AskForTotalAmount()
tipping strategies shown in the previous code examples benefit from card reader screen configuration when performing the transaction. Although
ShowAddTipConfirmationScreen()
is used for the first Confirmation screen that appears,
ShowTotalAmountConfirmationScreen()
manages the second Confirmation screen that appears when confirming the total amount of the transaction. The Confirmation screen configuration properties are optional. By default, the Add Tip configuration screen is enabled and the Total Amount Tip configuration screen is disabled.
Ask for Percent Choice Code Example
ProcessStepParameters step = new TippingProcessStepParameters.Builder() .AskForPercentageTip() .Percentages(5, 10, 15) .ShowTotalAmountConfirmationScreen(true) .Custom(new AskForCustomTip.Builder() // defines configuration for custom tip amount screen (optional) .SuggestedAmount(1) // suggested tip amount (optional, alternative to SuggestedPercentage) .SuggestedPercentage(10) // suggested tip amount as a percentage of the original amount (optional, alternative to SuggestedAmount) .MaxTipAmount(2) // maximum tip amount (optional, alternative to MaxTipPercentage) .MaxTipPercentage(20) // maximum tip amount as a percentage of the original amount (optional, alternative to MaxTipAmount) .FractionDigits(0) // number of fraction digits for the tip amount that the user will have to type (optional, default for most of the currencies is 2) ) .Build(); processParameters = new TransactionProcessParameters.Builder() .AddStep(step) .Build();
Ask for Fixed Percent Amount Code Example
ProcessStepParameters step = new TippingProcessStepParameters.Builder() .AskForFixedTip() .Percentage(10) .Build();
Setting a Maximum Tip Amount or Percent
You have the option to set a maximum amount for tipping using
MaxTipAmount()
or
MaxTipPercentage()
. The tip amount or percent added to the transaction cannot be more than the value set using
MaxTipAmount()
or
MaxTipPercentage()
, which is based on the transaction value.
Asking for the Tip Amount of Completed Transactions
In the
TransactionCompleted
callback, you can access the
IncludedTipAmount
for completed transactions.
(transaction, transactionProcessDetails, error) => { //... if(transaction.Status == TransactionStatus.APPROVED) { Console.WriteLine("APPROVED: " + transaction.Identifier); Console.WriteLine("Tip Amount: " + transaction.Details.IncludedTipAmount); //.... } else { //.... } });
Former Method of Asking for a Tip
The former method of asking for a tip was deprecated, but is still supported.
var transactionProcessParameters = new TransactionProcessParameters.Builder() .AddAskForTipStep() .Build();