3 min read

When Customers Pay Invoices Online, Why Does Reconciliation Still Take Hours?

When Customers Pay Invoices Online, Why Does Reconciliation Still Take Hours?

Automating Mixed-Tender Invoice Payments: BigCommerce to NetSuite Done Right

 

B2B ecommerce integration seems straightforward until you hit edge cases. Orders with multiple payment methods, store credits combined with credit cards, credit memos that should offset balances—these scenarios expose the gap between "technically integrated" and "actually automated."

This week we deployed a solution for a mid-market distributor that eliminates manual payment reconciliation for their BigCommerce invoice payments. The pattern applies broadly to any B2B operation running BigCommerce with NetSuite.

 

The Problem: Mixed Funding Sources

The client's B2B customers pay open invoices through a BigCommerce storefront. Simple enough when a customer pays invoice #12345 with a credit card for the full amount. But real-world B2B payments are messier:

  • A customer pays $10,000 across three invoices using $8,500 credit card + $1,500 store credit
  • A customer has a $2,000 credit memo from a return that should apply before charging their card
  • A customer pays multiple invoices in a single transaction, and the payment needs to apply oldest-first for accurate aging

Standard integration connectors—including out-of-the-box Celigo flows—handle the simple case. They create a sales order or cash sale in NetSuite. But for invoice payments with mixed funding, someone in accounting still has to manually create Customer Payments, apply credit memos, and verify that everything settles correctly.

 

Technical Approach: Decomposing the Payment

The solution requires treating a BigCommerce invoice payment order as a composite transaction that maps to multiple NetSuite records:

Customer Payment record: Created for the cash/credit card portion. The "Payment Amount" field reflects only the actual tender—not store credits or credit memos. The payment applies against specified invoices using the allocation logic described below.

Credit Memo application: Store credits from BigCommerce map to NetSuite Credit Memos. If a credit memo already exists (from a previous return), the integration applies it to the target invoices. If BigCommerce store credit was used, we first verify or create the corresponding credit memo, then apply it.

Invoice settlement validation: After all components apply, the integration confirms each invoice is fully settled. Over-application (which would create unwanted customer credits) and under-application (leaving open balances) both trigger exception handling rather than silent failures.

 

Allocation Logic: Why Oldest-First Matters

When a payment covers multiple invoices, allocation sequence affects AR aging, cash flow reporting, and audit trails. Most finance teams expect oldest-first (FIFO) allocation—the payment satisfies the oldest invoice before applying to newer ones.

Our integration implements deterministic oldest-first allocation:

  1. Query open invoices for the customer, sorted by transaction date ascending
  2. Apply payment amount to invoices in sequence until exhausted
  3. Apply credit memos using the same sequence logic
  4. Validate final state matches expected settlement

This matches the manual process the accounting team was performing, which means reports and reconciliation workflows don't change—they just happen automatically.

 

Common Pitfalls to Avoid

Ignoring partial payments. If a customer pays less than the invoice total, the integration must handle the partial application correctly. Don't assume 1:1 payment-to-invoice mapping.

Applying credits before validating they exist. BigCommerce store credit balances don't automatically mean NetSuite credit memos exist. The integration needs to verify credit memo availability before attempting application, or create them if they're missing.

Silent over-application. If the payment amount exceeds open invoice totals, NetSuite will happily create a customer credit balance. This might be correct (prepayment) or might indicate a data problem. Build validation that flags these cases for review.

Hardcoding allocation logic. Some customers may need different allocation rules (specific invoice targeting, proportional allocation, etc.). Build the allocation engine to be configurable rather than assuming oldest-first works for everyone.

 

Why Custom Logic vs. Standard Connectors

Out-of-the-box BigCommerce-NetSuite connectors excel at standard order flows. But invoice payment processing with mixed funding sources requires business logic that connector configurations can't express. You need code that understands:

  • How to decompose a single BigCommerce order into multiple NetSuite transactions
  • Your specific credit memo handling rules
  • Your allocation preferences and exception handling requirements
  • Validation rules that match your accounting team's expectations

This is implemented as custom integration logic that runs alongside standard Celigo flows. The connector handles product sync, inventory, and standard B2C orders; the custom logic handles the invoice payment complexity.

 

Results and Next Steps

The client's finance team now processes invoice payments hands-off. Exception reports surface only the edge cases that genuinely need human review,  mismatched amounts, customers with unusual credit situations, or payments that don't map to open invoices.

If your B2B ecommerce operation is still manually reconciling invoice payments, the automation exists.

We're happy to walk through how this pattern applies to your specific BigCommerce and NetSuite configuration.