skills/payments-checkout/accounts-receivable-automation/SKILL.md
Automate B2B accounts receivable with invoice generation, payment tracking, dunning sequences for past-due invoices, and aging analysis dashboards
npx skillsauth add finsilabs/awesome-ecommerce-skills accounts-receivable-automationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Accounts receivable (AR) automation converts manual invoice follow-up — sending reminders, tracking payment status, escalating overdue accounts — into a system-driven workflow. In B2B ecommerce, where customers pay on net-30, net-60, or net-90 terms rather than at checkout, AR management directly impacts cash flow and days sales outstanding (DSO).
A well-configured AR system reduces DSO by 5–15 days by ensuring follow-up is timely and persistent, eliminates invoices falling through the cracks, and gives the finance team real-time visibility into what is owed and how overdue each invoice is.
| Platform | Recommended Tool | Why | |----------|-----------------|-----| | Shopify | Invoiced.com or Apruve (B2B app) + QuickBooks Online | Shopify handles orders; a dedicated AR tool handles net-terms invoicing, dunning, and aging outside Shopify's standard checkout flow | | Shopify Plus | Shopify B2B (built-in) + Invoiced or NetSuite | Shopify Plus has native B2B payment terms, company accounts, and order approval workflows; pair with Invoiced for advanced dunning | | WooCommerce | WooCommerce B2B plugin + WooCommerce PDF Invoices | WooCommerce B2B enables net terms; WooCommerce Payments or Stripe handles payments; FreshBooks/QuickBooks sync handles AR aging | | BigCommerce | BigCommerce B2B Edition + Apruve or NetSuite | BigCommerce B2B Edition supports company accounts, payment terms, and quotes natively | | Custom / Headless | Stripe Invoicing API or build with Stripe + accounting system webhook | Stripe Invoicing handles invoice creation, dunning, and payment links; pair with QuickBooks or Xero for AR aging |
Use Stripe Invoicing to handle the full AR lifecycle without building from scratch:
// Create an invoice for a B2B order using Stripe Invoicing
const invoice = await stripe.invoices.create({
customer: stripeCustomerId,
collection_method: 'send_invoice',
days_until_due: 30, // Net-30 terms
metadata: { order_id: orderId, po_number: poNumber },
description: `Invoice for Order ${orderNumber}`,
});
// Add line items
await stripe.invoiceItems.create({
customer: stripeCustomerId,
invoice: invoice.id,
amount: lineTotal, // in cents
currency: 'usd',
description: productDescription,
});
// Finalize and send
await stripe.invoices.finalizeInvoice(invoice.id);
await stripe.invoices.sendInvoice(invoice.id);
Stripe automatically handles:
Set up automated reminder emails for overdue invoices. The standard escalation sequence:
Day 0 (due date): Invoice due reminder — "Your invoice is due today" Day 1 overdue: Friendly reminder — "Your payment is a day past due" Day 7 overdue: Second notice — "Invoice still outstanding — please arrange payment" Day 14 overdue: Final notice — "Account review required — please contact us immediately" Day 30 overdue: Credit hold — stop new orders; escalate to account manager or collections
In Invoiced: Configure this under Settings → Chasing → Chasing Schedules. Set a default schedule and assign it to all customers, with a separate more aggressive schedule for high-risk accounts.
In Stripe Invoicing: Configure under Stripe Dashboard → Billing → Settings → Invoice reminders. Enable reminders at due date, 3 days after, 7 days after, and 14 days after.
Aging reports show outstanding invoices grouped into buckets: current, 1–30 days, 31–60 days, 61–90 days, and 90+ days.
Review the aging report weekly. Any account in the 61–90 day bucket should get a phone call, not just an email. Any account in the 90+ day bucket should be on credit hold.
Before accepting new orders from a B2B customer on net terms, check that their current AR balance does not exceed their credit limit.
| Problem | Solution | |---------|----------| | Dunning emails marked as spam | Use a dedicated sending domain for billing emails ([email protected]); authenticate with SPF, DKIM, DMARC; never send dunning from your marketing domain | | Customer paid but invoice still shows overdue | Connect your payment processor to your AR tool so payments are matched automatically; Invoiced and Stripe Invoicing both do this automatically | | Credit limit not enforced at checkout | Use platform-native credit limits (Shopify Plus B2B, BigCommerce B2B Edition) or your AR tool's credit limit feature; check limits before order confirmation | | Month-end AR balance does not reconcile with accounting | Use a single integration between your ecommerce platform and accounting system (QuickBooks or Xero); avoid manual data entry that creates discrepancies | | Customer disputes invoice amount after 60 days | Require PO number at order creation for B2B; send invoice immediately at shipment; document customer email acknowledgment |
tools
Let shoppers save products to a wishlist, share it with friends, and get notified when saved items come back in stock or drop in price
development
Build a themeable storefront with design tokens and CSS custom properties that supports white-labeling, multi-brand variants, and dark mode
development
Speed up product discovery with instant search suggestions, fuzzy typo matching, and category-aware results powered by Algolia or Elasticsearch
development
Build a mobile-first storefront with thumb-friendly navigation, sticky add-to-cart buttons, and touch-optimized components for high mobile conversion