Match Funding Transactions
Associate Payload funding transactions with bank statement entries for accurate reconciliation
Matching funding transactions to bank statements is essential for accurate financial reconciliation. Payload funding transactions (deposits and withdrawals) appear on merchant bank statements, and matching these entries ensures your records align with actual bank activity. Use reference numbers, amounts, dates, descriptors, and custom attributes to match transactions efficiently.
Funding transactions represent funds being deposited to or withdrawn from bank accounts. These are deposit and withdrawal transactions in Payload, and they appear as deposits or withdrawals on your bank statement. Accurate matching ensures your books reconcile with your bank and helps identify discrepancies quickly.
Prerequisites
Before matching funding transactions, understand:
Funding basics
Understand how funding works and when funds are deposited.
Transactions
Learn about transaction types and fields available for matching.
Processing settings
Configure funding style and descriptors that appear on statements.
Understanding Funding Transactions
Funding transactions move money between Payload and bank accounts.
What are funding transactions
Funding transactions in Payload represent the movement of funds to and from merchant bank accounts. These are created automatically through Automated Funding when paying transactions (payments and payouts) occur:
| Attribute | Deposit Transactions | Withdrawal Transactions |
|---|---|---|
| Type | deposit | withdrawal |
| Direction | Payload → Bank Account | Bank Account → Payload |
| Appears on | Merchant bank statement as deposit | Merchant bank statement as withdrawal |
| Purpose | Settlement of processed payments (credits) | Settlement of refunds and chargebacks (debits) |
| Created when | Payment transactions are processed | Refund or chargeback transactions occur |
Funding characteristics:
- Appear on bank statements with descriptor
- Include reference number for tracking
- Have estimated cleared date for settlement timing
- May be netted, gross, or itemized based on funding style
- Automatically orchestrated via Automated Funding configuration
Funding styles
Your processing account funding style determines how transactions settle and affects your matching strategy:
| Funding Style | Bank Statement Entries | Matching Strategy |
|---|---|---|
| Netted | Single deposit per settlement period | Match one bank entry to multiple transactions (batch matching) |
| Gross | Separate deposits for credits/debits | Match one or two bank entries to multiple transactions (batch matching) |
| Itemized | One deposit per transaction | Match one bank entry per Payload transaction (one-to-one) |
| Manual | Deposits when funds released | Match released batches to bank entries |
Learn more about configuring funding styles in Automated Funding.
Matching Strategies
Different strategies for matching funding transactions to bank statements.
The most reliable matching method uses the system-generated reference number.
How it works:
- Payload generates unique
ref_numberfor each transaction - Bank statements often include reference numbers in description
- Query Payload transactions by
ref_numberfield - Exact matches ensure accuracy
Advantages:
- Unique identifier guarantees exact match
- Fast querying by single field
- Works regardless of amount or date
- No ambiguity
Limitations:
- Requires bank statement to include reference
- Not all banks show reference numbers prominently
- May need to parse reference from statement text
Match transactions using amount and settlement date with tolerance ranges.
How it works:
- Query by transaction amount
- Use date range (±2 days) for settlement timing differences
- Match against
created_atorest_cleared_date - Narrow results with additional criteria if multiple matches
Advantages:
- Works with basic bank statement data
- Intuitive matching criteria
- Flexible date ranges accommodate timing differences
- Can include tolerance for fees
Limitations:
- Multiple transactions same amount/date = ambiguous
- Requires date range due to timing variations
- Amount mismatches if fees deducted
- Manual review needed for multiple matches
Best practices:
- Use
est_cleared_datefor more accurate matching - Apply ±2 day range for settlement timing
- Combine with descriptor for disambiguation
Use the statement descriptor to identify and match transactions.
How it works:
- Bank statement shows descriptor text
- Query Payload transactions by
descriptorfield - Use exact or partial matching
- Combine with amount/date for precision
Advantages:
- Human-friendly identification
- Useful for multi-brand scenarios
- Visible on all bank statements
- Can use partial matching for truncated text
Limitations:
- Bank may truncate descriptor (32 char limit)
- Formatting differences possible
- Not unique alone (needs amount/date too)
- Template variables make exact matching harder
Best practices:
- Use unique descriptors per funding source
- Include identifiers in descriptor template
- Combine descriptor with amount and date
- Account for truncation at 32 characters
Match netted or gross funding batches to combined bank statement entries.
How it works:
- Query all funding transactions in settlement period
- Calculate total amount for batch
- Match batch total to bank statement amount
- Use custom attributes to track batch IDs
Advantages:
- Matches funding style behavior
- Single bank entry maps to multiple transactions
- Can verify all transactions included
- Useful for period-based reconciliation
Limitations:
- Requires querying multiple transactions
- More complex than single transaction matching
- Timing differences affect batch composition
- Discrepancies require investigation
Best practices:
- Use
attrs.funding_batch_idfor explicit tracking - Query by date range matching settlement period
- Verify transaction count and total match expectations
- Investigate discrepancies systematically
Matching Examples
Practical examples of matching scenarios.
Bank statement:
- Date: 2024-01-15
- Amount: $1,500.00
- Description: "Payload - REF123456"
Matching strategy:
ref_number = "REF123456"
transactions = pl.Transaction.filter_by(
q=f'ref_number == "{ref_number}" && type == "deposit"',
limit=1
).all()
if transactions[0].amount == 1500.0:
print("Match confirmed!")Bank statement:
- Date: 2024-01-15
- Amount: $15,000.00
- Description: "Daily Settlement"
Matching strategy:
batch_start = "2024-01-14"
batch_end = "2024-01-14"
transactions = pl.Transaction.filter_by(
q=f'type == "deposit" && created_at >= date("{batch_start}") && created_at <= date("{batch_end}")'
).all()
total = sum(txn.amount for txn in transactions)
if total == 15000.0:
print(f"Batch matches! {len(transactions)} transactions")Bank statement (multiple entries):
- Entry 1: $150.00 on 2024-01-15, "Product Sale - ORD-001"
- Entry 2: $200.00 on 2024-01-15, "Product Sale - ORD-002"
- Entry 3: $175.00 on 2024-01-15, "Product Sale - ORD-003"
Matching strategy:
entries = [
{"amount": 150.0, "date": "2024-01-15", "order": "ORD-001"},
{"amount": 200.0, "date": "2024-01-15", "order": "ORD-002"},
{"amount": 175.0, "date": "2024-01-15", "order": "ORD-003"},
]
for entry in entries:
transactions = pl.Transaction.filter_by(
q=f'type == "deposit" && amount == {entry["amount"]} && order_number == "{entry["order"]}" && created_at >= date("{entry["date"]}")'
).all()
if len(transactions) == 1:
print(f"Matched: {entry['order']}")Bank statement:
- Date: 2024-01-15
- Amount: $1,495.50 (after $4.50 wire fee)
Matching strategy:
bank_amount = 1495.50
tolerance = 10.0
min_amount = bank_amount - tolerance
max_amount = bank_amount + tolerance
transactions = pl.Transaction.filter_by(
q=f'type == "deposit" && amount >= {min_amount} && amount <= {max_amount} && created_at >= date("2024-01-14") && created_at <= date("2024-01-16")'
).all()
closest = min(transactions, key=lambda t: abs(t.amount - bank_amount))
print(
f"Match found: ${closest.amount} (diff: ${closest.amount - bank_amount:.2f})"
)Schema Reference
Fields relevant to matching funding transactions.
Key transaction fields
ref_numberamountcreated_atest_cleared_date"Undocumented"Matching fields:
- ref_number: Unique system-generated reference for exact matching
- amount: Transaction monetary value for amount-based matching
- created_at: Transaction creation timestamp
- est_cleared_date: Estimated settlement date, matches bank statement dates more closely
- descriptor: Statement text, appears on bank statements
Query operators
Use these operators when querying for matching:
| Operator | Usage | Example |
|---|---|---|
== | Exact match | ref_number == "REF123456" |
>= | Greater than or equal | created_at >= date("2024-01-14") |
<= | Less than or equal | created_at <= date("2024-01-16") |
?= | Contains (partial match) | descriptor ?= "*ACME*" |
&& | Combine conditions | amount == 1500 && type == "deposit" |
Next Steps
Improve reconciliation accuracy and automate matching workflows
Complete Bank Reconciliation
Master full bank reconciliation with Bank Reconciliation guide, automate matching processes, and implement Custom Attributes for tracking reconciliation metadata across transactions.
Customize Statement Descriptors
Configure descriptors for easier matching with Custom Descriptors documentation, understand how Funding styles affect descriptors, and optimize Processing Settings for your workflow.
Build Reconciliation Reports
Create powerful reports with Reporting Overview for reconciliation analytics, track transaction status with Transaction Status documentation, and manage payouts efficiently with Payouts guide.
Automate Reconciliation
Integrate external systems with System Integration best practices, receive real-time updates via Webhooks for automatic matching, and explore API Reference for building custom reconciliation tools.
Related articles
- Bank Reconciliation - Reconcile all bank activity
- Funding - Understand funding and settlement
- Custom Descriptors - Configure statement text
- Custom Attributes - Add reconciliation metadata
- Transactions - Complete transaction guide
- Payouts - Payout transaction management
- Processing Settings - Configure funding style
- Reporting - Create financial reports