Run the daily transaction summary report at end-of-day, every business day, with posting date set to today's business date. That single report reconciles processor settlements to bank deposits, confirms net cash by currency, and flags exceptions before they compound overnight.
Run checklist for today:
- Set the date parameter to posting date = current business day (not transaction date or settlement date)
- Select entity/branch: all locations, or filter to one branch if running a branch-level close
- Choose payment method: all channels (card, cash, wire, FX counter) unless you need a channel-specific reconciliation
- Include fees and net amounts: always run both gross and net columns
- Set currency: all currencies for a multi-currency desk, or filter to one pair for targeted review
- Export format: CSV (UTF-8, ISO date format) for downstream matching; XLSX for manual review
Pro Tip: Before publishing the summary to management, confirm the posting date field is set correctly. Posting date drives GL entry timing. If your system defaults to transaction date or settlement date, your totals will not match the bank statement for that business day.
Key Takeaways
Generating daily transaction reports is only useful when the extract parameters are locked, the output is reviewed at the transaction level, and every exception has a named owner and a due date.
| Point | Details |
|---|---|
| Use posting date, not transaction date | Set the date parameter to posting date so report totals match GL entries and bank statements. |
| Include gross, fee, and net columns | A report showing only gross totals cannot be used for GL posting or processor reconciliation. |
| Lock extract parameters | Document and version-control filter settings; any change requires a signed approval to preserve trend comparability. |
| Require named sign-off before archiving | A timestamped, logged approval turns the daily extract into an auditable record rather than a forwarded spreadsheet. |
| Currexchanger automates the full workflow | Scheduled extracts, role-based approvals, API GL posting, and immutable logs replace manual daily close steps for multi-branch operators. |
Table of Contents
- When should you run daily transaction reports?
- How do you generate daily transaction reports step by step?
- Which filters and dimensions should you configure?
- How do you read the report and spot red flags?
- What does a daily reconciliation checklist look like?
- How do you automate and schedule daily report exports?
- What do you do when the daily report doesn't match?
- Why do validated daily controls matter, and how should you configure them?
- What most teams get wrong about daily reporting
- Currexchanger automates your daily close from extract to sign-off
- Sources
- FAQ
When should you run daily transaction reports?
The short answer: any operation where a one-day gap between error and detection is too long. Daily reconciliation catches errors and potential fraud faster than monthly processes and keeps each review small enough to complete in under an hour. Monthly reconciliation, by contrast, turns a single missed entry into a multi-week investigation.
Primary use cases:
- End-of-day cash reconciliation: Match physical drawer counts to system totals before the vault closes
- Processor/merchant settlement validation: Confirm the card acquirer's settlement file matches the net amount posted in your system
- Exception detection: Surface duplicate transaction IDs, voided transactions that were re-entered, or currency mismatches before the next business day
- Audit trail: Maintain a chronological, posting-date-driven record for internal audit and regulatory review
- Liquidity monitoring: For multi-currency desks, confirm net positions by currency pair so treasury knows the overnight exposure
Who reviews what:
- Cashier/counter manager: cash drawer totals, transaction count, any voids or refunds processed that day
- Reconciler/accounting: gross-to-net fee mapping, GL account matching, processor settlement file comparison
- Treasurer/head of operations: net position by currency, large-value exceptions, any amounts above materiality thresholds
- Compliance officer: transaction count and value against AML thresholds, flagged customer activity
When daily is mandatory vs. acceptable at a lower frequency:
Daily is the right cadence when transaction volume is high, when you operate a multi-currency desk with overnight FX exposure, or when your card acquirer settles same-day. Weekly or monthly reporting is acceptable only for very low-volume operations with a single currency and no card processing. For currency exchange operators specifically, supervisory guidance recommends daily net position reports reconciled to trader blotters and immediate reporting of any position or limit excess. That standard applies regardless of system size.
How do you generate daily transaction reports step by step?
The steps below apply across most finance platforms. UI labels differ, but the logic is the same. Microsoft Dynamics 365 Business Central, for example, uses the Day Book Customer Ledger Entry report, which groups posted entries by posting date and links each to its associated GL entry. Your system may call it a "daily payment summary," "daily transaction report," or "settlement detail report." The field logic is identical.
Step-by-step:
- Navigate to the reporting module. In most systems: Reports > Financial Reports > Daily Transaction Report (or equivalent).
- Select the report type. Choose "Daily Transaction Summary" or "Daily Payment Detail" depending on whether you need totals only or line-level detail. For reconciliation, always choose line-level detail.
- Set the date parameter. Use posting date = today's business date. If your system offers transaction date, settlement date, or value date as alternatives, use posting date for GL matching. Settlement date is correct only when reconciling to a processor's settlement file.
- Select entity and branch. Choose all branches for a consolidated view, or filter to a single cashpoint for a branch-level close.
- Choose payment channels. Include all channels unless you are running a channel-specific reconciliation (e.g., card-only for acquirer matching).
- Enable fee and net columns. Confirm the report includes gross amount, fee amount, and net amount as separate columns. A report that shows only gross totals is not sufficient for GL posting.
- Set currency. For multi-currency operations, include all currencies and ensure the report shows both the transaction currency and the base currency equivalent.
- Run/submit. Click Run, Generate, or Submit. Most systems queue the extract and deliver it within seconds to a few minutes depending on volume.
- Export. Download as CSV (UTF-8) for automated matching or XLSX for manual review. Note the extract ID and run timestamp before closing the screen.
Recommended run parameters (sensible defaults):
| Parameter | Recommended default | Notes |
|---|---|---|
| Date type | Posting date | Matches GL entry timing |
| Date range | Current business day | Single day for daily close |
| Entity | All branches | Filter down for branch-level review |
| Payment method | All channels | Narrow only for channel reconciliation |
| Include fees | Yes | Gross and net columns both required |
| Currency | All | Filter to one pair for targeted FX review |
| Export format | CSV, UTF-8 | ISO date (YYYY-MM-DD), explicit currency code |
| Timezone | Local business timezone | Prevents date-boundary mismatches |
Pro Tip: Posting date, transaction date, and settlement date are three different fields. Posting date is when the entry hits the GL. Transaction date is when the customer completed the exchange. Settlement date is when the processor funds your account. Mixing them up is the single most common cause of a daily report that does not match the bank statement.
Which filters and dimensions should you configure?
Filters determine what the report includes. Dimensions determine how it groups and subtotals the data. Getting both right means the output feeds your reconciliation workflow without manual rearrangement.
Common filters to apply:
- Posting/settlement date: Always set explicitly. Never rely on a system default that may carry over from a previous run.
- Legal entity: Required for multi-entity operations where each entity has its own GL.
- Branch/location/cashpoint: Essential for branch-level cash drawer reconciliation.
- Payment method: Card, cash, wire, FX counter. Separating these makes acquirer matching faster.
- Card acquirer/processor: Filter to a single processor when matching against that processor's settlement file.
- Currency: Filter to a single currency pair for targeted FX position review.
- Transaction type: Sale, refund, void, fee, adjustment. Exclude voids from totals unless you need a gross activity count.
- Status: Posted, pending, voided, refunded. For daily close, include only posted transactions in your primary totals.
Recommended filter combinations for common tasks:
Data dimensions for reconciliation matching:
For each transaction row, the report should include: transaction ID, batch ID, processor settlement ID, gross amount, fee amount, net amount, bank deposit reference, GL account mapping, currency, exchange rate (with rate timestamp for FX), and posting reference. Currency gain/loss traceability requires a consistent field set that links summary variances back to transaction-level detail, including entity, currency pair, rate timestamp, and posting reference.

