Skip to content

Procure

Scheduled Oct 5, 2026

Requisitions, approvals and vendor onboarding you can audit.

Replaces

  • Coupa · Coupa Software Incorporated — no published list price
  • SAP Ariba · SAP SE — no published list price

Rented, per year

Not published

These vendors quote privately. We use your contract, not a guess.

Owned, per year

$5,760

AWS infrastructure only. Azure is $6,720.

Build

10 weeks

2 engineers. To parity on the ten core features, including the supplier portal, the delegation-of-authority engine and one ERP integration. Roughly three of the ten weeks are the ERP integration; a second ERP adds two to three weeks.

Difficulty

4/5

Substantial. Compliance or realtime depth involved.

Reference organisation: 400 employees, ~900 active suppliers, 6,000 requisitions per year, 3 legal entities, 2 ERP integrations, 7-year document retention, single region, prod + non-prod. 3-year Compute Savings Plan on Fargate / 3-year reservation on Container Apps. Aurora minimum 0.5 ACU with non-prod stopped outside business hours. Azure figure includes the Application Gateway fixed floor and a dedicated storage account for supplier uploads. Excludes sanctions and PEP screening data subscriptions, excludes any e-invoicing provider, and excludes ERP-side licence costs. These figures are infrastructure only and exclude the build.

What it is

Procure runs the front half of procure-to-pay: intake, requisitions, budget checks, multi-step approvals, supplier onboarding with due diligence, contract records, catalogues and purchase orders, with everything landing in your ERP through an integration you own. It is for organisations spending eight figures a year across a few hundred to a few thousand suppliers, where the approval matrix is genuinely complex, the audit trail is genuinely required, and the incumbent suite is priced by negotiation rather than by list.

Why this one stops making sense

  • Neither Coupa nor SAP publishes a price. You cannot benchmark a renewal against a number that does not exist, and the vendor knows exactly how many of your suppliers are already onboarded onto their network.
  • The approval matrix is the product, and it is entirely yours: your delegation of authority, your budget hierarchy, your segregation-of-duties rules. Encoding it in a vendor's rules engine makes it un-testable and un-portable.
  • Adoption is the whole game in procurement, and adoption is killed by seat pricing. Every occasional requester you leave outside the system is a maverick purchase you will find in the AP ledger later.
  • Spend data is the input to every negotiation you run. Holding it in a suite whose vendor also sells you the network is a conflict worth noticing.
  • The heavy engineering in procure-to-pay is not the workflow. It is the ERP integration and the supplier master data quality, and you have to do that work either way.

What ships

  • Intake form that routes any request — goods, services, software, contractor — to the right path
  • Requisition to purchase order with line-level cost centre, GL account and project coding
  • Approval engine driven by a version-controlled delegation-of-authority matrix with amount, category and entity dimensions
  • Budget check against commitments and actuals pulled from the ERP, blocking or warning by policy
  • Supplier onboarding: registration portal, bank detail verification, sanctions and PEP screening, tax form capture
  • Supplier risk record with tiering, insurance certificates, expiry tracking and re-review cadence
  • Contract register linked to suppliers and purchase orders, with renewal and auto-renewal alerting
  • Hosted catalogues and punch-out (cXML) to supplier-hosted catalogues
  • Three-way match preparation: PO, goods receipt and the invoice reference handed to accounts payable
  • Spend analytics over the full requisition and PO dataset, queryable directly in Postgres

Data model

RequisitionRequisitionLineApprovalPolicyApprovalStepBudgetCommitmentSupplierSupplierOnboardingContractCataloguePurchaseOrderGoodsReceiptCostCentreAuditEvent

Stack

