Tip Adjust

Tip Adjust allows you to offer your US-based restaurants their traditional, receipt-based tipping workflow for both magstripe and EMV transactions!

Get in touch with your account manager to activate this feature for you!

Run Charge and Provide Printed Receipt

The waiter takes the payment card from the guest back to the POS System and runs a CHARGE transaction for the invoice amount (excluding any tips). Your POS System then prints merchant and shopper receipts that include lines for Tip and Total Amount.

The guest receives back the payment card together with the printed receipts from the waiter and can fill in the desired Tip and/or Total Amounts at his discretion. If required, he also provides his signature. Once the guest has left, the waiter collects the receipt and stores it for later Tip Adjust.

To perform a CHARGE that can be Tip Adjusted later on, modify the MPTransactionParameters to include the tipAdjustable = YES property for the initial transaction:

MPTransactionParameters *tp = [MPTransactionParameters chargeWithAmount:[NSDecimalNumber decimalNumberWithString:@"10.00"]
															   currency:MPCurrencyUSD
															  optionals:
							   ^(id<MPTransactionParametersOptionals>  _Nonnull optionals)
							   {
								   optionals.subject = @"Bouquet of Flowers";
								   optionals.customIdentifier = @"yourReferenceForTheTransaction";
								   optionals.tipAdjustable = YES;
							   }];
							   
// Start the transaction as usual via [MPTransactionProvider startTransactionWithParameters:]

Make sure to always provide printed merchant and shopper receipts and especially ensure to print the lines for Tip and Total Amount if printTipLine equals YES.

Performing Tip Adjust

At the end of the shift or business day, the waiter can perform the Tip Adjust on the respective transactions. It is NOT required to perform a zero-amount adjust for transactions without tip.

To implement Tip Adjust, your POS System needs to allow the waiter to first re-locate the transaction (e.g. by entering a POS-provided invoice number printed on the payment receipt) and then to specify the Tip Amount as written down by the guest.

To perform a Tip Adjust, you create MPTransactionParameters that contain the transactionIdentifier of the transaction that should be adjusted and the Tip Amount (NOT the Total Amount) that should be added:

MPTransactionParameters *tp =
   [MPTransactionParameters tipAdjustForTransactionIdentifier:transactionIdentifier
													optionals:
	^(id<MPTransactionParametersTipAdjustOptionals>  _Nonnull optionals)
	{
		[optionals setAmount:[NSDecimalNumber decimalNumberWithString:@"2.00"] currency:MPCurrencyUSD];
	}];

// Pass the parameters to [MPTransactionProvider amendTransactionWithParameters:]

Check for MPTransactionProcessDetailsStateApproved in the completed block, to find out whether the Tip Adjust as successful!

Implementation Considerations

  • 20% Adjust Limit: As per card scheme rules you are allowed to perform a Tip Adjust for up to 20% of the orignial invoice amount. Higher amounts will be rejected.
  • Printed Receipts: The Tip Adjust workflow is based on printed merchant and shopper receipts, so make sure your POS System implements them.
  • Invoice Number: In order to make it easy for the waiter to retrieve transactions for Tip Adjust, we strongly recommend to print a short, POS-provided invoice number on each receipt. Your POS System should then store the transactionIdentifier as part of your invoice data.
  • 24 Hour Time Limit: It is possible to run a Tip Adjust up to 24 hours after the initial CHARGE. You can determine this also programatically via the MPTransaction object by checking for MPTransactionTipAdjustStatusAdjustable as the transaction.details.tipAdjustStatus.

Tip Adjust allows you to offer your US-based restaurants their traditional, receipt-based tipping workflow for both magstripe and EMV transactions!

Get in touch with your account manager to activate this feature for you!

Run Charge and Provide Printed Receipt

The waiter takes the payment card from the guest back to the POS System and runs a CHARGE transaction for the invoice amount (excluding any tips). Your POS System then prints merchant and shopper receipts that include lines for Tip and Total Amount.

The guest receives back the payment card together with the printed receipts from the waiter and can fill in the desired Tip and/or Total Amounts at his discretion. If required, he also provides his signature. Once the guest has left, the waiter collects the receipt and stores it for later Tip Adjust.

To perform a CHARGE that can be Tip Adjusted later on, modify the TransactionParameters to include tipAdjustable(true) for the initial transaction:

TransactionParameters transactionParameters = new TransactionParameters.Builder()
		.charge(new BigDecimal("10.00"), io.mpos.transactions.Currency.USD)
		.subject("Bouquet of Flowers")
		.customIdentifier("yourReferenceForTheTransaction")
		.tipAdjustable(true)
		.build();

// Start the transaction as usual via TransactionProvider.startTransaction()

Make sure to always provide printed merchant and shopper receipts and especially ensure to print the lines for Tip and Total Amount if isTipLineRequired() equals true.

Performing Tip Adjust

At the end of the shift or business day, the waiter can perform the Tip Adjust on the respective transactions. It is NOT required to perform a zero-amount adjust for transactions without tip.

To implement Tip Adjust, your POS System needs to allow the waiter to first re-locate the transaction (e.g. by entering a POS-provided invoice number printed on the payment receipt) and then to specify the Tip Amount as written down by the guest.

To perform a Tip Adjust, you create TransactionParameters that contain the transactionIdentifier of the transaction that should be adjusted and the Tip Amount (NOT the Total Amount) that should be added:

TransactionParameters transactionParameters = new TransactionParameters.Builder()
		.adjustTip(transaction, new BigDecimal("2.00"), io.mpos.transactions.Currency.USD)
		.build();

// Pass the parameters to TransactionProvider.amendTransaction()

Check for TransactionProcessDetailsState.APPROVED in onCompleted to find out whether the Tip Adjust was successful!

Implementation Considerations

  • 20% Adjust Limit: As per card scheme rules you are allowed to perform a Tip Adjust for up to 20% of the orignial invoice amount. Higher amounts will be rejected.
  • Printed Receipts: The Tip Adjust workflow is based on printed merchant and shopper receipts, so make sure your POS System implements them.
  • Invoice Number: In order to make it easy for the waiter to retrieve transactions for Tip Adjust, we strongly recommend to print a short, POS-provided invoice number on each receipt. Your POS System should then store the transactionIdentifier as part of your invoice data.
  • 24 Hour Time Limit: It is possible to run a Tip Adjust up to 24 hours after the initial CHARGE. You can determine this also programatically via the Transaction object by checking for ADJUSTABLE as the transaction.getDetails().getTipAdjustStatus().

Can we help you?

If you cannot find your answer, contact us and we'll get in touch with you soon.

© Copyright 2017 Payworks GmbH. Legal.