Reconciliation Reports

Reconciliation Reports

Understand and work with NjiaPay reconciliation reports to match your transactions against PSP settlement data.

NjiaPay provides a suite of reconciliation reports that help you verify every transaction processed through your account matches what your payment service providers (PSPs) report on their end. These reports are available as CSV downloads from the Merchant Portal under the Reconciliation tab.

Last updated: March 2026

Why Reconciliation Matters

When you process payments through NjiaPay, the flow involves multiple systems:

mermaid
graph LR
    A[Your Customer] --> B[NjiaPay]
    B --> C[PSP e.g. Adyen]
    C --> D[Bank / Card Network]
    D --> C
    C --> B
    B --> A

Each system keeps its own records. Reconciliation is the process of cross-checking NjiaPay's records against the PSP's settlement files to make sure:

  • Every successful payment in NjiaPay also appears in the PSP settlement
  • The amounts match (no discrepancies in what was charged vs. what was settled)
  • You can account for PSP fees, currency conversions, and net payouts
  • No transactions are missing on either side

Available Reports

NjiaPay generates four reconciliation reports, each serving a different purpose in your monthly close process:

NjiaPay Transactions

All successful transactions recorded by NjiaPay. Your single source of truth for what was processed.

Successful Payments

Every successful payment with its reconciliation status: matched against PSP settlement data or still awaiting confirmation. Includes side-by-side amounts, fees, and break flags.

Refunds, Chargebacks & Pending

Non-success transactions: refunds, chargebacks, and payments that haven't reached a final state.

Fees & Settlements

Operational entries from your PSPs: settlement payouts, processing fees, dispute holds, and other non-transaction records.

Guides

Amounts: Major & Minor Units

How amounts are represented across currencies (JPY, USD, NGN, ZAR, EUR, BHD) and when to use minor-unit columns for exact arithmetic.

Timezone Settings

How the timezone selector affects which transactions appear in each month and how timestamps are displayed in exports.

Uploading PSP Data

How to upload settlement files and use the coverage timeline to ensure complete reconciliation.

PSP Export Guides

Step-by-step instructions for exporting settlement files from Adyen, PayPal, and Paystack.

Understanding PSP Reports

What each PSP's settlement data contains: row types, column meanings, and annotated examples from real Adyen, PayPal, and Paystack reports.

Example Workbook

Download this example Excel workbook to see how the four reconciliation reports look in practice, with sample data and ready-made analysis sheets:

Download Example Workbook (.xlsx)

The workbook contains six sheets:

SheetWhat it contains
njia_transactionsSample data from the NjiaPay Transactions report: 80 successful payments across multiple currencies and PSPs.
matched_success_txSample data from the Successful Payments report: the same 80 payments with PSP matching status, fees, net amounts, and break flags. Includes both matched and unmatched rows.
matched_other_txSample data from the Refunds, Chargebacks & Pending report: pending checkouts, refunds, and chargebacks.
psp_non_txSample data from the Fees & Settlements report: merchant payouts, processing fees, and dispute holds from Adyen and PayPal.
Reconciliation KPIsA dashboard sheet with formulas that calculate key metrics: match rate, total volume per currency, unmatched amounts, and PSP fee totals. Use this as a template for your own monthly summary.
Inconsistency FinderAn analysis sheet that automatically flags transactions with amount breaks, currency mismatches, or other anomalies. Adapt the formulas to your own data.

Open the workbook in Excel or Google Sheets and explore the formulas in the last two sheets to understand how they reference the report data. You can use these sheets as starting templates for your own reconciliation process.

Typical Reconciliation Workflow

Here is how a finance team typically uses these reports each month:

Step 1: Upload PSP Settlement Files

Before downloading reports, make sure you have uploaded PSP settlement data for the month. Check the coverage timeline. Your goal is a fully blue bar for each PSP.

Step 2: Start with NjiaPay Transactions

Download the NjiaPay Transactions report for your period. This gives you the complete list of successful payments. Use it as your master checklist.

Step 3: Review Successful Payments Reconciliation

