Lightweight purchase request and order tracker for Coupa

By General Input

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

Integrations

  • Coupa
  • Slack

Type

App

Categories

  • Operations
  • Finance

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.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsWin back no-show and cancelled appointments every morningLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollmentsMailjet email delivery lookup console for support teamsCatch feature flags that never got switched on in productionKajabi customer support console for member access fixes