Back to Coupa in Google Sheets
SheetXAI logo
Coupa logo
Coupa · Google Sheets Guide

Bulk-Create Coupa Purchase Orders From a Sheet of Approved Requisitions

2026-05-13
4 min read
See the Excel version →

The Scenario

You are a procurement coordinator. It is 2:30 PM on a Wednesday and your manager just approved a batch of 50 requisitions that have been sitting in the queue since Monday.

Each requisition is in your Google Sheet, one row per request, with supplier ID in column A, item description in column B, quantity in column C, and unit price in column D. Coupa needs an external purchase order created for every single one before end of day, so the suppliers can receive and fulfill.

The slow version of this afternoon:

  • You open Coupa in one tab, your sheet in another
  • You create PO number one manually, copy the supplier ID, type the description, enter the quantity and price
  • You save, note the PO number, go back to the sheet, paste it in column E
  • You repeat this fifty times
  • By row eighteen your eyes are crossing and you have already made two typos you will not find until the vendors call
  • The last ten POs go out the next morning, and three suppliers miss their production window.

The fast version is one prompt.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent inside your spreadsheet that reads each row and creates the Coupa purchase orders for you, so you never have to open Coupa's UI once.

Open the SheetXAI sidebar and type:

Create a Coupa external purchase order for each row in this sheet using the supplier ID from column A, item description from column B, quantity from column C, and unit price from column D. Write the new Coupa PO number back into column E for each row. Flag any rows where the supplier ID was not found in Coupa.

SheetXAI reads all fifty rows, calls the Coupa API per requisition, creates each external PO, and writes the confirmation numbers back into column E. Rows where the supplier ID fails validation get a flag in column E instead of a PO number so you know exactly which ones need attention.

What You Get

Fifty Coupa external purchase orders created from a single prompt:

  • PO per row — each requisition becomes its own Coupa PO with the right supplier, item, quantity, and price
  • Confirmation written back — each new PO number lands in column E of the originating row
  • Exception flags — any row that failed gets marked so you can fix and rerun just those rows
  • Audit trail — your sheet becomes the record of what was created and when

The confirmation in column E matters. It means your sheet and Coupa are in sync from the moment the job finishes, not after a manual reconciliation step later in the week.

If some POs need a delivery date or a cost center added, tell SheetXAI: it reads those columns too and adds them to the PO creation call.

What If the Data Is Not Quite Ready

Requisition sheets come from many sources and are rarely clean. SheetXAI can normalize, filter, and create in the same prompt.

When supplier IDs are missing and only names are available

Your sheet has supplier names in column A but you need Coupa supplier IDs to create the POs. Looking them up manually is its own project.

For each row in this sheet, look up the Coupa supplier ID by the supplier name in column A. Write the supplier ID into a new column F. Then create a Coupa external PO for each row using that supplier ID, the item from column B, quantity from column C, and unit price from column D. Write the PO number into column G.

When some rows are not yet approved

Column E has status values: Approved, Pending, Rejected. You only want to create POs for the Approved rows.

Filter this sheet to rows where column E says Approved. For each of those rows, create a Coupa external PO using supplier ID from column A, item from column B, quantity from column C, and unit price from column D. Write the PO number into column F. Skip all other rows and leave column F blank.

When unit prices have inconsistent formatting

Some rows have prices as $1,200.00, others as 1200, others as 1,200. Coupa expects a clean number.

Normalize all values in column D to plain decimal numbers with no currency symbols or commas. Then create a Coupa external PO for each row using supplier ID from column A, item from column B, quantity from column C, and the normalized price from column D. Write each PO number into column E.

When you need to handle the full pipeline: filter, normalize, create, confirm

Your raw requisition export has status mixed in, prices formatted inconsistently, and a handful of rows with missing supplier IDs that need lookup first.

Filter to rows where column E says Approved. For rows where column A has a supplier name instead of a numeric ID, look up the Coupa supplier ID by name and write it into a new column F. Normalize all prices in column D to plain decimals. Then create a Coupa external PO for each filtered row using the supplier ID (column F if populated, else column A), item from column B, quantity from column C, and normalized price from column D. Write the PO number into column G and flag any failures in column H.

The pattern: instead of cleaning the sheet first, then filtering, then creating POs one by one, you describe the whole pipeline in one prompt. SheetXAI handles the conditional logic inline.

Try It

Get the 7-day free trial of SheetXAI and open any sheet with approved requisitions, then ask it to create the Coupa POs and write the confirmation numbers back. The Coupa integration is included in every SheetXAI plan. For related workflows, see how to bulk-create invoices against POs or the Coupa in Google Sheets overview.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more