Skip to Content
Integration GuidesPayment Receipt

Payment Receipt

KisPay provides a comprehensive receipt system that allows users to view detailed payment information and transaction receipts through a simple URL redirect. This feature enables both merchants and customers to access professional payment receipts for record-keeping and verification purposes.

Receipt URL Format

After a successful payment, users can access their payment receipt using the following URL format:

https://checkout.kispay.et/#/receipt/{transaction_reference}
Example Receipt URL:
https://checkout.kispay.et/#/receipt/d931b2a7-323c-49c3-bb1b-2de95bfe2543

Receipt Information

The KisPay receipt page displays comprehensive payment details including:

Payment Details

  • Transaction Reference ID: Unique transaction identifier (e.g., d931b2a7-323c-49c3-bb1b-2de95bfe2543)
  • Session ID: Checkout session identifier
  • Order Number: Merchant’s custom order reference
  • Payer Name: Customer’s full name
  • Phone Number: Customer’s phone number
  • Email Address: Customer’s email address
  • Payment Method: Method used for payment (e.g., TeleBirr, CBE Birr, Awash Birr)
  • Status: Payment status (e.g., COMPLETED, FAILED)
  • Payment Date: Date and time of the transaction
  • Description: Purpose or description of the payment

Financial Information

  • Amount: Payment amount in ETB
  • Currency: ETB (Ethiopian Birr)
  • Transaction Fee: Processing fee (if applicable)
  • Total Amount: Final amount charged

Merchant Information

  • Merchant Name: Business or service provider name
  • Business Email: Merchant’s registered email
  • Phone Number: Merchant contact number
  • Address: Merchant business address (City, Country)
  • TIN: Tax Identification Number (if available)

Transaction References

  • KisPay Reference: Internal KisPay transaction reference ID
  • Merchant Reference: Your custom transaction or order reference
  • Bank Reference: Bank or payment provider transaction reference

Implementation

Redirect After Payment

You can redirect users to the receipt page after a successful payment. Here’s how to implement it:

For Redirect Checkout:

Redirect to Receipt (Redirect Checkout)
// After successful payment verification async function handleSuccessfulPayment(sessionId) { try { const statusResponse = await fetch(`/api/verify-status?sessionId=${sessionId}`); const statusData = await statusResponse.json(); if (statusData.status === "COMPLETED") { // Get transaction reference from response const transactionRef = statusData.transactionId || sessionId; // Redirect to receipt page const receiptUrl = `https://checkout.kispay.et/#/receipt/${transactionRef}`; window.location.href = receiptUrl; } } catch (error) { console.error("Error fetching payment status:", error); } }

For Direct Checkout:

Redirect to Receipt (Direct Checkout)
// After event-based status check confirms success const checkPaymentStatusEvent = async (sessionId, paymentMethod, phone) => { try { const response = await fetch(`/api/check-status-event`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ sessionId, paymentMethod, phone, }), }); const data = await response.json(); if (data.status === "SUCCESS") { // Get transaction reference const transactionRef = data.transactionId || data.sessionId; // Redirect to receipt page const receiptUrl = `https://checkout.kispay.et/#/receipt/${transactionRef}`; // Show success message before redirect handleSnackOpen("Payment completed successfully!", "success"); setTimeout(() => { window.location.href = receiptUrl; }, 2000); } } catch (error) { console.error("Status check error:", error); } };

Backend Implementation

You can also generate receipt URLs on your backend and return them to the frontend:

Backend Receipt URL Generation
app.get("/api/get-receipt-url", async (req, res) => { const { sessionId } = req.query; if (!sessionId) { return res.status(400).json({ error: "Session ID required" }); } try { // Verify payment status const statusData = await checkPaymentStatus(sessionId); if (statusData.status === "SUCCESS" || statusData.status === "COMPLETED") { // Generate receipt URL const transactionRef = statusData.transactionId || sessionId; const receiptUrl = `https://checkout.kispay.et/#/receipt/${transactionRef}`; res.json({ success: true, receiptUrl: receiptUrl, transactionRef: transactionRef, status: statusData.status, }); } else { res.status(400).json({ success: false, message: "Payment not completed", status: statusData.status, }); } } catch (error) { res.status(500).json({ error: "Failed to generate receipt URL", message: error.message, }); } });

Receipt Features

Users can print the receipt for their records using the browser’s built-in print function:

  • Click the “Print Receipt” button on the receipt page
  • Or use the browser’s print shortcut (Ctrl+P on Windows/Linux, Cmd+P on Mac)
  • The receipt is optimized for printing on standard A4/Letter paper

Download Receipt

The receipt page provides options to download the receipt in various formats:

  • PDF: For easy sharing and archiving
  • Image: For quick visual reference
  • Downloads include all transaction details and merchant information

Example Receipt

Here’s what a typical KisPay payment receipt looks like:

KisPay Payment Receipt

Use Cases

For Merchants

  • Record Keeping: Maintain comprehensive transaction records
  • Customer Service: Quickly verify payment details when customers inquire
  • Accounting: Simplify reconciliation and financial reporting
  • Compliance: Meet tax and audit requirements
  • Dispute Resolution: Provide proof of transaction for dispute resolution

For Customers

  • Payment Proof: Immediate proof of payment for purchases
  • Record Management: Easy access to transaction history
  • Expense Tracking: Track business or personal expenses
  • Tax Documentation: Collect receipts for tax purposes

Email Receipt Integration

You can also send receipts automatically via email after successful payments:

Email Receipt After Payment
const nodemailer = require("nodemailer"); async function sendReceiptEmail(sessionId, customerEmail) { try { // Get transaction data const statusData = await checkPaymentStatus(sessionId); if (statusData.status === "SUCCESS" || statusData.status === "COMPLETED") { const transactionRef = statusData.transactionId || sessionId; const receiptUrl = `https://checkout.kispay.et/#/receipt/${transactionRef}`; // Configure email transporter const transporter = nodemailer.createTransport({ // Your email configuration service: "gmail", auth: { user: process.env.EMAIL_USER, pass: process.env.EMAIL_PASS, }, }); // Email content const mailOptions = { from: "noreply@kispay.et", to: customerEmail, subject: "Payment Receipt - KisPay", html: ` <h2>Thank you for your payment!</h2> <p>Your payment has been successfully processed.</p> <p><strong>Transaction Reference:</strong> ${transactionRef}</p> <p><strong>Amount:</strong> ${statusData.amount} ETB</p> <p>You can view and download your receipt here:</p> <a href="${receiptUrl}" style="display: inline-block; padding: 10px 20px; background-color: #3E4095; color: white; text-decoration: none; border-radius: 5px;">View Receipt</a> <p style="margin-top: 20px; font-size: 12px; color: #666;"> If you have any questions, please contact us at support@kispay.et </p> `, }; // Send email await transporter.sendMail(mailOptions); console.log(`Receipt email sent to ${customerEmail}`); return { success: true, receiptUrl }; } } catch (error) { console.error("Error sending receipt email:", error); return { success: false, error: error.message }; } } // Use after payment verification app.post("/api/send-receipt", async (req, res) => { const { sessionId, customerEmail } = req.body; if (!sessionId || !customerEmail) { return res.status(400).json({ error: "Session ID and email required" }); } const result = await sendReceiptEmail(sessionId, customerEmail); res.json(result); });

Support

For any issues with receipt access or questions about receipt information:

This receipt system provides a professional and comprehensive way for both merchants and customers to access and verify payment information, ensuring transparency and trust in every transaction.
Last updated on