frontend
Next.js 15 App Router + Tailwind + TanStack Query; a separate minimal supplier portal app
backend
NestJS on Node 22 REST, with the approval engine as a pure, separately testable module
database
PostgreSQL 16 with Row Level Security; the supplier portal uses a distinct schema and role
cache
Redis 7 for approval-graph resolution and catalogue search results
queue
BullMQ for ERP synchronisation, screening calls, document scanning and reminder digests
auth
OIDC against the customer IdP for employees; separate passwordless email identity for suppliers, never in the employee directory
search
PostgreSQL tsvector with pg_trgm for catalogue and supplier name matching
ai
Optional: classify free-text intake into the right category and suggest a commodity code, always as a suggestion an approver confirms

Parity, honestly

What we match, and what we do not.

The rows marked No are the important ones. If one of them is the reason you bought Coupa, keep buying it — and we will tell you that on the first call rather than the fifth month.

CapabilityCoupaOursNote
Intake, requisition and purchase order lifecycleYesYes
Multi-dimension approval matrixYesYesOurs is a versioned file with unit tests, so a change to the delegation of authority is reviewed like code.
Budget and commitment checkingYesYes
Supplier onboarding and due diligenceYesYesSanctions and PEP screening through the data provider you already contract with.
Contract register with renewal alertingYesYes
Punch-out catalogues (cXML)YesYescXML PunchOut is an open specification and we implement it directly.
Goods receipt and three-way match preparationYesYes
Unlimited requester seatsNoYesEveryone in the company can raise a request, which is the only way intake compliance ever works.
Spend analytics on your own dataPartialYesRead-only Postgres role for your BI tool, with no export limits.
A pre-registered supplier network with existing connectivityYesNoThis is the largest honest gap in Procure. SAP Business Network has millions of suppliers already registered, already transacting cXML and EDI, already holding catalogues. If a meaningful share of your spend is with suppliers who are already on Ariba and expect to stay there, that network effect is real and Procure does not reproduce it. We onboard your suppliers directly, which is work, and for the long tail it is often more work than it is worth.
Country-by-country e-invoicing and tax complianceYesNoMandatory e-invoicing regimes — Italy's SDI, India's IRN, Peppol across the EU, and the wave of clearance models still arriving — each have their own formats, certification and change cadence. Coupa and SAP maintain that as a product. Procure integrates with a specialist e-invoicing provider; it does not become one. If you transact in fifteen jurisdictions, budget for that provider separately.
Community spend benchmarking across the vendor's customer baseYesNoCoupa's benchmarks come from aggregating other customers' spend. We have no equivalent dataset and will not pretend otherwise.
Certified pre-built connectors to SAP ECC / S/4HANA and OracleYesPartialWe build the integration against your ERP's documented interfaces and hand over the tests. It is a real engineering effort — typically three of the ten build weeks — and it is not vendor-certified.
Sourcing events, RFx and reverse auctionsYesNoOut of scope. Procure covers intake through purchase order. Strategic sourcing is a separate product and a separate build.

Reference architecture

Built twice, on purpose.

Every application in Techtons ships with a production architecture for AWS and one for Azure, using the same diagram grammar so you can read them side by side. Your cloud, your account, your bill.

Amazon Web Services

Compute
ECS Fargate (api, supplier-portal, worker) behind separate ALBs on separate subnets
Data
Aurora Serverless v2 PostgreSQL
Storage and edge
S3 for supplier documents, insurance certificates, tax forms and contract PDFs
Identity
Cognito with two user pools — employees federated to the IdP, suppliers on their own pool
Observability
OpenTelemetry to CloudWatch; approval-latency and stuck-requisition alarms
Infrastructure as code
Terraform, with the supplier-facing stack as a separately deployable module

Services

ECS FargateALBAurora Serverless v2ElastiCache RedisS3GuardDuty Malware Protection for S3SQSEventBridgeSecrets ManagerKMSCognitoSESWAFCloudWatch

The decision worth arguing about