Pro Tip: Add a row-count column and a checksum field (sum of net amounts) to every extract. When you automate the report, compare today's checksum to yesterday's as a sanity check. A checksum mismatch before the report even reaches the reconciler is a faster catch than a manual total comparison.
How do you read the report and spot red flags?
The columns you will see vary by system, but the core fields are consistent across platforms. Here is what each means and what to watch for.
Key field definitions:
- Transaction ID: Unique identifier for each transaction. Duplicates in this column are an immediate red flag.
- Posting date: The date the entry was recorded in the GL. This is your primary sort and filter field.
- Settlement date: When the processor funds your account. May differ from posting date by one to three business days for card transactions.
- Gross amount: The full transaction value before fees.
- Fee amount: Processor, acquirer, or interchange fees deducted from gross.
- Net amount: Gross minus fees. This is what hits your bank account.
- Bank deposit reference: The reference number that links the net amount to a specific bank deposit. Missing values here block automated matching.
- Status: Posted, voided, refunded, or pending. Only posted transactions should appear in your daily totals.
- Channel: Card, cash, wire, FX counter. Useful for channel-level subtotals.
- Currency: Transaction currency. For FX operations, also check the base-currency equivalent column.
- Exchange rate: The rate applied at transaction time, with a timestamp. Needed for currency gain/loss traceability back to source records.
Gross-to-net reconciliation: Start with the gross total, subtract the fee total, and confirm the result matches the net total column. Then confirm the net total matches the bank deposit amount for that day. If those three numbers do not agree, the discrepancy lives in either the fee logic or a missing/duplicate transaction row.
Red flags to investigate immediately:
- Duplicate transaction IDs in the same extract
- Net amounts that are negative without a corresponding refund or adjustment record
- Missing bank deposit references on posted card transactions
- Settlement date more than three business days after posting date (possible processing delay or error)
- Currency mismatches between the transaction currency and the rate applied
- Posting-date gaps: transactions with a posting date that falls outside the business day you ran the report for
- Large chargebacks or refunds with no linked original transaction ID
- Total row count that differs from the previous business day by more than your expected volume variance
What does a daily reconciliation checklist look like?
A reliable daily close follows a fixed sequence. Oracle's daily reconciliation checklist prescribes running a financial summary first, confirming net sales against the processor grand total, then checking paid-out amounts against the bank deposit, and finally investigating variances with an aging filter. That sequence works for most operations. Here is the full version for a currency exchange desk:
Daily close sequence:
- Run the daily transaction report (posting date = today, all branches, all channels, posted status only).
- Verify row count and total amounts match the system's own summary screen. A discrepancy here means the extract is incomplete.
- Download the processor's settlement file and compare its net total to the report's card-channel net total. Investigate any variance above your materiality threshold.
- Match POS/register totals to the cash-channel rows in the report. Confirm physical drawer counts agree.
- Confirm fee amounts are correctly deducted and map to the correct GL expense account.
- Post any required adjustments or journal entries before the GL closes for the day.
- Sign off on the extract: the reviewer logs their name, timestamp, and a pass/fail status against each reconciliation step.
- Archive the signed extract and the processor settlement file together in a named folder (format: YYYY-MM-DD_branch_extract).
Exception workflow:
When a variance appears, triage it by amount and type before escalating. Minor rounding differences (under a defined threshold, e.g., under €5 for a single transaction) can be noted and cleared with a standard adjustment. Larger variances require a drill-down by transaction ID, processor reference, and timestamp.
Exception record template: For every unresolved exception, capture: (1) transaction ID and processor reference, (2) variance amount and currency, (3) description of the discrepancy, (4) evidence attached (screenshot, processor file extract), (5) assigned owner, (6) corrective action and due date, (7) escalation status. A complete record lets any reviewer pick up the investigation without a handover call.
Escalation criteria: Any single-transaction variance above your defined materiality threshold (set this per currency based on your operation's risk appetite) triggers same-day escalation to the head of operations or treasury. Compliance escalation applies when a variance involves a transaction that was already flagged for AML review.
Pro Tip: Require a signed digital sign-off (name + timestamp) on the daily extract before it is shared with management or archived. An unsigned extract is not an auditable record. Most systems support a workflow approval step; if yours does not, a countersigned email works as a fallback.
How do you automate and schedule daily report exports?
Manual report runs work at low volume. Once you are processing more than a few dozen transactions per day across multiple branches, automation is the only way to keep the daily close consistent. Reconciliation automation can remove the majority of manual matching work and is the foundation of a scalable daily close.
Automation options:
- Scheduled email/FTP drops: Most platforms let you schedule a daily extract to deliver automatically to a secure email address or SFTP folder at a set time (e.g., 11:00 PM local time after the last transaction posts).
- API endpoints: Pull the extract programmatically using a REST or SOAP API call with the date and filter parameters passed as query parameters. Payment platforms like Adyen provide daily finance extracts for settlement verification and GL posting via scheduled or on-demand API calls.
- Direct ERP/GL posting integrations: Some platforms post transaction summaries directly to accounting systems (SAP, Oracle, Microsoft Dynamics) via a native connector or middleware. This removes the manual import step entirely.
- Webhooks for exception alerts: Configure a webhook to fire when a transaction fails, a settlement is delayed, or a threshold is breached. This gives the reconciler a real-time alert rather than a next-morning discovery. For more on how webhooks and automation work in practice, the Tickerly automated trading FAQ covers the underlying mechanics clearly.
Export format best practices:
- CSV, UTF-8 encoding, ISO date format (YYYY-MM-DD)
- Fixed column order across every extract (column position must not shift between runs)
- Explicit currency code in its own column (do not embed currency in the amount field)
- Extract ID and run timestamp in the file header or as dedicated columns
- Include filter parameters used (date range, entity, channels) in the file metadata
Automation integrity tips:
- Use immutable extract IDs: once an extract is generated, it cannot be overwritten. If a rerun is needed, it generates a new extract ID.
- Include versioned snapshots so any reviewer can retrieve the exact extract that was used for a given day's close.
- Run a shadow extract (parallel, non-production scheduled run) for two weeks before switching to production automation. This validates field mappings, column order, and SLA timing before the live close depends on it.
- For regulatory compliance reporting automation, the same extract discipline applies: locked parameters, signed outputs, and a documented change-control process for any filter modification.
What do you do when the daily report doesn't match?
A mismatch between the report total and the bank statement or processor file is not unusual. Most have a straightforward cause. Work through this diagnostic sequence before raising a support ticket.
Diagnostic steps:
- Confirm the date boundary. Check that the posting date filter is set to exactly one business day. A filter that accidentally spans midnight or includes the prior day is the most common cause of an inflated row count.
- Check timezone settings. If your system processes transactions in UTC but your business operates in CET (UTC+1) or CEST (UTC+2), a transaction at 11:30 PM local time may post on the next UTC day. Confirm the system's timezone and adjust your date filter accordingly.
- Verify all branches are included. A missing branch in the filter means its transactions are absent from the total. Check the branch list against the expected count.
- Check for duplicate imports. If a batch was imported twice (common after a system timeout), duplicate transaction IDs will appear. Filter the transaction ID column for duplicates and remove the second instance.
- Confirm voided transaction logic. Some systems include voided transactions in gross totals and subtract them separately. Others exclude them entirely. Know which logic your system uses before comparing totals.
- Check fee and refund logic. Confirm whether refunds are shown as negative amounts in the same column or as separate rows. A refund shown as a positive amount in a separate column will inflate the gross total if you sum the wrong column.
When to re-run or request a reprocess:
Re-run the extract if you changed a filter parameter and want a clean output. Request a reprocess from the processor or bank only when you have confirmed the discrepancy is on their side (their settlement file shows a different net than your system's posted total for the same batch ID).
Support ticket template: When escalating to internal tech support or a vendor, include: (1) report name and version, (2) exact run parameters (date, entity, channels, status filter), (3) extract ID and run timestamp, (4) 3–5 sample transaction IDs that illustrate the discrepancy, (5) screenshot of the report total vs. the expected total, (6) expected total and its source (processor file, bank statement, POS total), (7) steps already taken. A complete ticket cuts resolution time significantly compared to a vague "the numbers don't match" report.
For deeper context on how transaction management systems handle posting logic and date boundaries, that background helps when diagnosing edge cases.
Why do validated daily controls matter, and how should you configure them?
Daily validated controls are not just an operational convenience. For currency exchange operators, they are a governance requirement. The Federal Reserve Bank of New York's FX operations guidance stresses immediate trade capture and daily reconciliation between trading and accounting systems to prevent misstatements and settlement failures. Supervisory standards require daily net position reports reconciled to trader blotters, with immediate escalation for any position or limit excess.
For multi-currency desks, tracking liquidity across currencies requires a daily maturity gap report alongside the transaction summary. If formal reports cannot be produced before a weekend or public holiday, the standard practice is to estimate and communicate end-of-day positions to management before the close.
Recommended Currexchanger configuration for daily reporting:
- Scheduled daily extracts: Configure automated extracts to run at a fixed time after the last transaction posts, with extract IDs logged automatically.
- Role-based sign-off workflow: Assign the daily extract to a named reviewer. The report is not archived until the reviewer logs a pass/fail sign-off with a timestamp.
- Immutable activity logs: Every report run, parameter change, and sign-off is recorded in a tamper-evident activity log that supports internal audit and regulatory review.
- MFA and IP restrictions for report access: Report access requires multi-factor authentication, and access can be restricted to office IP ranges to prevent unauthorized extraction.
- API links to accounting/ERP: Net position and transaction summary data posts directly to the GL via API, removing the manual import step and the errors that come with it.
Security and compliance notes for Central Europe:
Central European jurisdictions require financial businesses to retain transaction records for a minimum of five years under AML and payment services regulations. Extracts must be stored in a secure, access-controlled environment. Any change to a filed extract must be logged with the original version preserved. For a full view of currency exchange reporting requirements in Central Europe, that reference covers the current regulatory framework.
For audit trail practices across multi-account operations, the TradeDupe audit trail guide provides a useful reference for structuring evidence packs that let a reviewer rerun any material variance from a locked extract.
Pro Tip: Design your evidence packs so that any reviewer can rerun a material variance from the locked extract without asking anyone for help. That means including the extract version, cutoff timestamp, rate sources, and posting references in every archived file.
What most teams get wrong about daily reporting
The biggest mistake is treating the daily report as a confirmation exercise rather than a detection tool. Teams run the report, see that the totals roughly match, and archive it. That is not reconciliation. That is a count check.
Real reconciliation means matching at the transaction level: every transaction ID in the report has a corresponding entry in the processor file, the bank statement, and the GL. When those three sources agree, you have a reconciled day. When they do not, you have an exception, and the exception is the point. The report's value is not the summary total. It is the rows that do not match.
The second common failure is inconsistent extract parameters. A report run with slightly different filters on different days produces totals that cannot be compared over time. Lock the parameters, document them, and require a change-control sign-off before anyone modifies them. One team member changing the date type from posting date to transaction date "just to check something" can corrupt a week of trend data before anyone notices.
The behavioral change that makes the biggest difference: require a named, timestamped sign-off on the daily extract before it leaves the finance team. Not a reply-all email. A logged approval in the system. That single control creates accountability, creates an audit trail, and forces the reviewer to actually look at the report rather than forward it unread.
Currexchanger automates your daily close from extract to sign-off
Currency exchange operators running manual daily closes across multiple branches spend hours each week on work that should take minutes. Currexchanger's reporting module handles scheduled daily extracts, role-based sign-off workflows, immutable audit logs, and direct API posting to accounting systems, all in one platform built specifically for currency exchange operations.

The platform generates multi-currency net position reports, maps gross-to-net fee logic automatically, and restricts report access via MFA and IP controls. Onboarding a new branch to the automated daily close typically takes less than a week. If you are running daily reconciliation manually across more than two locations, the time savings are immediate.
Book a demo at Currexchanger to see the daily reporting and reconciliation workflow in action, or review the liquidity tracking guide to understand how net position reporting fits into the broader daily close.
Sources
- Comptroller's Handbook: Foreign Exchange (OCC)
- Day Book Customer Ledger Entry (report) - Business Central | Microsoft Learn
- Daily Reconciliations: Process, Fraud Prevention, and Automation - LegalClarity
This article is general information, not a substitute for advice from a qualified financial advisor. Consult a qualified financial professional about your own circumstances before acting on anything here.
FAQ
What is a daily transaction report?
A daily transaction report is a chronological, posting-date-driven extract of all financial transactions recorded in a system for a single business day. It typically includes transaction IDs, gross amounts, fees, net amounts, currency, channel, and status, and is used for end-of-day reconciliation and audit trail purposes.
How do you generate a transaction report in most finance systems?
Navigate to the reporting module, select the daily transaction or daily payment summary report, set the date parameter to posting date for the current business day, choose your entity and payment channels, enable gross and net columns, and export as CSV or XLSX. The exact menu path varies by platform, but the parameter logic is consistent.
How do you get a 30-day transaction history?
Set the date range to a 30-day posting date window (e.g., June 1–June 30) using the same report type you run daily. Most systems allow multi-day ranges on the same report; the output is a monthly transaction report that can be filtered and subtotaled by day, branch, or channel.
How do you record daily transactions for reconciliation?
Run the daily extract with posting date, all channels, and posted status. Match each transaction row to the processor settlement file and bank statement by transaction ID and batch ID. Post any adjustments, log a named sign-off, and archive the signed extract alongside the source files.
When is daily reconciliation required instead of monthly?
Daily reconciliation is required when transaction volume is high, when you operate a multi-currency desk with overnight FX exposure, or when your card acquirer settles same-day. Supervisory guidance for foreign-exchange operations specifically requires daily net position reports reconciled to trader blotters, with immediate escalation for any limit excess.
