Purchase order bulk import

Overview

Purchase order bulk import lets admins bring existing purchase orders (POs) from other systems into Ramp — without engineering support. If you have active POs representing committed spend in a legacy system, this import flow helps you import them so you can manage everything in one place from day one.

The import flow walks you through downloading a CSV template, filling in your PO data, uploading and validating the file, and importing your purchase orders into Ramp.

This feature requires the procurement add-on.

Before you begin

How it works

Step 1 — Open the import drawer

Go to Manage spend > Purchase orders > Settings > Import.

Purchase order settings Importing tab with CSV template download and upload options

Step 2 — Download the import template

Download the CSV template. The template contains required, optional, and accounting fields. Each row in the CSV represents a line item, not a full PO. Rows with the same PO number are automatically grouped into a single purchase order.

CSV import template open in Excel showing PO Number, Vendor Name, and other column headers

Required fields

These fields must be filled in for every row.

FieldDescription
Owner EmailEmail address of the PO owner. Determines who the PO is attributed to in Ramp.
CurrencyCurrency code for the PO and any linked bills (e.g., "USD").
Subsidiary NameName of the business entity (legal entity or subsidiary) in Ramp. Used to look up and link the correct entity to the PO.
Unit PricePer-unit price for the line item. Ramp uses this with Unit Quantity to calculate the line item amount.
Unit QuantityNumber of units for the line item. Ramp uses this with Unit Price to calculate the line item amount.

Optional fields

Include these fields if the data is available. If left blank, defaults are applied where noted.

FieldDefaultDescription
Vendor NameName of the vendor. If provided, must match an existing vendor in Ramp. The vendor is linked to the PO after import. If left blank, the PO is created without a linked vendor. Required if Paid Amount is provided — Ramp creates an internal bill for paid line items, and bills require a vendor.
PO NumberAuto-generated by RampEnter the full PO number with any prefix (e.g., "AMZ-001"). Rows with the same PO number are combined into a single PO. Leave blank to let Ramp generate it. Enter just a prefix (e.g., "AMZ-") to auto-generate with a custom prefix.
Paid Amount0If greater than zero, creates a linked bill for the PO after import.
Created AtCurrent timeSets the PO creation timestamp. Also sets the issued date and due date on any linked bills.
Start DateCreated At valueSets the PO spend start date.
End DateSets the PO spend end date.
Payment TermsNet payment terms — the number of days within which the next payment is due.
DescriptionSets the PO description.
Request Coordinator EmailEmail address of the request coordinator for the PO.

Accounting fields

These fields are pulled from your connected accounting provider (e.g., NetSuite, QuickBooks, Sage Intacct). The specific fields available depend on your provider and configuration. The template includes both PO-level and line-item-level tracking category columns — for NetSuite, this can be up to 18 columns. Free-text tracking category values are supported.

Field prefixDescription
Accounting \*Sets accounting dimensions at the line item level. Use when categories vary across line items (e.g., Accounting Department = Engineering on one line, Accounting Department = Marketing on another).
PO Accounting \*Sets accounting dimensions at the PO header level. Use when the same category applies to the entire PO rather than varying by line item.

Step 3 — Fill in the template

Open the CSV template and enter your PO data. Keep the column headers exactly as they appear in the template — the system uses exact field name matching.

Note: Each row in the CSV represents a single line item, not a full PO. If you have an existing PO with multiple line items — for example, a PO with 12 lines — add each line as its own row in the CSV using the same PO Number. Ramp groups all rows with the same PO number into a single purchase order. Each row should include its own Unit Price, Unit Quantity, and any line-item-level accounting fields. Ramp calculates the line item amount from those values, so you do not need to enter a separate Amount. Add Description if you want it included on the line item. Rows sharing the same PO Number cannot have conflicting header-level values (e.g., the same PO number with two different vendors). See Step 4 below for what Ramp validates upon upload.

Save the file when you're done.

Step 4 — Upload and validate your file

Upload your completed CSV into the import drawer. Ramp validates your data row by row and surfaces any errors before import. You can fix errors directly in the validation interface without re-uploading, or export the errors to edit offline.

What Ramp validates

Step 5 — Review and confirm the import

Once validation passes, confirm the import. Each import supports up to 5,000 line items. You'll see real-time progress as your POs are imported. When the import completes, Ramp shows a summary:

If some POs fail, you can download a CSV of the failed rows, fix them, and re-import.

Purchase orders list after import showing imported POs with statuses and billing progress

After import

Imported POs appear in your purchase orders list alongside Ramp-created POs. They have a few differences from POs created through Ramp's request flow:

To configure change order approval settings for imported POs, click the upload button on the Purchase orders page to open the import pane. The "Change order approvals" section appears after your first successful import.