The non-obvious decision sits on the supplier document upload path, which is the one place in this system where unauthenticated external parties put arbitrary files into your infrastructure. Suppliers upload insurance certificates, W-9s and bank letters through a public portal, and those files then get opened by someone in finance. The choice is between GuardDuty Malware Protection for S3, which scans objects on upload and bills per gigabyte scanned plus a per-object charge, and running our own ClamAV scanner as a Fargate service triggered by an S3 event. We use GuardDuty, and the reasoning is not that it is cheaper — at the reference org's volume of a few thousand documents a year it costs single-digit dollars a month, so cost is not the deciding factor either way. It is that ClamAV's value is entirely in its signature freshness, which means a cron job pulling definitions, a container image rebuild cadence, and a silent failure mode where the scanner keeps returning clean because its database is four months stale and nobody noticed. That is a maintenance liability we would be handing to the customer at handover, on the security-critical path, forever. GuardDuty's trade-off is honest and worth stating: it is an AWS-managed detection engine we do not control, it adds a few seconds of latency before a document is marked usable, and it charges by volume — so an onboarding campaign that ingests ten thousand supplier documents in a week costs real money in a way a fixed-size ClamAV task would not. We accept that because the alternative failure mode is worse. The supplier portal itself runs as its own Fargate service on its own ALB with its own Cognito pool and no network route to internal services; it reaches the core only through EventBridge, which means a supplier's view of their own onboarding status lags the internal record by a second or two. We consider that an acceptable price for a hard boundary.

Microsoft Azure

Compute
Azure Container Apps, with the supplier portal in a separate Container Apps environment
Data
Azure Database for PostgreSQL Flexible Server
Storage and edge
Blob Storage, with supplier uploads landing in a dedicated storage account
Identity
Microsoft Entra ID for employees; Entra External ID for supplier identities
Observability
Azure Monitor and Application Insights
Infrastructure as code
Bicep, supplier stack as a separate deployment scope

Services

Container AppsApplication GatewayPostgreSQL Flexible ServerCache for RedisBlob StorageDefender for StorageService BusEvent GridKey VaultEntra IDEntra External IDCommunication ServicesLog Analytics

The decision worth arguing about

Azure's equivalent of the upload-scanning decision has a trap in it that AWS does not. Defender for Storage offers on-upload malware scanning per storage account, and by default it applies a monthly scanning cap — a configurable ceiling on gigabytes scanned per account per month, which exists to stop a runaway bill. The failure mode is the important part: when a storage account hits its cap, scanning stops for the rest of the month and uploads continue to succeed. Files land unscanned and nothing about the upload flow tells the user. If you onboard suppliers in campaigns rather than steadily — and everyone does, because onboarding follows procurement cycles — you can breach a default cap in a single week and spend three weeks accepting unscanned documents from external parties. So the Azure deployment does two things: it isolates supplier uploads into a dedicated storage account so the cap is not shared with anything else, and it wires the cap-reached signal from Defender into the same alert path as a production incident, with the application refusing to mark documents usable when the scan result is absent rather than defaulting to allow. The second Azure difference is identity. Suppliers must never appear in the corporate directory — a supplier contact with an object in your employee tenant is a governance problem that surfaces in every access review afterwards — so we use Entra External ID as a genuinely separate identity boundary, which is cleaner than the two-Cognito-pool arrangement on AWS but requires its own tenant configuration and its own branded sign-in experience.

Sources

Every price on this page, with the page we read it from and the date we read it.

ProductPlanList priceCheckedSource
CoupaNot published2026-09-05www.coupa.com/pricing/

Coupa publishes no list price. Its pricing page carries no rate card, no tiers and no numbers — only product content and a route to sales. Every Coupa figure in circulation is a leaked contract or an analyst estimate, so we publish none.

SAP AribaNot published2026-09-05www.sap.com/products/spend-management/ariba-

SAP publishes no list price for Ariba or SAP Business Network. The product page describes a free standard supplier account and gives no pricing for buyer-side subscriptions or for the supplier fees charged above transaction thresholds. Pricing is quoted per contract.

Should you still be paying for Coupa?

Two weeks, fixed price. We audit what you actually use, map it against Procure, cost the replacement on your own AWS or Azure account, and give you a delivery plan. If the honest answer is to keep the licence, that is what the report will say.