Ramp Bill Pay PO matching works on purchase orders Ramp imports from NetSuite, Sage Intacct, QuickBooks Online and Microsoft Dynamics 365 Business Central, on the Ramp Plus plan. When the invoice shows the PO number, Ramp's OCR reads it and attempts the match to the imported PO, or on Business Central suggests it. POs from any other system can reach Ramp as a CSV import, and teams on Ramp's Procurement add-on can raise POs in Ramp itself.
The supported ERPs are not a closed list. Ramp's help page on importing and matching purchase orders says PO import "is supported for integrations such as NetSuite, Sage Intacct, and QuickBooks Online" and adds Universal CSV. That page once said "currently only supported for" those three ERPs; Business Central has since gained a purchase order support page of its own. Ramp's help centre documents no native PO import from Xero, Acumatica, Dynamics 365 Finance & Operations, Oracle, Sage 50 or Zoho. On those, Ramp still captures and pays the invoice, but there is no PO in Ramp to match it against until one is brought in. Check the help centre for your ERP before deciding anything, since the list has already grown once.
For ERPs without native import, four workarounds are open: checking bills against the ERP by hand, importing POs by CSV, raising them in Ramp Procurement, or syncing them through Ramp's developer API. They get full treatment further down, along with the extraction step that feeds the CSV route when POs and invoices arrive as PDFs.
How Ramp PO matching works on NetSuite, Sage Intacct, QuickBooks Online and Business Central
Import is a setting. In Bill Pay settings, under Importing, "Automatically Import Purchase Orders" pulls open POs from the connected accounting system; it needs Ramp Plus. Business Central also needs the Ramp for Business Central extension, version 1.1.0.34 or higher, and Ramp imports only POs in Released status, daily and whenever someone opens the Purchase orders page in Ramp.
The match runs on the PO number. If the invoice shows one, Ramp's OCR reads it and attempts the match against the imported POs; on Business Central the OCR suggests the match for the reviewer to confirm. If the invoice shows no PO number, Ramp lists possible matches and the reviewer selects the right PO. On Business Central, selecting an imported PO while creating the bill pre-fills the bill from it.
Matching inside Ramp is two-way: bill against PO. Where the third leg happens depends on the ERP. On NetSuite, Sage Intacct and QuickBooks Online, the matched bill syncs back to the accounting system for the three-way match against item receipts there, where receipts are set up, so NetSuite three-way match for vendor bill approval runs on NetSuite's own records rather than inside Ramp. Business Central works the other way round: Ramp imports its Posted Purchase Receipts, and when the matched bill syncs, Ramp links bill lines to the receipt lines received but not yet invoiced.
One bill can be matched to several POs when the POs come from NetSuite, QuickBooks Online or a Universal CSV import. Business Central allows the reverse, several bills against one PO for partial billing, but not several POs on one bill.
Some limits hold on every supported ERP. In Ramp's words, imported POs "can only be paid down by bills created and matched in Ramp." A bill paid against the PO in the ERP directly, by a check run or a manual entry outside Ramp, does not draw down the PO on Ramp's side, so PO bills need to run through Ramp end to end. Imported POs do not appear in Ramp's own Manage spend > Purchase orders list, and virtual cards can be issued only against POs created in Ramp. On Business Central, a PO in Released status can no longer be updated from Ramp; it has to be reopened in Business Central first.
What happens to an unmatched bill, and on ERPs Ramp doesn't import from
On a supported ERP, an invoice without a PO number is the ordinary unmatched case, and Ramp's list of possible matches handles it: the reviewer picks the PO and the bill continues as a matched bill. A PO Ramp hasn't imported cannot be matched at all. A draft PO, or a Business Central PO not yet Released, has to reach the imported list first. If no PO applies, the bill goes through as a non-PO bill.
On an ERP Ramp doesn't import POs from, capture is unchanged. Ramp's OCR reads the invoice's details and line items, and its coding agent suggests GL codes from the team's past invoices. What is missing is the PO. With no PO in Ramp, there is nothing to match the bill against and no receipt leg, so every bill flows through Ramp's approval routing as a non-PO bill. Approver chains, GL coding, payment scheduling and the sync back to the ERP all keep working. A PO number typed into the bill's memo records the reference for the audit trail, but does not link the bill to a PO. The team loses the match, not the ability to process the bill.
Where the PO lives, and the easiest way to bring it into Ramp, differ by ERP:
- Xero: Ramp documents no PO import from Xero, so POs raised in Xero stay there. Teams on Ramp Procurement can raise POs in Ramp instead; Ramp fills their accounting fields and exports them to Xero by CSV rather than syncing them natively. Otherwise Xero POs come into Ramp as a CSV import.
- Acumatica: Ramp documents no native PO import. Acumatica's native AP document recognition and PO matching handles matching on the ERP side, so the choice is between matching in Acumatica and bringing the POs into Ramp by CSV or API.
- Microsoft Dynamics 365 Finance & Operations: Ramp's PO support covers Business Central, and its help centre documents no PO import from F&O. Capture the bill in Ramp, push the coding to D365 and reconcile POs in Dynamics, or import them into Ramp by CSV.
- Microsoft Dynamics 365 Business Central: supported, as above. Business Central's own approval routing still governs its POs and purchase invoices, covered in the Business Central purchase invoice approval workflow guide; Ramp imports its Released POs and Posted Purchase Receipts.
- Oracle, Sage 50, Zoho: no documented native import. POs reach Ramp by CSV or API, or PO reconciliation stays in the ERP.
Workarounds for ERPs without native PO import
Four Ramp Bill Pay PO matching workarounds cover the ERPs Ramp doesn't import from. They differ in where the check against the PO happens and who keeps the PO data current: a reviewer working from the ERP, a scheduled file, Ramp itself, or an engineer's sync.
Workaround 1: checking bills against the ERP by hand. With few PO bills, a reviewer checks each one against the PO in the ERP, approves it as a non-PO bill in Ramp and notes the PO number in the memo. That records the reference but gives no match in Ramp; the check lives with the reviewer and the ERP. It holds while one person knows the open POs. Past that, the per-bill checking becomes the cost.
Workaround 2: importing POs by CSV. Ramp takes POs from any system as a file. Universal CSV is one of its PO import sources, alongside the ERP integrations, and a bill can be matched to several POs from it. Teams on the Procurement add-on also have a purchase order bulk import: a CSV template with one row per line item, rows sharing a PO number grouped into one PO, up to 5,000 line items per import, each import adding to the POs already there. It accepts only committed POs, issued or approved with a complete receiving status (open, fully received or closed); drafts, POs pending approval and partly received POs are refused. The accounting system has to be connected first, since the accounting fields come from it. Once imported, bills can be matched two-way to the POs, or three-way to the POs and item receipts. The cost is the export. Every ERP names its columns and shapes its PO data its own way, so someone exports open POs on a schedule, reshapes them into Ramp's template and uploads them, and the reshaping needs fixing whenever the ERP's export changes.
Workaround 3: raising POs in Ramp Procurement. With the Procurement add-on, POs can start in Ramp rather than the ERP. An invoice carrying the exact Ramp PO number is matched automatically; without it, the reviewer picks from suggested POs filtered by vendor. Ramp then matches the invoice's line items to the PO's and carries the PO lines' coding onto them. A team with no ERP receipt sync can record item receipts in Ramp for the third leg. Ramp POs sync natively to NetSuite and QuickBooks, with Sage Intacct rolling out; for Xero and Universal CSV, Ramp fills the accounting fields on its POs and exports them by CSV. The trade is that the ERP stops being where POs start, which suits a team whose purchasing already runs through Ramp.
Workaround 4: syncing POs through Ramp's developer API. Ramp's API has endpoints to create and update purchase orders and their line items, available on Ramp Plus, so an engineering team can push open POs from any ERP into Ramp on a schedule, the way the native integrations do. It gives the most control and carries the most upkeep: the sync is one more system to maintain whenever Ramp's API or the ERP's PO schema changes.
Getting PO and invoice data out of PDFs. The CSV route assumes the PO data is already structured, and its upkeep sits in getting it that way, most of all where purchase orders, invoices or delivery notes exist only as PDFs. Automated PO and invoice extraction reads invoices, purchase orders and delivery notes from any ERP or supplier into one Excel, CSV or JSON layout: one row per invoice or per line item, with the PO numbers, quantities and amounts needed for matching and any other field the team names. A Structured Prompt fixes the exact column headers in the exact order, so the output can follow Ramp's import template, or serve as a review sheet for bills that never get a PO in Ramp. The same prompt serves every ERP.
Which workaround fits depends on who should own the PO list. If one person already knows every open PO, checking by hand costs least. If POs live in an ERP Ramp doesn't import from and someone can own a scheduled export, CSV import gives a real match without engineering. If purchasing can move into Ramp, Procurement removes the export altogether. The API suits teams that want the ERP to stay the source and have engineers to keep a sync running.
The decision logic: workaround, platform migration, or ERP swap
Three moves are open to a team whose ERP Ramp doesn't import POs from, from smallest to largest: a workaround inside Ramp, a move to another AP platform, or a new ERP.
Stay on Ramp and run a workaround. The right call when the team is on Ramp for more than PO matching: the card program, expense management, one view of spend across cards and bills. That consolidation is usually why the team chose Ramp, and one of the workarounds above usually costs less than giving it up.
Migrate to an AP platform that imports POs from your ERP. Worth weighing when PO bills are numerous enough that the workaround's upkeep outweighs switching, and AP rather than cards and spend is the main reason for the platform. PO support differs by ERP from one platform to the next, so check it for the team's own ERP:
- BILL syncs POs with Oracle NetSuite, Sage Intacct and QuickBooks Enterprise, according to its help centre page on working with purchase orders. Two-way match is the default, and three-way is available when syncing with NetSuite or QuickBooks Enterprise. It documents no PO sync with QuickBooks Online or Xero, so for teams on those it is no step up from Ramp. Line-item depth on the capture side differs too: see how Bill.com extracts invoice line items.
- Stampli describes bi-directional sync of live PO data with the ERP and line-level matching that flags the lines that don't match, and its PO matching page lists integrations including NetSuite, SAP S/4HANA, Microsoft Dynamics 365, Sage Intacct and QuickBooks. A team on another ERP checks Stampli's integration list for its own.
Each carries its own pricing, implementation effort and contract terms. The right one covers the team's ERP and delivers what it values beyond PO matching.
Swap the ERP. Reserved for the case where the ERP itself is the deeper problem and Ramp's missing PO import is one more signal among several: sync friction, reporting limits, a scalability ceiling. Don't swap ERPs to fix a Ramp gap; swap when an evaluation already under way points that direction, with PO matching as one input.
Across all three, the smallest move that solves the problem usually wins. Compare the workaround's per-bill cost over a realistic horizon with the cost of migrating, and let the arithmetic decide.
Ramp's "such as" leaves room for more ERPs, and Ramp has the funding to add them: it reached a $32 billion valuation in November 2025 on a $300 million round led by Lightspeed. AP platforms are changing by acquisition as well, as Brex Bill Pay's invoice capture after the Capital One deal shows. Check Ramp's help centre for your ERP before committing either way.