Configure invoice matching for imported POs

After your first successful import, the import pane also displays an Invoice matching setting. This controls whether imported POs use 2-way match or 3-way match for invoice verification:

To change the invoice matching mode, click the upload button on the Purchase orders page to open the import pane, then expand the Invoice matching section and select your preferred option.

Note: Changing this setting applies to all imported POs for your business, including POs from previous imports — it is not limited to future imports. The Invoice matching setting does not appear until you have completed at least one bulk import.

Use cases and examples

Migrating from a legacy procurement system

Your company is switching from a legacy procurement tool to Ramp. You have 200 open POs representing committed spend across multiple vendors. Rather than recreating each PO manually, you export your PO data from your legacy system, map it into the Ramp CSV template, and import all 200 POs in one batch. Your team can track committed spend from day one.

Consolidating POs after an acquisition

After acquiring another company, you need to bring their existing POs under your Ramp account. You export their PO data, fill in the CSV template, and import the POs into Ramp. Imported POs are labeled "Imported purchase order" so you can clearly distinguish them from ones your team created in Ramp.

Tracking committed spend during onboarding

You're onboarding to Ramp Procurement and want your leadership team to see a complete picture of committed spend immediately — not just new POs created going forward. You import your existing POs so dashboards and reports reflect your full spend obligations from the start.

Best practices and tips

Frequently asked questions

Can I import POs that are still in draft or pending approval?

No. Only stable, committed POs can be imported — those that have been issued or approved with a complete receiving status (open, fully received, or closed). Draft and pending-approval POs are not supported.

What happens if a PO number in my CSV already exists in Ramp?

The system flags it as a duplicate and blocks that PO from import. You can either remove the duplicate row from your CSV or change the PO number, then re-upload.

Can I import a PO without a vendor?

Yes. The Vendor Name field is optional. If you leave it blank, the PO is created without a linked vendor. You can add a vendor to the PO later in Ramp. However, if a line item has a Paid Amount, a Vendor Name is required for that line item because Ramp creates an internal bill for paid amounts, and bills require a vendor.

What if a vendor in my CSV doesn't exist in Ramp?

If you provide a Vendor Name that does not match an existing vendor in Ramp, you'll see a validation error instructing you to create the vendor first. Add the vendor in Ramp, then re-upload or fix the value in the validation interface. If the line item does not have a Paid Amount, you can also clear the vendor field — the vendor column is optional for unpaid line items. For line items with a Paid Amount, you must fix the vendor name to match an existing vendor in Ramp.

Can I import POs with different prefixes in one upload?

Yes. A single CSV can contain POs with different prefixes. Ramp groups rows by PO number, so each unique PO number — regardless of prefix — becomes its own purchase order.

Can I edit imported POs after import?

Yes, with some limitations. You can manage imported POs in most of the same ways as standard POs — for example, uploading invoices, matching bills, and tracking spend. To configure change order approval settings for imported POs, go to Manage spend > Purchase orders > Settings > Import. However, you cannot change the Spend Program on an imported PO. Imported POs are permanently assigned to the "Imported Purchase Order" program.

Can I change the Spend Program on an imported PO?

No. Imported POs are permanently assigned to the "Imported Purchase Order" Spend Program that is auto-created for your business. There is no way to reassign an imported PO to a different procurement Spend Program after import. If you need POs under a specific Spend Program, create them through that program's intake form instead of importing them.

Do I need engineering support to use this feature?

No. The bulk import flow is fully self-service for admins. No engineering involvement is required.

What's the maximum number of line items I can import at once?

Each import supports up to 5,000 line items. If you have more, split your data across multiple CSV files and import them separately.

Can I run multiple imports over time?

Yes. Each new import adds to your existing imported POs. You don't need to re-import everything in one batch.

Why don't I see a "View request" or "Request again" option on my imported POs?

Imported POs were not created through Ramp's request flow, so request-related actions are not available. You can still create change orders and manage the PO as usual.

What is the Invoice matching setting?

After your first successful bulk import, an Invoice matching section appears in the import pane. You can choose between 2-way match (bills matched to POs only) and 3-way match (bills matched to POs and item receipts). To access it, click the upload button on the Purchase orders page. This setting does not appear until you have completed at least one import.

Does changing the invoice matching setting affect previously imported POs?

Yes. Changing between 2-way match and 3-way match applies to all imported POs for your business, including POs from previous imports. The change is not limited to future imports.

Why don't I see the Invoice matching setting?

The Invoice matching setting only appears after you have completed at least one successful bulk import, which creates the auto-generated "Imported Purchase Order" Spend Program. If you have not yet imported any POs, complete your first import and the setting will appear.