# Lightweight purchase request and order tracker for Coupa

> Let employees raise a purchase request in plain English and follow it from approval to order to invoice without ever learning Coupa.

- Workflow type: app
- Services: Coupa, Slack
- Categories: Operations, Finance
- Published: 2026-08-17

## What it does

- Gives your team a simple request form: search the approved catalogue, or just describe what you need with a rough cost, then add quantity, need-by date, cost centre and a reason.
- Sends every request straight into your normal approval chain, so it lands with the right approver instead of sitting as an unfinished draft nobody sees.
- Gives each person a private tracker that follows their request past approval into the resulting order and any invoice, described in plain English rather than system jargon.
- Posts a note to your procurement channel in Slack the moment a request is submitted, showing who asked, how much and when they need it.

## What you'll need

- A Coupa account with permission to raise purchase requests, connected by each person who uses the app
- A Slack workspace and a channel your procurement team actually watches
- Your list of cost centre codes, so requesters pick the right one
- An approved catalogue in Coupa if you want people to order from it, though free-text requests work without one

## Prompt

Build me a lightweight purchase request app for regular employees who find the full Coupa interface heavy. It is a simpler front door to the same system: people raise requests here, and those requests go into Coupa's normal approval chain. There are two views, a request form and a personal tracker.

The first view is the request form. The requester starts by searching the approved catalogue using the Coupa List Items operation, with Get Item to pull the full detail of whatever they select, so they can see the item name, supplier and price before choosing it. If nothing in the catalogue matches, they can fall back to a free-text description of what they need plus an estimated amount. Either way they then add quantity, a need-by date, a cost centre and a short business justification.

The form must block submission when the cost centre or the business justification is missing, rather than creating an incomplete requisition in Coupa. Validate before anything is written: show the missing fields inline on the form, keep the submit button disabled until they are filled, and re-check in the handler so a bad payload can never reach Coupa.

On submit, the handler calls Create Requisition and then Submit Requisition for Approval, so the request enters the normal Coupa approval chain instead of sitting as a draft the requester has to go and find later. Treat the submit step as part of the same action, and if the create succeeds but the submit fails, surface that clearly and let the user retry the submit rather than creating a second requisition. Coupa requisition create and update bodies use hyphenated attribute names. Some write endpoints also accept an on-behalf-of parameter (x-coupa-api-user-login, api_user_login or on_behalf_of) to attribute the requisition to the actual requester rather than the integration user, which matters here because this is a per-user app. There is also an Update and Submit for Approval operation if a save-then-submit flow works better.

After a successful submission, a handler posts a Slack message to the procurement channel using Send a Message, including the requester, the amount and the need-by date, so procurement sees new demand arriving without anyone having to tell them.

The second view is a personal tracker built on List My Requisitions. It shows each of my own requests in plain English and follows each one past approval into the resulting order using List Purchase Orders, and then into billing using List Invoices, matching orders back to the requisition they came from and invoices back to their order. The point is that a requester can see where their request has got to without asking procurement.

Keep the status language free of procurement jargon. A requester should read things like "waiting on your manager", "approved, being ordered", "ordered, arriving soon" or "invoiced", not raw Coupa status codes. Show the need-by date next to the current status so someone can tell at a glance whether a request is at risk of being late, and let them open a request to see the item, amount, cost centre and justification they originally submitted.

The app is per-user: everyone connects their own Coupa account and only ever sees their own requests, never the whole company's. One note on reading data: Coupa list endpoints return at most 50 records per call and use offset-based pagination, so page through with offset when a requester has a long history, and filter server-side rather than pulling everything and filtering in the browser.

## How to customize

- Change which Slack channel gets the heads-up and what the message includes, for example adding the cost centre or the item name.
- Adjust which fields are compulsory, such as only requiring a written justification above a certain amount.
- Reword the status labels so they match the language your company already uses for approvals and deliveries.

## FAQ

### Does this replace Coupa?

No. It is a simpler front door for people who only buy something occasionally. Requests go into the same system and follow the same rules, and your procurement team carries on working in Coupa as normal.

### Will requests still follow our normal approval rules?

Yes. The app submits each request into your existing approval chain, so the same approvers, thresholds and policies apply. Nothing skips a step or gets fast-tracked.

### Can people see each other's requests?

No. Everyone connects their own account and the tracker only ever shows that person's own requests, so there is no visibility into colleagues' purchases or budgets.

### What if the thing I need is not in the catalogue?

You can describe it in your own words and give an estimated amount instead. The request still goes through the same approval process, and procurement can sort out the supplier details later.

### How will I know where my request has got to?

The tracker shows each request in plain English, following it from waiting on your manager, through to ordered and arriving, and finally to invoiced. That means no chasing procurement for a status update.

### What stops someone submitting an incomplete request?

The form will not let a request through without a cost centre and a business justification. It flags what is missing before anything is created, so half-finished requests never reach your approvers.

Use this prompt in General Input: https://www.generalinput.com/prompts/lightweight-purchase-request-and-order-tracker-for-coupa