Reconciliation Reports

Understanding PSP Reports

What each PSP's settlement data contains, the different row types you will encounter, and how NjiaPay normalises them into a unified format.

Each PSP produces settlement files in a different format, with different column names, date formats, decimal separators, and transaction types. NjiaPay normalises all of them into the same column structure so you can reconcile across providers in a single spreadsheet.

This section explains what you will find in each PSP's raw settlement file, the different types of rows it contains, and how they map to NjiaPay's reconciliation reports.

Last updated: March 2026

Supported PSPs

Adyen

Settlement details report with per-transaction fee breakdowns across 9 distinct row types: Settled, Refunded, Chargeback, ChargebackReversed, SecondChargeback, MerchantPayout, Fee, InvoiceDeduction, and SettledReversed.

PayPal

All Transactions activity report with 14 transaction types including Express Checkout, PreApproved payments, refunds, chargebacks, dispute holds, withdrawals, and currency conversions.

Paystack

Transaction export with 4 statuses (success, failed, abandoned, reversed) across 7 payment channels including card, bank transfer, Apple Pay, QR, and EFT.

How NjiaPay Uses PSP Data

When you upload a PSP settlement file, NjiaPay:

  1. Parses the CSV according to the PSP's specific format (date formats, decimal separators, column names)
  2. Classifies each row as either a transaction (payment, refund, chargeback) or a non-transaction item (payout, fee, dispute hold)
  3. Normalises the data into NjiaPay's unified column structure (psp_type, psp_gross_amount, psp_net_amount, etc.)
  4. Matches transaction rows against NjiaPay records using the PSP reference ID

Transaction rows appear in the Successful Payments or Refunds, Chargebacks & Pending reports. Non-transaction rows appear in the Fees & Settlements report.

Not all PSPs have settlement file integration yet. StartButton and Precium transactions will always appear as unmatched (exists_in_psp = False) because NjiaPay does not yet ingest their settlement files.