Accounting

Get Payment Status from ERP for Reconciliation

Reconcile Payment Details for Payouts

Automate Payment Reconciliation Between Expense Reports and Accounting Records

Implementation: Query and Match Payment Records to Expense Approvals

Step 1: Query Payment Records from Accounting Systems

Start by retrieving payment records from your customer's accounting platform for the time period requiring reconciliation. Knit's payments API provides standardized access to payment transactions across 10+ accounting platforms.

API Endpoint: GET https://api.getknit.dev/v1.0/accounting.payments.list

Supported Platforms: 10 accounting systems including Xero, QuickBooks Online, NetSuite, Sage Intacct, Microsoft Dynamics 365 Business Central, Zoho Books, FreshBooks, FreeAgent, Odoo, Clear Books

Request Example:

GET /v1.0/accounting.payments.list?startDate=2025-01-01&endDate=2025-01-31&vendorType=EMPLOYEE

Query parameters:

  • startDate: Beginning of reconciliation period (YYYY-MM-DD format)
  • endDate: End of reconciliation period
  • vendorType: Filter to EMPLOYEE vendors only (excludes supplier payments)
  • status: Filter by PAID, PENDING, VOIDED status

Response structure:

{
  "payments": [
    {
      "id": "pmt_12345",
      "paymentDate": "2025-01-15",
      "amount": 2847.50,
      "currency": "USD",
      "vendor": {
        "id": "vendor_emp_789",
        "name": "Smith, John",
        "email": "john.smith@company.com"
      },
      "invoiceReference": "EXP-INV-2025-001",
      "paymentMethod": "ACH",
      "status": "PAID",
      "accountCode": "2100",
      "description": "Expense Reimbursement - January Travel"
    }
  ]
}

Critical fields for reconciliation:

  • amount: Payment amount to match against approved expense total
  • vendor.email: Employee identifier for matching to expense submitter
  • invoiceReference: Reference to source invoice/expense report for direct matching
  • paymentDate: When payment was processed
  • status: Verify payment was actually completed (PAID status)

Step 2: Match Payments to Approved Expense Reports Using Invoice References

With payment data retrieved, match payment records to approved expense reports from your travel management platform. The most reliable matching method uses invoice references that link payments to specific expense report invoices.

Matching strategies (in order of reliability):

Matching Method Reliability When to Use
Invoice Reference Match Highest When your expense platform creates invoices in accounting system with unique references (e.g., "EXP-INV-2025-001")
Amount + Employee + Date Range High When invoice references aren't available but payment amounts are unique per employee within date range
Employee + Approximate Amount Medium When payment dates don't align perfectly with approval dates, allow ±5% amount variance
Journal Entry Cross-Reference Medium When payments processed via journal entries rather than invoices, query journal entries by reference

Example matching logic using invoice references:

// Step 1: Query payments for reconciliation period
payments = queryPayments(startDate="2025-01-01", endDate="2025-01-31")

// Step 2: For each payment, find corresponding expense report
for payment in payments:
    // Extract invoice reference from payment record
    invoiceRef = payment.invoiceReference  // "EXP-INV-2025-001"

    // Query expense platform for expense report with matching invoice reference
    expenseReport = queryExpenseByInvoiceRef(invoiceRef)

    // Compare amounts
    if expenseReport.approvedAmount == payment.amount:
        // Perfect match - mark as reconciled
        markAsReconciled(expenseReport.id, payment.id)
    else:
        // Amount mismatch - flag for investigation
        flagDiscrepancy(
            expenseReport.id,
            expenseReport.approvedAmount,
            payment.id,
            payment.amount,
            variance = payment.amount - expenseReport.approvedAmount
        )

Step 3: Generate Reconciliation Reports and Exception Handling

With payment matching complete, generate reconciliation reports showing matched transactions and highlighting exceptions that require investigation. Different exception types indicate different root causes.

Reconciliation status categories:

Status Description Action Required
MATCHED Payment amount matches approved expense exactly, invoice reference confirms link None - reconciled successfully
AMOUNT_VARIANCE Invoice reference matches but payment amount differs from approved expense Investigate: Data entry error during invoice creation? Currency conversion issue? Partial payment?
PAYMENT_NOT_FOUND Approved expense exists but no matching payment found in accounting system Investigate: Payment pending? Invoice not yet paid? Payment processed in different period?
ORPHAN_PAYMENT Payment exists in accounting system but no corresponding approved expense found Investigate: Duplicate payment? Manual payment not linked to expense report? Data sync issue?
VOIDED_PAYMENT Payment was processed then voided in accounting system Investigate: Why voided? Was replacement payment issued? Update expense report status

Advanced Reconciliation: Query Journal Entries for Non-Invoice Payment Methods

Some organizations process reimbursements through journal entries rather than invoices (particularly when using payroll integration). In these cases, query journal entry records instead of payments.

API Endpoint: GET https://api.getknit.dev/v1.0/accounting.journalEntries.list

Filter journal entries by date range and search line item descriptions for expense report references. Match journal entry debit amounts (expense accounts) and credit amounts (AP accounts) to approved expense totals.

Key APIs and Data Models for Payment Reconciliation

API Endpoint Purpose Key Response Fields
GET /v1.0/accounting.payments.list Query payment records from accounting systems id, paymentDate, amount, vendor (employee), invoiceReference, status, paymentMethod
GET /v1.0/accounting.invoices.list Retrieve invoice records to verify invoice references exist id, invoiceNumber, vendor, totalAmount, status, dueDate
GET /v1.0/accounting.journalEntries.list Query journal entries when reimbursements processed via JE instead of invoices journalEntryDate, reference, lineItems (accountCode, debitAmount, creditAmount, description)
GET /v1.0/accounting.vendors.list Retrieve employee vendor records to match payment vendors to employees id, name, email, type (filter to EMPLOYEE type)

Typical reconciliation workflow:

  1. Query approved expenses: Retrieve all approved expense reports from your T&E platform for reconciliation period
  2. Query payments: Retrieve all payment records from accounting system for same period (use List Payments API)
  3. Match by invoice reference: For each payment, find corresponding expense report using invoiceReference field
  4. Compare amounts: Verify payment amount matches approved expense total (allow small rounding differences)
  5. Flag exceptions: Generate reports showing amount variances, orphan payments, and missing payments
  6. Update status: Mark expense reports as "PAID" when matching payment found, "PENDING_PAYMENT" when not found

Reconciliation frequency recommendations:

  • Daily reconciliation: For organizations processing high volumes of expense reimbursements (100+ per week), detect payment errors immediately
  • Weekly reconciliation: Balanced approach for mid-size organizations, allows time for payment processing while maintaining visibility
  • Monthly reconciliation: Minimum recommended frequency, aligns with month-end close but delays error detection
  • Real-time status updates: Query payment status on-demand when employees request payment confirmation via expense platform

Wrapping Up: Eliminate Manual Reconciliation and Ensure Payment Accuracy

Automated payment reconciliation transforms expense payment verification from a manual, spreadsheet-based process into a systematic, audit-ready workflow. By programmatically querying payment records from accounting systems and matching them to approved expense reports using invoice references, you eliminate manual data exports, reduce reconciliation time from days to hours, and instantly detect payment discrepancies before they impact financial statements.

Key capabilities unlocked:

  • Unified payment data access: Query payment records from 10+ accounting platforms (Xero, QuickBooks, NetSuite, Sage Intacct, Dynamics 365, Zoho Books, etc.) through single API
  • Invoice reference matching: Automatically match payments to expense reports using invoice reference identifiers, eliminating manual matching and reducing errors
  • Exception-based reconciliation: Focus accounting team effort on discrepancies rather than confirming successful matches—system handles routine verification automatically
  • Payment status visibility: Display payment confirmation directly in expense management platform, giving employees visibility into reimbursement status without contacting finance
  • Multi-entity support: Reconcile payments across multiple legal entities and accounting systems, consolidating payment tracking for complex organizational structures
  • Audit trail documentation: Generate timestamped reconciliation reports demonstrating systematic payment verification, satisfying SOC2 and financial audit requirements
  • Early error detection: Flag payment discrepancies immediately when payments post rather than waiting for monthly reconciliation, enabling quick correction before month-end close

Built for Scale, Speed,
and Simplicity

Ready to Get Started?
Book a 1-on-1 demo today