Download the Successful Payments report. This contains every successful payment along with its reconciliation status. Filter by exists_in_psp and exists_in_njia:

  • exists_in_njia = True, exists_in_psp = True rows are matched: both NjiaPay and the PSP agree. Check the break_gross_amount column: False means the amounts agree, True means investigate.
  • exists_in_njia = True, exists_in_psp = False rows are unmatched: the PSP settlement hasn't been received yet. Common reasons: settlement file not yet uploaded, transaction too recent, or the PSP doesn't have settlement integration yet (e.g. StartButton).
  • exists_in_njia = False, exists_in_psp = True rows are PSP-only: the PSP settlement has a transaction that NjiaPay doesn't know about. This means the payment was made outside of NjiaPay, either via a manual payment link created directly in the PSP dashboard, or from historical transactions that predate your NjiaPay integration.

Step 4: Review Refunds, Chargebacks & Pending

Download the Refunds, Chargebacks & Pending report. This shows non-success transactions: payments still in Pending state (customer may have abandoned checkout), refunds, and chargebacks. Use this to:

  • Track your checkout drop-off rate (pending items)
  • Reconcile refund amounts against your records
  • Monitor chargeback exposure

Step 5: Account for Fees & Settlements

Download the Fees & Settlements report. This shows PSP-level items that are not tied to individual transactions: batch payouts to your bank account, monthly processing fees, dispute holds and releases, and currency conversion charges.

Step 6: Cross-check Totals

Use a pivot table or SUMIFS in your spreadsheet to compare:

CheckFormula Idea
Total NjiaPay volume=SUMIFS(njia_transactions[amount], njia_transactions[currency], "USD")
Total matched volume=SUMIFS(success[njia_amount], success[njia_currency], "USD", success[exists_in_psp], "True")
Unmatched volume=SUMIFS(success[njia_amount], success[njia_currency], "USD", success[exists_in_psp], "False")
Net after fees=SUMIFS(success[psp_net_amount], success[psp_net_currency], "USD")
Settlement payouts=SUMIFS(fees[net_amount], fees[transaction_type], "MerchantPayout", fees[net_currency], "USD")

How Reports Are Generated

NjiaPay's reconciliation engine runs daily. It:

  1. Collects all successful NjiaPay transactions for the selected period
  2. Imports PSP settlement files (uploaded via the portal)
  3. Matches each NjiaPay transaction to its PSP counterpart using the PSP reference ID
  4. Classifies each record as: successful payment (matched or unmatched), non-success item (refund/chargeback/pending), or operational entry (fees/settlements)
  5. Outputs the four CSV reports
Reports reflect the state of the data at the time of generation. If you upload a PSP settlement file after downloading your reports, wait up to 10 minutes for processing, then re-download to get updated matching results.

Understanding exists_in_njia and exists_in_psp

These two boolean flags tell you where a transaction was found:

exists_in_njiaexists_in_pspMeaning
TrueTrueMatched. Found in both NjiaPay and the PSP settlement file.
TrueFalseNjiaPay recorded this transaction but no PSP settlement record was found. Either the settlement file hasn't been uploaded yet, or the PSP doesn't have settlement integration.
FalseTrueThe PSP settlement file contains a transaction that NjiaPay has no record of. This means the payment was processed outside of NjiaPay.
If you see rows with exists_in_njia = False, review them carefully. They represent money that moved through your PSP account outside of NjiaPay. Common causes include:
  • Manual payment links created directly in the PSP dashboard (e.g. Adyen, Paystack, or PayPal payment links). A merchant or operations team member may have created a one-off payment link in the PSP's own UI, bypassing NjiaPay entirely.
  • Historical transactions from before you started using NjiaPay. If the PSP settlement file covers a period that predates your NjiaPay integration, those older transactions will appear as PSP-only.
  • PSP reference mismatch (rare): the PSP recorded a different reference than expected, preventing the match.

Column Conventions

Across all reports, you will notice these conventions:

  • Timestamps follow your timezone. CSV exports use the timezone from the timezone selector, locked to the offset at the start of the selected month. If no timezone is explicitly selected, it defaults to your browser's locale timezone.
  • njia_ prefix: columns from NjiaPay's side of the ledger.
  • psp_ prefix: columns from the PSP settlement file.
  • break_ prefix: discrepancy flags. True means the values don't match between NjiaPay and PSP; False means they agree.
  • exists_in_njia / exists_in_psp: boolean flags showing whether a transaction was found on each side. See Understanding exists_in_njia and exists_in_psp above for when each combination occurs.
  • njia_merchant_ref_id: your own reference ID that you passed when creating the payment intent. This is the most important field for matching against your internal systems.
  • Amounts in major units by default. See Amounts: Major Units vs. Minor Units for currency-specific details and when to use _minor_units columns instead.