Custom Receipts
                Should you need more flexibility than the 
ready-made receipts provide, you can send or print custom receipts, including the payment-related data.
Make sure that your custom receipt contains all of the required receipt information and that you are able to also send receipts for successful refunds.
Required Receipt information
A sample receipt with the required information and its placement is shown below. Actual receipt content can vary, depending on acquirer and payment method.
- Full address of the merchant, including the country. Iterate over each line item  - getMerchantDetails() -  returns and print what the  - getValue() -  method returns. 
- getReceiptType().getValue() 
- getTransactionType().getValue() 
- getAmountAndCurrency().getValue() 
- The payment details, e.g. the masked account number. Iterate over each line item  - getPaymentDetails() -  returns and print what the  - getLabel() -  and  - getValue() -  methods return. 
- getStatusText().getValue() 
- getDate().getValue() - and  - getTime().getValue() 
- The clearing details, e.g. the merchant identifier. Iterate over each line item  - getClearingDetails() -  returns and print what the  - getLabel() -  and  - getValue() -  methods return. 
- If  - isTipLineRequired() -  is true, then you have to print Tip and Total Amount lines on your receipts. 
- If  - isSignatureLineRequired() -  is true, then you have to print a signature line on your merchant receipt. 
The receipts are already embedded in the transaction reference that you receive after a successful transaction. The transaction object provides access to the receipt for both, the merchant and the customer.
Receipts are only attached if the transaction did not fail, so always make sure to check the transaction and both receipt properties before accessing them.
Here is how to access receipt data:
TransactionProcess paymentProcess = transactionProvider.startTransaction(transactionParameters, accessoryParameters,
    new TransactionProcessWithRegistrationListener() {
        @Override
        public void onCompleted(TransactionProcess process,
                                Transaction transaction,
                                TransactionProcessDetails processDetails) {
            // For the Merchant Receipt
            Receipt receipt = transaction.getMerchantReceipt();
            // For the Customer Receipt
            // Receipt receipt = transaction.getCustomerReceipt();
            Log.d("RECEIPT", "MERCHANT DETAILS");
            for (ReceiptLineItem lineItem : receipt.getMerchantDetails())
                Log.d("RECEIPT", lineItem.getLabel() + ": " + lineItem.getValue());
        
            Log.d("RECEIPT", " ");
            Log.d("RECEIPT", receipt.getReceiptType().getLabel() + ": " + receipt.getReceiptType().getValue());
            Log.d("RECEIPT", receipt.getTransactionType().getLabel() + ": " + receipt.getTransactionType().getValue());
            Log.d("RECEIPT", receipt.getAmountAndCurrency().getLabel() + ": " + receipt.getAmountAndCurrency().getValue());
        
            Log.d("RECEIPT", " ");
            Log.d("RECEIPT", "PAYMENT DETAILS");
            for (ReceiptLineItem lineItem : receipt.getPaymentDetails())
                Log.d("RECEIPT", lineItem.getLabel() + ": " + lineItem.getValue());
        
            Log.d("RECEIPT", " ");
            Log.d("RECEIPT", receipt.getStatusText().getLabel() + ": " + receipt.getStatusText().getValue());
            Log.d("RECEIPT", receipt.getDate().getLabel() + ": " + receipt.getDate().getValue());
            Log.d("RECEIPT", receipt.getTime().getLabel() + ": " + receipt.getTime().getValue());
        
            Log.d("RECEIPT", " ");
            Log.d("RECEIPT", "CLEARING DETAILS");
            for (ReceiptLineItem lineItem : receipt.getClearingDetails())
                Log.d("RECEIPT", lineItem.getLabel() + ": " + lineItem.getValue());
        
            Log.d("RECEIPT", " ");
            // --- Optional
            Log.d("RECEIPT", receipt.getIdentifier().getLabel() + ": " + receipt.getIdentifier().getValue());
            // ---
            // When offering Tip Adjust
            if(receipt.isTipLineRequired())
            {
                Log.d("RECEIPT", "TIP   : ___________________");
                Log.d("RECEIPT", "TOTAL : ___________________");
            }
                                                
            // --- Only for the Merchant Receipt
            if(receipt.isSignatureLineRequired())
            {
                Log.d("RECEIPT", "Customer Signature");
                Log.d("RECEIPT", "___________________");
            }
        }
    }
);