How to Build Accounts Payable Automation Software

Building accounts payable automation software like Bill.com costs $140,000-$320,000 and takes 14-26 weeks. The core system requires invoice capture via OCR (AWS Textract Invoice analysis works well), GL coding, configurable approval routing, duplicate invoice detection, and ACH payment execution. Build custom when you need AP as a feature inside a finance platform, when you have multi-entity complexity, or when you process international payments in many currencies.

Key Takeaways

  • Core AP automation (invoice capture, GL coding, approval, ACH payment) costs $140K-$180K and takes 14-16 weeks.

  • AWS Textract's Invoice and Receipt analysis feature is purpose-built for invoices. It extracts vendor name, invoice number, date, due date, and line items with confidence scores that let you auto-accept clean invoices and queue uncertain ones for human review.

  • Duplicate detection is a critical financial control. Check same vendor plus same invoice number, or same vendor plus same amount within 7 days. A missed duplicate means paying the same bill twice.

  • Never collect vendor bank details by email. Use a secure self-service vendor portal. Email-based bank detail collection is the most common AP fraud vector.

  • Build custom AP when you need it as a feature inside a larger finance platform, when you have multi-entity inter-company netting requirements, or when you process international payments in 20+ currencies.

Building accounts payable automation software costs $140,000-$320,000 and takes 14-26 weeks. The core system has six parts: invoice capture with OCR, GL coding, configurable approval routing, duplicate detection, payment execution (ACH, international wire, virtual card, check), and accounting sync.

Bill.com charges $45-$79/user/month. For a 20-person finance team, that is $10,000-$19,000/year before you add your accounting software subscription. Many mid-market companies pay this while maintaining separate ERP systems that Bill.com's connectors do not fully support.

Build custom AP software when the tool belongs inside a larger product, not alongside it.

The AP workflow

Invoices arrive from vendors via email attachment, a vendor portal, EDI, or manual upload. The system captures the invoice, extracts the data via OCR, and creates an invoice record. A human codes the GL account and department. The invoice routes for approval based on amount and department rules. An approver reviews and approves. Finance schedules the payment. The vendor gets paid. The payment records in the accounting system.

AP automation removes the paper shuffle and the email-based approval chains. It does not remove human judgment from the process. Approvers still review invoices. GL coding still requires a human for ambiguous cases. The automation handles routing, reminders, duplicate detection, and payment execution.

Invoice capture

Invoices arrive in three ways. Most come by email to a dedicated AP inbox (ap@company.com). Some come through a vendor portal. Large suppliers use EDI.

For email ingestion, configure an IMAP mailbox listener or use SendGrid's inbound parse webhook to receive emails programmatically. Extract the PDF attachment. Run it through OCR.

AWS Textract's Invoice and Receipt analysis feature is the right tool here. It is purpose-built for structured documents. It extracts: vendor name, invoice number, invoice date, due date, line items (description, quantity, unit price, total), subtotal, tax, and grand total. It returns a confidence score for each extracted field.

Use confidence scores to route invoices:

  • Above 90%: auto-accept the extraction, present to user for confirmation only

  • 70-90%: highlight the uncertain fields, require user confirmation

  • Below 70%: flag for manual data entry

This tiered approach lets you auto-process clean, structured invoices from regular vendors while catching the messy ones.

Vendor master

The vendor master is the database of all suppliers. Every vendor has: legal name, address, tax ID (EIN for US vendors, VAT number for EU vendors), payment method and bank details, payment terms (Net 30, Net 60, 2/10 Net 30), preferred currency, and 1099 status for US contractors.

Vendor onboarding should be self-service. Send the vendor a link to a secure portal where they enter their own bank details. They confirm their legal name, tax ID, and ACH routing and account number. Use DocuSign or a custom e-signature to create an authorization record.

Never collect bank details by email. This is the most common AP fraud vector. An attacker intercepts the email thread and substitutes their account details. You pay the attacker. You have no recourse. A secure portal with audit logging eliminates this vector.

GL coding and line-item allocation

Each invoice line must be assigned to a GL account (the expense account in the chart of accounts), a cost center or department, and optionally a project or job code.

For simple invoices with one line going to one department, auto-suggest the GL code based on vendor history. If the last 20 invoices from this vendor all coded to GL 6100 Marketing Expense, pre-fill GL 6100. The user confirms with one click.

