Reconciliation
Match every disbursement you sent from PayMongo against your books and your recipients' bank statements, so you can close your month with confidence.
Overview
The Disbursement Reconciliation report gives you a complete record of every transfer leaving your PayMongo Wallet over a date range you choose. Use it to:
- Confirm that every disbursement you initiated landed in the right recipient account, with the right amount, on the right rail.
- Match individual transfers in your accounting system to the corresponding line on your PayMongo Wallet activity.
- Investigate failed, pending, or returned transfers and trace them back to a specific recipient and rail response.
- Close your books each month with an auditable record of outbound funds movement.
The report is a CSV file that PayMongo emails to you on demand. It covers every transfer in the date range you specify: InstaPay, PESONet, wallet-to-wallet, and QR, regardless of whether it was created from the Dashboard or via the API.
Disbursement Reconciliation is intended for operational reconciliation. It is not a substitute for professional accounting or audit advice.
How disbursement reconciliation works
A complete reconciliation usually involves three sources of truth:
- Your internal records — payroll system, ERP, accounting ledger, or spreadsheet of payables.
- The PayMongo disbursement report — the export described on this page.
- The recipient's bank or e-wallet statement — the place where the money actually arrived.
For each disbursement, you compare these three views and confirm they agree on the recipient, the amount, and the timing. The PayMongo report is the bridge between your books on one side and the recipient's bank on the other: it carries the identifiers (reference_number, provider_reference_number) and the source/destination account fields you need to find the same transfer in both places.
A typical month-end close looks like this:
- Export the disbursement report for the month.
- Match each
succeededtransfer to a line in your payables ledger usingreference_numberor your own description/purpose. - Confirm with each recipient (or via their bank statements where you have access) that the transfer credited their account.
- Investigate any transfer that is
failed,returned, or stuck inpendingpast its expected window. - Total the
succeededrows and thefeecolumn, and reconcile against the debits on your PayMongo Wallet activity.
Exporting your disbursement report
You export the report from the Wallet page in your PayMongo Dashboard.
- Log in to the PayMongo Dashboard and go to your Wallet.
- Click Export on the upper right of the Wallet page.
- Select the date range you want the report to cover. The range should match the period you are closing — for example, the previous calendar month for a monthly close, or a single day for a daily reconciliation.
- Confirm the export request.
- PayMongo prepares the CSV and emails it to your registered email address when it is ready.
The export includes every disbursement created within the selected date range, in any status (succeeded, pending, failed, returned). It is generated at the time you request it, so the data reflects the most recent status of every transfer at that moment.
Tip — reconcile on a fixed cadence. Daily exports keep volumes manageable and surface stuck or failed transfers while they are still recent. Most teams pair a daily export for operational checks with a full month-end export for accounting close.
What the report contains
Each row in the CSV represents one disbursement transaction. The columns fall into seven groups:
| Group | What it tells you |
|---|---|
| Identifiers | Unique IDs to match this transfer to your books, the rail, and any batch it belonged to |
| Status and errors | Final or current state of the transfer, plus any error code returned by the rail |
| Amounts | Principal amount, fee, total debited from your Wallet, currency |
| Source | The account funds left from — your PayMongo Wallet identity |
| Destination | The account funds were sent to — the recipient |
| Rail and processing | How the transfer was routed (PESONet cycle, QR mode, debit/credit direction, purpose) |
| Timestamps | When the transfer was created and last updated |
Field reference
Every column you will see in the export, in the order it appears.
Identifiers
| Column | Description |
|---|---|
id | The unique PayMongo transfer ID, prefixed tr_. Use this as the canonical identifier when raising a support ticket or linking a record back to a specific disbursement. |
merchant_id | The PayMongo merchant account that initiated the transfer. Useful for organizations operating multiple PayMongo accounts. |
reference_number | A short, opaque reference that PayMongo generates for every transfer. Use this to find the corresponding entry in the recipient's bank statement — most Philippine banks display this on the credit advice. |
provider_reference_number | The reference number assigned by the underlying provider (e.g., the card network or rail). Use this when escalating to the rail or to the recipient's bank. |
batch_transfer_id | If the transfer was part of a batch, this is the parent batch's ID, prefixed batch_tr_. Empty for single transfers. |
Payout ID | If this disbursement is linked to a PayMongo payout, the payout ID it belongs to. |
Status and errors
| Column | Description |
|---|---|
status | The state of the transfer at the time of export. See Status meanings below. |
livemode | true for live transfers, false for transfers initiated in test mode. Always confirm you are reconciling against livemode = true when closing the books. |
provider | The provider that processed the transfer (e.g., the rail or card network). Use this to filter by channel during reconciliation. |
provider_error_code | The error code returned by the provider when a transfer fails or is returned. Empty for successful transfers. |
provider_error_message | A human-readable description of the error, when present. Use this together with the error tables in the Disbursements guide to determine the next action. |
Amounts
All amounts are expressed in the smallest unit of the currency column (centavos for PHP), unless your export explicitly indicates otherwise.
| Column | Description |
|---|---|
amount | The principal amount sent to the recipient, before fees. |
fee | The PayMongo fee charged for this transfer. For standard InstaPay/PESONet transfers this is PHP 10.00, except where the weekly free transfer applies. |
total_amount | The total amount debited from your PayMongo Wallet for this transfer (amount + fee). |
currency | The currency of the transfer. For local disbursements this is always PHP. |
Instant Settlement Fees | Any additional fee applied for instant settlement, when applicable. Empty or 0.00 for standard transfers. |
Source — where the funds came from
| Column | Description |
|---|---|
source_account_name | The account name on the sending side (your PayMongo Wallet's registered name). |
source_account_number | The account number on the sending side. |
source_bank_name | The sending bank name. |
source_bic | The sending bank's BIC / SWIFT code. For PayMongo Wallets this is PAEYPHM2XXX. |
Destination — where the funds were sent
| Column | Description |
|---|---|
destination_account_name | The recipient's account name as recorded at the time of the transfer. |
destination_account_number | The recipient's account number. |
destination_bank_name | The recipient's bank or e-wallet provider. |
destination_bic | The recipient's BIC / SWIFT code. |
Watch out for name mismatches. When matching against a recipient's bank statement, use
destination_account_numberandreference_numberas the primary keys, not the account name. Banks sometimes truncate or reformat names on credit advices.
Rail and processing
| Column | Description |
|---|---|
purpose | The purpose code attached to the transfer (e.g., Purchase, Salary, Vendor Payment). Reflects what was sent in the create request. |
description | The free-text description supplied when the transfer was created. Use this to carry your internal reference (invoice number, payroll period, etc.) into the report. |
callback_url | The webhook URL the transfer's status updates were sent to, if any. |
direction | debit for funds leaving your wallet, credit for funds arriving. A disbursement export is dominated by debit rows. |
QR Mode | The QR Ph mode used (e.g., P2P, P2M, P2B) when the transfer was initiated via QR. Empty for non-QR transfers. |
Timestamps
| Column | Description |
|---|---|
created_at | ISO 8601 timestamp when the transfer was created. This is when the funds were debited from your Wallet. |
updated_at | ISO 8601 timestamp of the last status change. For succeeded transfers, this is when the rail confirmed credit; for failed or returned, this is when the failure or return was finalized. |
Status meanings
The same statuses surface in your Dashboard, in webhooks, and in the report.
| Status | What it means | Reconciliation action |
|---|---|---|
succeeded | Funds were credited to the recipient. | Match against your books and the recipient's bank statement. Counts toward the total disbursed amount for the period. |
pending | The transfer is still in flight. | Allow up to 20 minutes for InstaPay and up to one banking day for PESONet. If a transfer remains pending past its window, raise it with PayMongo support, citing the id and reference_number. |
failed | The transfer did not complete and no funds left your wallet (or were reversed before the recipient was credited). | Review provider_error_code / provider_error_message, fix the underlying issue (e.g., wrong account number, insufficient funds), and re-initiate. |
returned | The transfer was sent but the recipient bank or rail returned it after the fact (e.g., closed account discovered downstream). | Confirm the credit was reversed in your Wallet, investigate the return reason, and decide whether to retry to a corrected destination. |
A simple reconciliation workflow
The exact process depends on your accounting system, but most teams follow the same five steps each close period:
- Export the report for the date range you are closing.
- Filter by status. Split the file into
succeeded,pending,failed, andreturned. Each group needs a different action. - Match the
succeededrows against your payables ledger usingreference_number, yourdescriptionfield, ordestination_account_number+amount. Flag any disbursement in the report that has no corresponding entry in your books, and any payable in your books that does not appear in the report. - Verify with the recipient bank for high-value transfers or any item where the recipient has reported a missing payment. Use
reference_numberandprovider_reference_numberas the lookup keys on the bank side. - Resolve the exceptions:
pendingpast its expected window → contact support with theidandreference_number.failed→ fix the cause (see the error tables in the Disbursements guide), re-initiate.returned→ confirm the wallet credit, then decide whether to retry.- Books-only entries with no PayMongo record → confirm the disbursement was actually initiated; if not, initiate it. If yes, check whether it falls outside the report's date range.
Sum the total_amount for succeeded rows and reconcile against the cumulative debit on your Wallet activity for the same period. The two should agree.
Tips for cleaner reconciliation
- Carry your internal reference into the
descriptionfield at the point of creation. Invoice numbers, payroll period codes, or contractor IDs flow straight into the report and make matching trivial. - Reconcile pending transfers separately. They will move to
succeededorfailedlater — don't include them in your closed totals until they reach a terminal status. - Keep the raw exports. Save each export with a date-stamped filename. If a recipient queries a payment months later, the original export is your fastest evidence.
- Reconcile fees, not just principal. The
feeandInstant Settlement Feescolumns roll up into your operating expenses, not your payables. Pull them out as a separate line during close. - Use a daily export for ops, a monthly export for accounting. Daily exports catch stuck or failed transfers early; the monthly export is the audit-ready record.
- Watch for name truncation. Bank credit advices often truncate
destination_account_name. Match ondestination_account_numberandreference_numberfirst, name second.
How PayMongo uses your data
The Disbursement Reconciliation report is generated from the disbursement and wallet activity already associated with your PayMongo account. The data is delivered to the registered email address of the user who requested the export. PayMongo does not retrieve or read your bank statements; matching against your bank or your recipients' banks is something you perform on your side.
The reconciliation report is provided "as-is." You are responsible for checking the accuracy and completeness of the data before relying on it for accounting, tax, or audit purposes.
Related reading
- Disbursements — overview of how outbound transfers work, including statuses, webhooks, and the full error code reference.
- Wallets — how your PayMongo Wallet balance and activity are structured.
Updated 1 day ago