Custom Receipts

After the transaction has been completed, you must provide a payment receipt to the merchant and the shopper.
Sample Receipt
A sample receipt with required information and its placement is shown below. Actual receipt content may vary from what is shown on the sample receipt, depending on acquirer and payment method.
1 2 3 4 5 6 7 8
Required Receipt Information
All required data for the payment receipt is available right after the transaction is finished. You can also add this payment receipt data to your already existing checkout receipt. For accessing it, the
variable in the
callback provides the following two properties:
transaction.MerchantReceipt transaction.CustomerReceipt
Make sure that your custom receipt contains all the following required fields and that you are able to send receipts for successful refunds.
The receipt itself is constructed from multiple
items. Each item provides a
that describes the entry itself, and a
containing the actual data. When building the receipt on your end, do the following both for
  1. Add all the merchant information, such as address including country, by iterating over the
  2. Specify the receipt type:
    . For a receipt sent to the merchant, it must clearly state
    Merchant Receipt
  3. Provide the static elements that are available directly on the
    object, including:
    • Type
    • AmountAndCurrency
    • Subject
    • StatusText
    • Time
  4. Add all payment related information by iterating over the
  5. And finally add all information from processing the transaction by iterating over the
  6. Check if you need to print Tip and Total Amount lines on the receipts via
  7. Check if you need to print a signature line on the merchant receipt via
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.
The fields in the customer and merchant receipts can be accessed in the following way:
// Merchant Receipt var receipt = transaction.MerchantReceipt; Console.WriteLine("Merchant Receipt " + receipt.Type.Value); // or Customer Receipt // var receipt = transaction.CustomerReceipt; // Console.WriteLine("Customer Receipt " + receipt.Type.Value)); Console.WriteLine("MERCHANT DETAILS:"); foreach (var merchantDetail in receipt.MerchantDetails) { Console.WriteLine("\t " + merchantDetail.Label + ": " + merchantDetail.Value); } Console.WriteLine("Amount: " + receipt.AmountAndCurrency.Value); Console.WriteLine("Time: " + receipt.Time.Value); Console.WriteLine("Date: " + receipt.Date.Value); Console.WriteLine("Subject: " + receipt.Subject.Value); Console.WriteLine("Status: " + receipt.StatusText.Value); // -- Optional Console.WriteLine("Transaction identifier: " + receipt.Identifier.Value); // -- Console.WriteLine("PAYMENT DETAILS:"); foreach (var paymentDetail in receipt.PaymentDetails) { Console.WriteLine("\t " + paymentDetail.Label + ": " + paymentDetail.Value); } Console.WriteLine("CLEARING DETAILS:"); foreach (var clearingDetail in receipt.ClearingDetails) { Console.WriteLine("\t " + clearingDetail.Label + ": " + clearingDetail.Value); } if (receipt.TipLineRequired) { Console.WriteLine("TIP : ________________________"); Console.WriteLine("TOTAL: ________________________"); } // Usually only on the Merchant Receipt if(receipt.SignatureLineRequired) { Console.WriteLine("Customer Signature: ________________________"); }