For complex invoices with multiple lines across departments, present a line-item coding interface. Each line gets its own GL account, cost center, and project code. Split allocation lets the user assign 50% to Department A and 50% to Department B for a single line.

Store the chart of accounts, cost centers, and project codes in your database. Sync them from the accounting system (QuickBooks, Xero, NetSuite) at setup and refresh nightly.

Approval routing

Approval rules are based on invoice amount, department, vendor category, and GL account.

A standard setup: invoices under $1,000 route to the department manager. Invoices from $1,000 to $10,000 route to the director. Invoices over $10,000 route to the VP and CFO jointly. Marketing invoices always copy the CMO regardless of amount.

Multi-step approval: submit, then first approver, then second approver for high amounts, then payment authorization.

Each approver receives an email with a direct approve/reject link. They do not need to log in for a simple approval decision. For complex invoices with multiple line items, they log into the app to review the full detail.

Set a timeout action per step. If an approver does not act within 3 business days, send a reminder. If they do not act within 5 business days, escalate to their manager or auto-approve (depending on company policy).

Approvers see a queue showing: vendor name, invoice number, invoice date, due date, amount, GL coding, line items, the original PDF, and any prior approver comments. One button to approve. One to reject with a required comment.

Duplicate detection

Before an invoice reaches the payment queue, check for duplicates. A duplicate is: same vendor plus same invoice number, or same vendor plus same amount plus same date within 7 days.

Flag duplicates before payment. Do not auto-reject. Put them in a separate review queue where someone confirms whether it is a true duplicate or a legitimate second invoice.

This is a financial control, not a convenience feature. A missed duplicate means paying the same vendor twice for the same work. Recovering duplicate payments is slow and sometimes impossible.

Payment scheduling and execution

Once approved, the invoice goes into the payment queue. Finance reviews the queue and schedules payments.

ACH: Integrate with a US bank's ACH API or use Stripe Treasury. ACH takes 1-3 business days. This covers the majority of US vendor payments.

International wire: Use Wise Business API or Airwallex for international payments. Both offer better FX rates than a traditional bank wire and support 40+ currencies. Wise's API lets you create transfers, get quotes, and track status programmatically.

Virtual card: Issue a single-use virtual Visa or Mastercard for vendor payment using Marqeta, Extend, or Ramp. The vendor charges the card. You never share bank details. This works well for vendors who accept card payment.

Check: For vendors who only accept paper checks, use Lob API. Lob generates the check and mails it. You do not manage check stock or printers.

Store payment method preference per vendor in the vendor master. Apply it automatically when scheduling payment.

Three-way matching

Three-way matching is standard for companies that issue purchase orders. The AP system matches the PO (what was ordered and at what price), the receiving report (what was actually delivered and accepted), and the vendor invoice (what the vendor is billing for).

All three must match within a configured tolerance (e.g., ±5% or ±$50) before payment is approved. A discrepancy triggers an exception workflow. The exception routes to the purchasing team to resolve with the vendor before payment proceeds.

Without three-way matching, a vendor can invoice for goods that were never delivered or for quantities that do not match the PO. Three-way matching catches this before payment.

This feature is required for manufacturing, distribution, and any company with a formal procurement process. It is optional for professional services firms that mostly receive service invoices without POs.

1099 filing

For US businesses, payments to contractors must be reported to the IRS at year-end if cumulative payments exceed $600. The AP system should track this.

Mark vendors as 1099-eligible in the vendor master. Accumulate the annual payment total per vendor throughout the year. In January, generate 1099-NEC forms for all eligible vendors. File electronically via IRS FIRE system or through a 1099 filing service (TaxBandits API or Track1099 API).

This feature saves significant work at year-end for finance teams managing dozens of contractors.

Tech stack

  • Frontend: React (AP dashboard, vendor portal, approver interface)

  • Backend: Node.js

  • Database: PostgreSQL

  • OCR: AWS Textract (Invoice and Receipt analysis)

  • Job queue: BullMQ + Redis (approval notifications, payment scheduling)

  • ACH payments: Stripe Treasury or Nacha-connected ACH

  • International payments: Wise API or Airwallex

  • Check mailing: Lob API

  • Virtual card: Marqeta or Extend

  • Accounting sync: QBO API, Xero API, NetSuite REST API

  • Vendor authorization: DocuSign API

  • 1099 filing: TaxBandits API

Cost and timeline

Core AP automation (invoice capture, GL coding, approval routing, ACH payment, QBO/Xero sync): $140,000-$180,000, 14-16 weeks.

This covers: email ingestion, AWS Textract OCR, GL coding interface, two-step approval workflow with email notifications, duplicate detection, ACH payment via Stripe, and accounting sync to QuickBooks or Xero.

Full platform (everything above plus three-way matching, multi-entity support, international payments via Wise, virtual card issuance, check mailing via Lob, 1099 filing, self-service vendor portal, NetSuite integration): $220,000-$320,000, 20-26 weeks.

The cost jump comes from three-way matching complexity (requires PO and receiving report modules or integrations), multi-entity data modeling, and the vendor portal (which is a separate application with its own authentication and security requirements).

Build vs. buy

Use Bill.com ($45-$79/user/month) when AP is a standalone need for a finance team. For a 20-person team, Bill.com costs $10,000-$19,000/year. That is well below the cost of building.

Use Tipalti (enterprise, $149+/user/month) for global payables at scale, particularly when you need mass international payments and global tax compliance.

Use Stampli or Airbase for mid-market companies that want AI-assisted coding and a cleaner approval UX than Bill.com provides.

Build custom when:

You are building a finance platform and AP is one module among many. Your customers cannot be asked to manage vendor payments in Bill.com separately from your platform.

You have multi-entity AP with inter-company netting. When Entity A owes Entity B and Entity B owes Entity A, you net the positions and settle the difference. Bill.com's entity model does not support this.

You process international payments across 20 or more currencies with specific FX hedging requirements. Off-the-shelf tools give you payment execution but not rate locking, hedging, or treasury FX workflows.

You need AP integrated with proprietary procurement or ERP systems. If your ERP is custom-built or heavily modified from a standard platform, Bill.com's connectors will not reach it.

See how to build an app like QuickBooks and how to build an app like Xero for context on how AP integrates with the broader accounting layer.

The builds that justify custom AP automation are finance platforms serving specific verticals (real estate developers managing construction draws, law firms tracking disbursements, property management companies handling vendor invoices across hundreds of properties) where the AP workflow feeds directly into reporting or billing that the platform already owns.

Our SaaS application development team has built invoice processing and payment workflows into vertical finance products. If your platform has grown to the point where Bill.com is a workaround rather than a solution, start with an MVP to validate the core invoice-to-payment flow before building the full feature set.

Frequently asked questions

Core AP automation (invoice capture, GL coding, approval routing, ACH payment) costs $140,000-$180,000 and takes 14-16 weeks. A full platform with three-way matching, multi-entity support, international payments via Wise, 1099 filing, and a self-service vendor portal costs $220,000-$320,000 over 20-26 weeks.
AWS Textract's Invoice and Receipt analysis feature is purpose-built for structured documents like invoices. It extracts vendor name, invoice number, invoice date, due date, line items, and totals. It returns a confidence score per field — use a threshold (e.g., 85%) to auto-accept high-confidence extractions and queue low-confidence ones for human review.
Use Wise Business API or Airwallex for international payments. Both offer better FX rates than traditional bank wires and support 40+ currencies. Wise's API lets you create, schedule, and track transfers programmatically. For virtual card payments, use Marqeta or Extend to issue single-use cards — the vendor charges the card and you never share bank details.
Three-way matching compares the purchase order (what was ordered), the receiving report (what was delivered), and the vendor invoice (what the vendor billed). All three must match within a tolerance before payment is approved. Discrepancies trigger an exception workflow for review. This is standard practice in manufacturing and distribution and prevents paying for goods that were never received.
Build custom when: you need AP as a feature inside a larger finance or accounting platform (not as a standalone tool), you have multi-entity AP with inter-company netting that Bill.com cannot model, you process international payments across 20+ currencies with FX hedging requirements, or you need AP integrated with proprietary procurement or ERP systems that off-the-shelf tools do not support.

Ask an AI

Get an instant summary of this post from your preferred AI assistant.