§1 · The B2B Procurement Thesis
Why generic shopping-agent assumptions break in wholesale commerce.
B2B commerce differs from retail not cosmetically but architecturally — all the way down into data schema, authentication, document format, and payment mechanics. Every assumption baked into a consumer shopping agent is wrong in the B2B context. Here is where each assumption breaks and what replaces it.
Price is quoted, not listed
A retail price is a single number visible to any visitor. A B2B price is the output of a negotiation: contract-specific pricing tied to a buyer's account, volume breaks triggered by order quantity, and spot pricing that shifts with commodity costs or freight rates. The same SKU may carry five different prices across five buyer relationships on the same day. An agent that retrieves a price from a public product page and submits a PO based on that number will, at best, receive a corrected invoice; at worst, the PO will be rejected entirely.
The correct data model at Layer 1 (Structured Data) therefore requires: quoted unit price (not MSRP), price-break tier arrays keyed to order quantity, minimum order quantity (MOQ), contract number or buyer account ID, unit of measure, lead time, and applicable regulatory flags.
Terms are net-30, net-60, or custom — not due at checkout
Consumer checkouts expect payment at the moment of purchase. B2B buyers expect an invoice payable 30, 60, or 90 days after the invoice date. The buyer carries open payables on their accounts payable ledger; the seller carries open receivables on their accounts receivable ledger. An AI agent that attempts to charge a stored card at order-submit will be rejected by the buyer's ERP. Payment terms also encode early-payment discounts: a term like 2/10 Net 30 means the buyer receives a 2% discount if payment arrives within 10 days; otherwise the full amount is due in 30 days. Agents operating on the CFO side must evaluate whether the early-payment savings exceed the cost of capital before scheduling payment timing.
Purchases require multi-level approval
Most enterprise procurement policies route purchase requests through a tiered approval chain: department head approves fit and budget, finance approves cash availability, and procurement (or legal) approves vendor qualification and contract terms. Spend thresholds trigger additional tiers — a $500 purchase may auto-approve, a $5,000 purchase may need a manager, a $50,000 purchase may require VP and CFO sign-off. The buyer-agent is never the final authority. It submits, recommends, and escalates — it does not unilaterally commit funds. Any UCP implementation for B2B must model this approval chain explicitly.
The buyer is a procurement agent acting under corporate policy
The most important reframe: the "buyer" in B2B is not a human with a credit card browsing for the best price. The buyer is an agent — human or AI — operating under a corporate spending policy that defines approved vendor lists, spend category budgets, payment term constraints, required compliance certifications (SOC 2, ISO 27001), and sometimes preferred procurement networks (Ariba, Coupa). The AI procurement agent's job is to enforce that policy mechanically, not to optimize for lowest sticker price alone.
Layer 1 · Data
Quoted Pricing Schema
Contract price + price-break tiers + MOQ + payment terms + contract number. MSRP alone disqualifies the record for agent consumption.
Layer 2 · API
Procurement Platform APIs
SAP Ariba Network, Coupa, Oracle Procurement Cloud, JAGGAER — not generic product catalog APIs. Each platform has its own auth, document format, and fee model.
Layer 3 · MCP
Procurement Tool Set
Six merchant-side tools + five CFO-side tools. get_quote, submit_po, approve_purchase, escalate_to_human — not add_to_cart or checkout.
Layer 4 · UCP
Multi-Step PO Workflow
Requisition → approval chain → EDI 850 → EDI 855 ACK → goods receipt → EDI 810 invoice → 3-way match → EDI 820 payment. Eight steps, not one.
§2 · The Buyer-Agent Persona
The CFO-agent and procurement-agent: two distinct authority levels.
The AgentMall roadmap names the procurement agent as one of the highest-value agent personas in B2B commerce — higher-value than a consumer shopping agent because transaction sizes are larger, policy constraints are explicit, and the workflow is well-documented in existing procurement standards. There are two distinct personas, and they operate at different authority levels with different tool sets.
What the procurement agent does (7-step flow)
- Receives a buying requirement from a human or a triggering system event — e.g., "We need 500 units of industrial solvent SKU #A-4412 for Q3 manufacturing, net-60 terms preferred, SOC 2-compliant supplier required."
- Queries the approved vendor list via the buyer's ERP or procurement platform to find vendors approved for the relevant spend category.
- Fans out RFQs (Requests for Quote) to N qualified suppliers via their MCP servers or procurement platform APIs — in parallel.
- Aggregates and scores responses against policy: unit price, lead time, payment terms offered, compliance certifications on file, and supplier risk score.
- Recommends one vendor (or a ranked short-list) to the human procurement manager, with a structured justification for each scoring dimension.
- Executes the PO once approved, either via the procurement platform or direct EDI 850 transmission.
- Tracks the order through EDI 855 acknowledgment, goods receipt, and EDI 810 invoice — reconciling against the PO before approving EDI 820 payment.
What the CFO-agent does (4-tool set)
The CFO-agent operates at a higher level of abstraction, with delegated authority to set and enforce spending policy. It consumes the procurement agent's recommendations and acts as the policy enforcement layer:
| MCP Tool | Trigger | Returns |
approve_purchase | Procurement agent submits recommendation within delegated authority | Approval status, approved amount, PO number assigned |
set_spending_cap | Budget cycle updates or mid-cycle policy changes | Cap ID, effective date, current utilization |
request_quote_comparison | New vendor evaluation or category refresh | RFQ ID, vendors invited, response deadline |
escalate_to_human | Purchase exceeds delegated authority or violates policy constraint | Ticket ID, assigned human, escalation reason and context packet |
Both personas require a CFO-side MCP server (Layer 3) with the tools above, distinct from the merchant-side MCP server. See MCP server construction patterns for tool schema definitions and hosting guidance.
Key Distinction
The procurement agent is a policy enforcer, not a price optimizer. It scores vendors against a weighted matrix that includes compliance certifications, payment terms, and supplier risk — not just unit price. The lowest bid that lacks SOC 2 Type II should lose to a higher bid that has it, if the procurement policy requires it. Build this scoring logic explicitly into the agent's recommendation step.
§3 · Procurement Platform Landscape
SAP Ariba, Coupa, Oracle, JAGGAER, and Tradeshift — platform-by-platform.
The five major enterprise procurement networks and platforms a B2B wholesale supplier or distributor must understand are SAP Ariba Network (now SAP Business Network), Coupa, Oracle Procurement Cloud, JAGGAER, and Tradeshift. SAP Concur overlaps on travel and expense but shares API credentials with Ariba and is included here for completeness. All pricing figures below are volatile — re-verify before launch.
| Platform | Role | API Auth & Base URL | Published Pricing (re-verify before launch) |
| SAP Ariba / SAP Business Network |
Largest B2B procurement network; connects SAP S/4HANA buyers to global suppliers |
OAuth 2.0 via https://api.ariba.com/v2/oauth/token; base URL https://openapi.ariba.com/; grant type openapi_2lo |
Supplier: Free standard account; paid tiers triggered at ≥5 docs AND >$50,000 USD with one buyer in 12 months. Annual subscription: Bronze $50/yr (5–24 docs), Silver $750/yr (25–99 docs or EDI/cXML usage), Gold $2,250/yr (100–499 docs), Platinum $5,500/yr (500+ docs). Transaction fee: 0.155% of annual volume; capped at $20,000 USD per buyer relationship (North America). Buyer: enterprise license, custom (re-verify) |
| Coupa |
Business Spend Management (BSM) platform — procurement, invoicing, expenses, sourcing, contracts |
Base URL https://{instance}.coupahost.com/api; auth: X-COUPA-API-KEY header (40-char alphanumeric key) or OAuth 2.0; also supports cXML OrderRequest |
Enterprise SaaS; not publicly listed. Market data suggests $100K–$500K+ annually for enterprise (re-verify before launch) |
| Oracle Procurement Cloud |
ERP-embedded procurement; tight integration with Oracle Financials, SCM, and HCM |
Base https://{hostname}/fscmRestApi/resources/11.13.18.05/; key paths: /purchaseOrders, /purchaseRequisitions, /supplierNegotiations, /purchaseAgreements, /suppliers; OAuth 2.0 |
Per-user pricing; Sourcing module ~$650/user/month, Procurement Contracts ~$405/user/month (re-verify before launch) |
| JAGGAER ONE |
Source-to-pay; strong in manufacturing, higher education, and public sector; 40+ ERP integrations |
Public REST APIs (bidirectional); integrates with SAP, Oracle, Workday, and Microsoft Dynamics; specific endpoint documentation requires credentialed partner access |
Custom enterprise pricing; not publicly listed (re-verify before launch) |
| Tradeshift |
B2B e-invoicing and supply chain finance; strong in e-invoicing compliance (France mandate) |
REST API; ERP integration maintenance package $149/quarter |
Seller: Free ≤30 invoices/quarter; Tier 2 (31–300): $0.80/transaction; Tier 3 (301–3,000): $0.60/transaction; Tier 4 (3,001–15,000): $0.30/transaction; Tier 5 (15,001+): custom. Invoices and credit notes only counted; POs excluded. Billed quarterly in arrears (re-verify before launch) |
| SAP Concur |
Travel and expense management; limited procure-to-pay overlap via Purchase Request integration with Ariba |
Concur API (REST); connects to SAP Business Network for purchase requests |
Per-user SaaS; not publicly listed (re-verify before launch) |
Ariba Network enrollment details for agent builders
Ariba's supplier fee model has a meaningful two-part trigger: at least 5 documents transacted and transaction volume exceeding $50,000 USD in at least one buyer relationship in a 12-month period. Suppliers below either threshold remain on the free Standard account. Suppliers using EDI or cXML integration are automatically assigned to Silver level ($750/yr) regardless of document count — plan accordingly before choosing your integration method. The 0.155% transaction fee is capped per buyer relationship at $20,000 USD/year in North America, which protects high-volume suppliers.
The Ariba OAuth flow uses client credentials:
curl -L -X POST 'https://api.ariba.com/v2/oauth/token?grant_type=openapi_2lo' \
-H 'Authorization: Basic {Base64(client_id:client_secret)}' \
-H 'Content-Type: application/x-www-form-urlencoded'
API groups available after registration at https://developer.ariba.com/api/: Core Procurement REST APIs, Strategic Sourcing REST API, Strategic Contracts REST API, Invoicing, Catalog Management REST API, Supplier Lifecycle & Performance, and SAP Business Network REST APIs (order/invoice exchange). Each API group has its own Swagger spec accessible after enrollment.
Key Coupa integration notes
Coupa supports three integration patterns for procurement agents: the Core REST API (JSON or XML, X-COUPA-API-KEY header), OAuth 2.0 (for agents needing per-user token delegation), and cXML OrderRequest (for EDI-style PO receipt). The REST API exposes: GET /api/purchase_orders, POST /api/purchase_orders, PUT /api/purchase_orders/{id}/issue, GET/POST /api/requisitions, GET/POST /api/invoices, GET /api/suppliers. The issue action on a PO is a distinct API call from creation — a common integration gap.
§4 · EDI Fundamentals for Agent Procurement
EDI is the execution rail — not the decision layer.
Electronic Data Interchange (EDI) is the standardized document format that fires once the procurement agent has made its decision. The agent decides; EDI transmits the paperwork. This boundary is architecturally critical: EDI segment logic must not leak into agent decision code, and agent ambiguity must not leak into what should be deterministic document generation. Keep the layers clean.
Architecture Rule
EDI is the execution rail. The procurement agent decides which vendor, which quantity, and which terms. EDI 850/855/810/820 transmits that decision as structured documents. If you find yourself writing EDI segment logic inside your agent's reasoning loop, the architecture boundary has broken down — refactor.
EDI document types in the agent procurement flow
| Code | Name | Direction | Role in Agent Flow | Key Segments |
| EDI 850 |
Purchase Order |
Buyer → Seller |
The commitment document. Buyer-agent (or its ERP) fires the 850 after PO approval. Contains item numbers, quantities, prices, payment terms, ship-to address, and requested delivery date. |
ISA, GS, ST, BEG, CUR, REF, ITD (payment terms), N1 (parties), PO1 (line items), PID, CTT, AMT, SE |
| EDI 855 |
Purchase Order Acknowledgment |
Seller → Buyer |
Seller-agent confirms receipt. Can acknowledge as accepted (AC), rejected (RJ), or accepted with changes. ACK segment per line: IA = Item Accepted, IR = Item Rejected, IC = Item Accepted/Changes Made, IQ = Item Accepted/Quantity Changed. |
ISA, GS, ST, BAK (ack type: AC/RJ), PO1, ACK, CTT, SE |
| EDI 810 |
Invoice |
Seller → Buyer |
Seller-agent bills the buyer. References the original PO number. Triggers accounts payable 3-way match (PO + goods receipt + invoice). |
ISA, GS, ST, BIG (invoice header), N1 (parties), IT1 (invoice line items), TDS (total amount), SE |
| EDI 820 |
Payment Order / Remittance Advice |
Buyer → Seller |
Buyer-agent confirms payment. Sent with or alongside an EFT/ACH transfer. Closes the accounts receivable cycle on the seller side. |
ISA, GS, ST, BPR (payment amount, method, bank info), TRN (trace number), N1 (payer/payee), RMR (remittance per invoice), DTM (payment date), SE |
Complete EDI 850 example — annotated
The following is a complete, non-truncated ANSI X12 EDI 850 Purchase Order. Delimiters: * (element separator), ~ (segment terminator), > (sub-element separator). This is the document the buyer-agent fires after PO approval — see the full 9-step worked example in §8 for context.
ISA*00* *00* *ZZ*BUYERCO *ZZ*SUPPLIERCO *240801*0900*>*00401*000000042*0*P*>~
GS*PO*BUYERCO*SUPPLIERCO*20240801*0900*42*X*004010~
ST*850*0042~
BEG*00*NE*PO-2024-00042**20240801~
CUR*BY*USD~
REF*IA*CONTRACT-2024-001~
PER*BD*Jane Procurement*TE*555-800-1212*EM*jane.procurement@buyerco.com~
TAX*0*VC*****22*ST~
ITD*01*3*2*10*30***NET 30~
DTM*002*20240831~
N1*BY*BuyerCo Inc.*ZZ*BCOINC~
N2*Accounts Payable Dept~
N3*100 Industrial Blvd~
N4*Chicago*IL*60601*US~
N1*ST*BuyerCo Warehouse 3*ZZ*BCOWH3~
N3*800 Dock Road~
N4*Gary*IN*46401*US~
PO1*1*500*EA*24.50*CP*VC*SKU-A4412*UP*012345678901~
PID*F****Industrial Solvent Grade A 1L~
SAC*A*I210****25000**50*50*5~
PO1*2*100*EA*89.00*CP*VC*SKU-B7710*UP*098765432109~
PID*F****Safety Neutralizer Kit~
CTT*2~
AMT*TT*21150.00~
SE*24*0042~
GE*1*42~
IEA*1*000000042~
Segment annotations
ISA — Interchange Control Header. Sender ID (BUYERCO), receiver ID (SUPPLIERCO), date/time, interchange control number (000000042).
GS — Functional Group Header. PO = Purchase Order functional group.
ST*850*0042 — Transaction Set Header. 850 identifies this as a Purchase Order. Control number 0042.
BEG*00*NE*PO-2024-00042 — Beginning segment. NE = New PO. PO number = PO-2024-00042.
CUR*BY*USD — Currency: buyer pays in USD.
REF*IA*CONTRACT-2024-001 — Reference: links to master contract CONTRACT-2024-001.
PER*BD — Buyer contact (department buyer) with phone and email.
ITD*01*3*2*10*30 — Terms of sale: type 01 (Basic), net days 30, early discount 2% if paid within 10 days. Human-readable: "2/10 Net 30".
DTM*002*20240831 — Requested delivery date: August 31, 2024.
N1*BY — Buyer name loop. ZZ = mutually defined qualifier.
N1*ST — Ship-to name loop. Warehouse 3 in Gary, IN.
PO1*1*500*EA*24.50 — Line item 1: 500 each at $24.50/EA. Buyer's vendor catalog ID SKU-A4412, UPC 012345678901.
PID*F — Free-form product description: "Industrial Solvent Grade A 1L".
SAC*A*I210 — Service, Promotion, Allowance, Charge. Volume discount applied.
PO1*2*100*EA*89.00 — Line item 2: 100 each at $89.00/EA.
CTT*2 — Transaction Totals: 2 line items.
AMT*TT*21150.00 — Total monetary amount: $21,150.00 (500×$24.50 + 100×$89.00 = $12,250 + $8,900 = $21,150).
SE*24*0042 — Transaction Set Trailer: 24 segments included.
GE*1*42 — Functional Group Trailer.
IEA*1*000000042 — Interchange Trailer.
Agent Commerce · Operator Briefings
Get the B2B agent-readiness checklist.
Layer 1 data spec, MCP tool schemas, EDI sandbox setup guide, and credit-establishment timeline — delivered to your inbox.
§5 · The 4-Layer Model × B2B Procurement
How each layer changes when the buyer is a procurement agent.
The AgentMall 4-Layer Agent-Ready Model is universal. What B2B wholesale and procurement changes is the implementation of each layer, not the model itself. Here is precisely where and how each layer differs in the B2B context.
| Layer | Consumer Default | B2B Procurement Implementation |
| Layer 1 · Structured Data |
SKU, name, MSRP, image, availability |
SKU; quoted price per buyer account (contract-specific); price-break tier array (e.g., 1–99 @ $24.50, 100–499 @ $22.00, 500+ @ $19.50); MOQ; lead time (business days); payment terms (Net-30/Net-60/2/10 Net-30); contract number; UNSPSC commodity code; UOM (each/case/pallet); hazmat or regulatory flags |
| Layer 2 · API Endpoint |
Product catalog API, cart API, checkout API |
SAP S/4HANA OData V4 (API_PURCHASEORDER_2, API_INFORECORD_PROCESS_SRV, API_RFQ_PROCESS_SRV); Oracle Procurement Cloud REST (/purchaseOrders, /supplierNegotiations, /purchaseAgreements); NetSuite (POST /purchaseOrder); D365 Business Central (/purchaseOrders); Coupa REST (/api/purchase_orders); Ariba Network REST API |
| Layer 3 · MCP Tool Description |
search_products, add_to_cart, checkout |
Merchant-side: get_quote(buyer_id, sku_list, quantities, requested_terms), check_credit_terms(buyer_id), get_lead_time(sku, quantity, ship_to_zip), submit_po(quote_id, buyer_po_number, ship_to_address, requested_delivery_date), check_po_status(seller_order_id), submit_invoice(seller_order_id, invoice_number, line_items, due_date)
CFO-side: approve_purchase(requisition_id, approver_id, notes), set_spending_cap(category, department, amount, period), request_quote_comparison(requirement_spec, approved_vendor_list, scoring_weights), get_policy_constraints(category, spend_amount), escalate_to_human(context, reason, urgency) |
| Layer 4 · UCP Compatibility |
Single-step checkout with stored payment method; immediate charge |
Multi-step: (1) buyer-agent submits requisition → (2) approval chain executes → (3) EDI 850 PO issued → (4) EDI 855 ACK received → (5) goods ship; receipt confirmed → (6) EDI 810 invoice submitted → (7) 3-way match (PO + receipt + invoice) → (8) EDI 820 payment fires with ACH/EFT. Buyer-agent commits the organization but cannot pay unilaterally — payment requires an approved PO and, for large transactions, human sign-off. |
Layer 2 API reference — key endpoint paths
SAP S/4HANA Cloud (sourcing and procurement)
| API Service | Protocol | Primary Use |
API_PURCHASEORDER_2 | OData V4 | Create, read, update purchase orders |
API_INFORECORD_PROCESS_SRV | OData V2 | Contract-specific pricing, MOQ, lead time per vendor-material combination |
API_RFQ_PROCESS_SRV | OData V2 | Create and manage RFQs (Requests for Quotation) |
API_QTN_PROCESS | OData | Supplier quotation management |
API_SUPPLIERINVOICE_PROCESS_SRV_0001 | OData | Supplier invoice creation and processing |
PurchaseRequisitionRequest_In | SOAP | Create purchase requisitions (legacy integration path) |
Oracle NetSuite purchase order REST
# Create PO
POST https://{account}.suitetalk.api.netsuite.com/services/rest/record/v1/purchaseOrder
# Read PO with sub-resources
GET https://{account}.suitetalk.api.netsuite.com/services/rest/record/v1/purchaseOrder/{id}?expandSubResources=true
# Update PO
PATCH https://{account}.suitetalk.api.netsuite.com/services/rest/record/v1/purchaseOrder/{id}
# Auth: OAuth 2.0 token-based; requires Purchase Orders feature enabled in NetSuite account
Microsoft Dynamics 365 Business Central
# List purchase orders
GET https://{prefix}/api/v2.0/companies({id})/purchaseOrders
# Create purchase order
POST https://{prefix}/api/v2.0/companies({id})/purchaseOrders
# Auth: Bearer token (Azure AD OAuth 2.0)
Layer 3 MCP tool schemas
These are the merchant-side and buyer-side tool signatures your MCP server must implement. Each tool reads from live ERP data, not a cached snapshot.
/* MERCHANT-SIDE MCP TOOLS (seller exposes these) */
get_quote(buyer_id, sku_list, quantities, requested_terms)
Returns: {
line_items: [{sku, unit_price, price_break_tiers, moq, lead_time_days}],
payment_terms_offered, contract_number, quote_expiry
}
check_credit_terms(buyer_id)
Returns: {credit_limit, available_credit, payment_terms, outstanding_balance}
get_lead_time(sku, quantity, ship_to_zip)
Returns: {estimated_ship_date, carrier, transit_days}
submit_po(quote_id, buyer_po_number, ship_to_address, requested_delivery_date)
Returns: {seller_order_id, acknowledgment_expected_by, edi_855_pending}
check_po_status(seller_order_id)
Returns: {status, ship_date, tracking_number, invoice_number}
submit_invoice(seller_order_id, invoice_number, line_items, due_date)
Returns: {invoice_accepted, payment_due_date, early_payment_discount}
/* BUYER-SIDE / CFO-SIDE MCP TOOLS (buyer exposes these) */
approve_purchase(requisition_id, approver_id, notes)
Returns: {approval_status, approved_amount, po_number_assigned}
set_spending_cap(category, department, amount, period)
Returns: {cap_id, effective_date, current_utilization}
request_quote_comparison(requirement_spec, approved_vendor_list, scoring_weights)
Returns: {rfq_id, vendors_invited, response_deadline}
get_policy_constraints(category, spend_amount)
Returns: {approval_chain, required_certifications, preferred_terms, vendor_restrictions}
escalate_to_human(context, reason, urgency)
Returns: {ticket_id, assigned_to, escalation_reason}
§6 · Net-30 Credit Mechanics
Establishing credit before the first agent-initiated transaction.
When two companies transact for the first time — including when an AI agent initiates the first transaction on behalf of a buyer entity — credit terms are not automatic. The seller must evaluate the buyer's creditworthiness before extending net-30 or net-60. In manual operations this takes days to weeks; in an agent-ready architecture it needs to be automated.
The three US business credit bureaus
| Bureau | Primary Score | Scale | Key Requirements | API Access |
| Dun & Bradstreet |
PAYDEX Score |
1–100 (80+ = on-time or early; 50–79 = 1–30 days late; 49 and below = 60–120+ days late) |
D-U-N-S Number (9-digit, free to request); at least 2 tradelines reporting; at least 3 payment experiences; timeline: 90–120 days from first vendor account opening |
D&B Direct API (subscription-required); automate credit checks before approving net terms (re-verify before launch) |
| Experian Business |
Intelliscore Plus |
1–100 |
Blended Score (incorporates principal's personal credit); Financial Stability Risk Rating also available |
Experian Business Information Services API (re-verify before launch) |
| Equifax Business |
Business Credit Risk Score |
101–992 |
Business Failure Score and Payment Index also available |
Equifax Data Services API (re-verify before launch) |
Embedded B2B credit providers
For suppliers who cannot or do not want to manage credit underwriting in-house, embedded B2B credit providers take on the underwriting and credit risk in exchange for a fee:
| Provider | Model | Integration | Pricing |
| Resolve (resolvepay.com) |
Offers net-30, net-60, net-90 at checkout or via API; pays seller within 24 hours; buyer repays Resolve per agreed terms |
REST API; integrates with NetSuite, QuickBooks Online, Shopify, BigCommerce, Magento 2, WooCommerce, and custom OMS/ERP |
Not publicly listed; contact required (re-verify before launch) |
| Balance (getbalance.com) |
Financial infrastructure for B2B: Digital Trade Credit, B2B Payments (ACH, card, wire, RTP), AR Management, Marketplace OS; assumes credit risk for approved buyers; claims 4× SMB approval rate improvement |
Full API control; 20+ currencies; Dynamic Optimization Engine for ACH rebates and card surcharges; Real Time Payment (RTP) rails for instant bank account verification |
Not publicly listed; transaction-based or SaaS model (re-verify before launch) |
| Apruve |
Enterprise-grade B2B credit management; white-label net terms and invoicing; designed for manufacturing and industrial distribution |
API-driven |
Not publicly listed (re-verify before launch) |
Credit establishment in an agent flow
A procurement agent initiating a first purchase with a new seller must:
- Request a credit application via the seller's MCP
check_credit_terms tool.
- Supply the buyer company's D-U-N-S Number, Employer Identification Number (EIN), and business references.
- If the seller uses Resolve or Balance, the embedded provider runs the credit check automatically and returns a credit limit and available terms in real time.
- Store the approved credit limit and terms as a persistent context artifact for future calls to the same seller's MCP — credit approval should not trigger a redundant check on every subsequent transaction.
Early-Payment Math
A "2/10 Net 30" term offers a 2% discount if paid within 10 days versus 30 days. The annualized return is approximately 2% ÷ (30−10) × 365 ≈ 36.5%. If the buyer's cost of capital is below 36.5% annualized, the CFO-agent should schedule early payment. Build this calculation explicitly into the approve_purchase logic.
§7 · RFQ Workflow Automation
Fan-out, score, recommend — the procurement agent's highest-value operation.
The Request for Quote (RFQ) workflow is one of the highest-value applications of the procurement agent. Manually, sourcing a new vendor for an item requires days of email back-and-forth. With an agent, it can execute in minutes — if the Layer 1 data and Layer 3 tools are in place.
RFQ agent flow (7 steps)
- Receive requirement. Human procurement manager (or a triggering inventory event) submits: SKU or specification, desired quantity, required delivery date, budget ceiling, required certifications (SOC 2, ISO 27001), preferred payment terms.
- Query approved vendor list. Agent calls buyer-side ERP or procurement platform to retrieve vendors approved for the relevant spend category. For SAP buyers:
API_PURCHASING_SOURCE_SRV (Purchasing Source List). For Oracle buyers: /procurementApprovedSupplierListEntries.
- Fan out RFQs in parallel. Agent calls
get_quote on each approved vendor's MCP server simultaneously (or submits RFQ via procurement platform: Ariba Strategic Sourcing REST API POST to https://openapi.ariba.com/api/strategic-sourcing/v1/rfqs, or Oracle /supplierNegotiations POST). Each RFQ includes specification, quantity, requested delivery date, and payment terms requested.
- Aggregate responses. Agent collects returned quotes: unit price, price-break tiers, MOQ, lead time, payment terms offered, compliance certifications claimed.
- Score against policy using a weighted matrix.
- Recommend. Agent surfaces a ranked recommendation with justification for each scoring dimension. If the top-ranked vendor falls within the procurement agent's delegated authority, it fires the PO directly. Otherwise, it escalates via
escalate_to_human or routes to approve_purchase.
- Execute PO. Once approved, buyer-agent calls
submit_po on the winning vendor's MCP, or submits via Ariba Network or Coupa API, which generates and transmits the EDI 850.
Weighted scoring matrix
| Dimension | Weight | Data Source | Scoring Logic |
| Unit price (at requested quantity) | 40% | get_quote response | Lowest price = max score; linear scale to highest quote |
| Lead time vs. required delivery date | 25% | get_lead_time response | Meets date = full credit; each day late = pro-rated deduction; misses date = 0 |
| Payment terms (net-60 preferred = higher score) | 15% | check_credit_terms response | Net-60 = 100%; Net-30 = 70%; Net-15 or prepay = 30% |
| SOC 2 Type II on file | 10% | Vendor compliance portal or Ariba Supplier Profile | Type II = 100%; Type I = 60%; None = 0% |
| Supplier risk score (D&B PAYDEX or procurement platform rating) | 10% | D&B API or procurement platform supplier profile | 80+ PAYDEX = 100%; 70–79 = 60%; below 70 = 20% |
§8 · Worked Example
Agent-initiated RFQ to PO via Ariba Network — 9 steps with real API calls.
Scenario: BuyerCo's procurement agent receives a reorder trigger for Industrial Solvent Grade A (SKU-A4412), 500 units, required by August 31, net-30 preferred. Three approved vendors (SupplierA, SupplierB, SupplierC) are on file. BuyerCo uses SAP S/4HANA and is connected to Ariba Network.
Step 1 — Agent retrieves approved vendor list
GET https://hostname/fscmRestApi/resources/11.13.18.05/procurementApprovedSupplierListEntries
?q=itemDescription=SKU-A4412
Authorization: Bearer {token}
Returns: SupplierA (AN01234567890), SupplierB (AN09876543210), SupplierC (AN05555555555) — all with active Ariba Network IDs.
Step 2 — Agent fans out RFQs via Ariba Strategic Sourcing API
POST https://openapi.ariba.com/api/strategic-sourcing/v1/rfqs
Authorization: Bearer {oauth_token_from_api.ariba.com}
Content-Type: application/json
{
"title": "RFQ-2024-0412 Industrial Solvent SKU-A4412",
"items": [{"partNumber": "SKU-A4412", "quantity": 500, "uom": "EA"}],
"suppliers": ["AN01234567890", "AN09876543210", "AN05555555555"],
"responseDeadline": "2024-08-05T17:00:00Z",
"requestedDeliveryDate": "2024-08-31",
"paymentTermsRequested": "NET30"
}
Step 3 — Suppliers respond via Ariba Supplier Portal or API
| Vendor | Unit Price | Lead Time | Terms Offered | SOC 2 Type II |
| SupplierA | $24.50 | 7 days | Net-30 | Yes |
| SupplierB | $23.00 | 14 days | Net-60 | No |
| SupplierC | $25.50 | 5 days | Net-30 | Yes |
Step 4 — Agent scores using the weighted matrix
SupplierA wins on composite score: competitive price, lead time meets the August 31 window, preferred terms, SOC 2 on file. SupplierB's 14-day lead time misses the required delivery window — a 0 on that dimension drops its composite score below SupplierA despite the lower unit price.
Step 5 — PO within delegated authority
500 × $24.50 = $12,250 — within the procurement agent's $25,000 authority ceiling for this category. No escalation required. Agent calls submit_po on SupplierA's MCP server:
{
"tool": "submit_po",
"arguments": {
"quote_id": "QT-SUPP-A-0412",
"buyer_po_number": "PO-2024-00042",
"ship_to_address": {
"line1": "800 Dock Road",
"city": "Gary",
"state": "IN",
"zip": "46401"
},
"requested_delivery_date": "2024-08-31",
"payment_terms": "NET30"
}
}
Step 6 — Ariba Network transmits EDI 850
The Ariba Network receives the PO via API and transmits the EDI 850 Purchase Order to SupplierA's ERP. The complete EDI 850 document appears in §4 above — that is the exact document generated for this transaction.
Step 7 — SupplierA returns EDI 855 acknowledgment
Within 24 hours, SupplierA's system returns an EDI 855. Agent parses the ACK segment: IA (Item Accepted) for both line items. Order confirmed. The agent updates the PO record from "pending acknowledgment" to "confirmed."
Step 8 — Goods ship; 3-way match executes
SupplierA ships August 10. Buyer's warehouse logs goods receipt. SupplierA submits EDI 810 invoice via Ariba Network on August 11. Buyer's ERP runs the 3-way match: PO PO-2024-00042 + goods receipt timestamp + EDI 810 invoice. All three match within tolerance. Invoice cleared for payment.
Step 9 — CFO-agent evaluates early-payment discount
Net-30 payment due September 10. The 2/10 term offers 2% discount if paid by August 20. With cost of capital at 5% annually, 2% for 20 days ≈ 36.5% annualized return — well above cost of capital. CFO-agent approves early payment, fires EDI 820 with ACH transfer. Accounts receivable cycle closes on SupplierA's side; accounts payable cycle closes on BuyerCo's side.
EDI as Execution Rail
Notice that the agent made every decision — vendor selection, PO timing, early-payment evaluation — before any EDI document was generated. The EDI 850 was the output of the decision, not part of the decision process. The agent uses submit_po to trigger the 850 transmission; it never writes EDI segment logic directly. This is the correct architecture boundary.
§9 · Compliance Gotchas
SOC 2, ISO 27001, GDPR, HIPAA, and PCI DSS — the B2B compliance stack.
B2B procurement introduces a compliance surface area that consumer agent commerce largely avoids. Enterprise buyers have vendor risk management programs; a procurement agent that cannot produce compliance documentation will not clear vendor onboarding, regardless of how good its pricing is.
| Standard | Applicability | Key Requirement for AI Agents | Timeline |
| SOC 2 Type II |
De facto procurement gate for enterprise B2B SaaS and AI agent tools above ~$50K contract value |
Auditors increasingly ask: How are model outputs validated before financial commitments? What human oversight exists? How is conversation history and proprietary buyer data protected? |
3–6 month observation period for Type II; Type I can bridge initially with a roadmap to Type II |
| ISO 27001 |
Required by many European buyers and multinational procurement policies; complements SOC 2 via ISMS framework |
If your MCP server or agent platform handles buyer data (quotes, approval records, vendor pricing), ISO 27001 is often required alongside SOC 2 |
6–12 months including gap assessment, ISMS build-out, internal audit, and certification audit |
| GDPR / CCPA |
B2B procurement involves EU-resident and California-resident personal data (contact names, email addresses, approval chain members) |
Agent context that stores quote requests, approval records, and conversation history is likely "processing" under GDPR; needs lawful basis, data minimization, and data subject request process |
Pre-launch; cannot be retrofitted cleanly after data is collected |
| HIPAA (healthcare B2B) |
Healthcare suppliers (medical devices, pharma, lab supplies) whose procurement records incidentally touch Protected Health Information |
Business Associate Agreement (BAA) required with every vendor and sub-processor touching ePHI — including MCP server hosts, ERP providers, and procurement platform vendors. 60-day breach notification to HHS OCR |
BAA required before first transaction; Security Rule safeguards required before system goes live |
| PCI DSS |
B2B flows that include a purchasing card (P-card) payment path |
Net-terms-only flows (ACH, EFT, wire) typically do not trigger PCI DSS. If card payment is offered as fallback, ensure the payment processor (Balance, Resolve, or a gateway) handles all cardholder data — keeping your systems out of PCI scope entirely |
Scoping assessment required before adding card payment; SAQ A qualification possible if using processor-hosted payment pages |
§10 · Common Mistakes
Eight architecture errors that kill B2B agent deployments before launch.
Mistake 1 — Using retail price data in B2B POs
A procurement agent that reads a public product page price and fires an EDI 850 at that number will receive either a corrected invoice or a PO rejection. The seller's ERP holds the contract-specific price and will override or reject any PO that does not match it. Fix: Always call get_quote with the buyer's account ID before constructing a PO. Never use MSRP or public catalog price for B2B PO pricing.
Mistake 2 — Ignoring MOQ (Minimum Order Quantity)
Ordering below MOQ results in automatic order rejection or a repriced invoice at a higher per-unit rate. Fix: Retrieve MOQ from the Purchasing Info Record (API_INFORECORD_PROCESS_SRV in SAP, or equivalent) at Layer 1. Include MOQ validation in the agent's pre-PO checklist. If the required quantity is below MOQ, the agent should either aggregate with other requisitions or escalate to a human buyer.
Mistake 3 — Firing a PO without credit terms established
The first PO with a new vendor will be held until credit terms are approved. If the agent fires the PO and then waits for credit approval, it introduces unexpected delays that can miss delivery windows. Fix: Call check_credit_terms before submit_po for any new vendor relationship. If no credit line exists, initiate a credit application first via Resolve, Balance, or Apruve.
Mistake 4 — Treating the buyer-agent as the payment authority
An agent that attempts to pay at order-submit (consumer UCP behavior) will either be blocked by the buyer's ERP or create a compliance violation if it bypasses the approval chain. Fix: Build the multi-step approval workflow explicitly into the UCP layer. The buyer-agent submits and tracks; the CFO-agent (or human) approves and pays. No payment fires without an approved PO on record.
Mistake 5 — Not checking EDI/cXML capability before Ariba Network enrollment
Suppliers that use EDI or cXML integration are automatically placed at Silver level ($750/yr) on Ariba Network, regardless of document count. A supplier expecting Bronze pricing ($50/yr) but integrating via EDI will face a $700/yr cost surprise on day one. Fix: Before choosing an integration method (EDI, cXML, API, or portal), calculate the Ariba fee schedule based on projected volume and integration method. Use Ariba's published fee calculator (re-verify before launch).
Mistake 6 — Skipping 3-way match before scheduling payment
Paying an invoice before confirming goods receipt and PO match creates risk of overpayment, duplicate payment, and audit findings. Fix: Build a 3-way match gate in the CFO-agent's approve_purchase logic: PO exists + goods receipt logged + invoice matches PO line items within tolerance. Only then schedule EDI 820 payment.
Mistake 7 — No SOC 2 attestation on the MCP server
Enterprise buyers will not route procurement traffic through an MCP server that cannot produce a SOC 2 Type II report or, at minimum, a completed vendor security questionnaire. Fix: Begin SOC 2 observation period before your first enterprise buyer conversation. Have a completed Vendor Security Assessment Questionnaire (VSAQ) ready for prospects who ask before Type II is complete.
Mistake 8 — Storing personal data in agent context beyond the transaction
Procurement records contain personal data — buyer names, email addresses, approval chain members. Retaining this data in agent context or logs beyond the necessary retention period creates GDPR/CCPA exposure. Fix: Define retention policies for agent logs and conversation history before go-live. Apply data minimization: store the minimum necessary fields. Implement a process for responding to data subject access and deletion requests.
§11 · FAQ
Eight questions from operators building B2B agent procurement.
Does a procurement agent need a separate legal entity to sign contracts on behalf of the buyer?
No. A procurement agent acts within the delegated authority of the human principal (the buyer organization). The legal entity entering contracts is always the human/corporate principal. The agent is the instrument of execution, not the contracting party. Agents should be configured with explicit spending limits, approved vendor lists, and policy constraints that define the scope of their authority. Actions outside that scope must require human approval before execution.
How does the agent handle a partial shipment or a supplier who can only fulfill part of the order?
A partial shipment triggers an EDI 855 with IQ (Item Accepted, Quantity Changed) or IC (Item Accepted, Changes Made) in the ACK segment, along with an updated quantity and a revised expected ship date. The agent should: (a) acknowledge the partial acceptance, (b) check whether the partial quantity meets the operational requirement, (c) if not, fan out a supplemental RFQ to alternative vendors for the shortfall quantity. This requires the procurement agent to maintain order state across multiple turns — a capability that must be designed into the agent's context management.
What is the difference between a procurement agent and an RPA bot doing procurement?
An RPA (Robotic Process Automation) bot executes a fixed workflow by screen-scraping or API calls. It cannot exercise judgment: it cannot score vendors, negotiate terms, or decide when to escalate to a human. A procurement agent reasons over structured data, applies weighted policy scoring, can call multiple tools in sequence based on intermediate results, and can escalate when policy constraints are violated. The agent adds value precisely in the vendor selection, term evaluation, and policy enforcement steps — tasks where RPA requires human intervention.
Can a procurement agent operate on Ariba Network without the buyer also being on Ariba?
The supplier (seller) side can integrate with Ariba Network regardless of whether the buyer is an Ariba customer. However, the core value of the Ariba Network — electronic PO transmission, invoice matching, and payment status — requires the buyer to also be transacting on the network or using Ariba's buyer-side integration. If the buyer uses a different procurement platform (Coupa, Oracle, JAGGAER), POs and invoices will flow through that platform's API or EDI channel, not Ariba. A supplier that wants to reach buyers across multiple platforms needs either multi-platform connectors or an EDI-capable middleware layer (such as IBM Sterling, TrueCommerce, or OpenText).
How do price-break tiers work in the 4-Layer Model's Structured Data layer?
Price-break tiers are a nested array in the product/pricing data object. A typical schema: [{min_qty: 1, max_qty: 99, unit_price: 24.50}, {min_qty: 100, max_qty: 499, unit_price: 22.00}, {min_qty: 500, max_qty: null, unit_price: 19.50}]. The procurement agent reads this array at Layer 1, applies the correct tier based on the requisitioned quantity at the get_quote step (Layer 2), and uses the tiered unit price in the EDI 850 PO1 segment. An agent that ignores tiers and uses the per-unit price at a different quantity will cause a PO/invoice mismatch.
What happens when the CFO-agent's spending authority is exceeded mid-workflow?
The agent should detect the breach before firing the PO — specifically at the get_policy_constraints or approve_purchase step — and route to escalate_to_human with a structured context packet: requisition ID, recommended vendor, quote amount, policy threshold exceeded, and the CFO-agent's scoring rationale. The human CFO or VP of Finance then approves or redirects. A well-designed system logs this escalation for audit purposes and includes it in the agent's context for the next interaction with that vendor.
Is EDI still relevant when procurement platforms like Ariba and Coupa provide their own APIs?
Yes. EDI remains the dominant document standard for large enterprise-to-enterprise transactions, particularly with trading partners whose ERP (SAP, Oracle, IBM AS/400-based systems) is EDI-native. Ariba Network itself assigns Silver-level supplier status to any supplier using EDI or cXML, acknowledging EDI's continued primacy. Procurement platforms often act as EDI translators — converting inbound EDI 850s into their internal data model and outbound into whatever format the supplier's system expects. New integrations often use the platform API directly; legacy relationships continue on EDI. Plan for both in any multi-vendor procurement setup.
What credit reporting sources does Balance use for net-terms decisions?
Balance's proprietary underwriting model combines multiple data sources: business credit bureau data (including D&B and others), banking data (via Open Banking / Plaid-type integrations), invoice history on the Balance platform, and public business data. Balance explicitly assumes the credit risk for approved buyers — meaning the seller receives payment regardless of whether the buyer pays on time. Balance describes a 4x improvement in SMB approval rates compared to traditional bank-based credit decisions. Specific bureau integrations and model methodology are not publicly disclosed; contact Balance for data processing and underwriting details before launch.
§12 · Step-by-Step
Making your B2B wholesale operation agent-ready — five steps.
Step 1 — Audit and structure your product and pricing data to B2B Layer 1 spec
Pull every SKU from your ERP or PIM and verify each record contains: contract-specific or quoted unit price (not MSRP), price-break tier array, minimum order quantity, unit of measure, lead time in business days, payment terms offered, and any applicable regulatory flags (hazmat, food-grade, etc.). For SAP environments, validate that each vendor-material combination has a complete Purchasing Info Record (API_INFORECORD_PROCESS_SRV). Missing fields at Layer 1 will cause every downstream layer to fail silently or generate incorrect POs.
Step 2 — Select your procurement network integration and register
Choose whether you will connect via SAP Ariba Network, Coupa Supplier Portal, direct EDI, or Oracle Procurement Cloud based on your buyer base. For Ariba: register at https://supplier.ariba.com, obtain your Ariba Network ID (AN-ID), and enroll in the Developer Portal at https://developer.ariba.com/api/ to access OAuth credentials. Calculate expected fee tier using Ariba's fee calculator. For EDI: establish a VAN (Value Added Network) relationship or direct AS2 connection, and configure 850/855/810/820 transaction sets with each trading partner.
Step 3 — Build and deploy your merchant-side MCP server
Implement the six core tools: get_quote, check_credit_terms, get_lead_time, submit_po, check_po_status, submit_invoice. Each tool must read from your ERP's live data (not a cached snapshot) and return typed, structured responses. Use OAuth 2.0 for MCP server authentication. Test each tool independently against your ERP APIs before integrating with any agent framework. See MCP server construction for tool schema templates and hosting guidance.
Step 4 — Establish the credit layer before your first agent-initiated transaction
Enroll with D&B to obtain a D-U-N-S Number for your business entity (if you do not already have one). Open at least three vendor accounts with suppliers that report to D&B to begin building a PAYDEX score. For buyer-side operations: integrate Resolve, Balance, or Apruve to automate credit decisions for new vendor relationships. For seller-side operations: configure your MCP check_credit_terms tool to call your credit provider's API in real time rather than returning static credit limits.
Step 5 — Test the full EDI 850 → 855 → 810 → 820 cycle in a sandbox environment
Use your procurement platform's or EDI provider's test environment to run a complete round-trip: agent-generated PO fires EDI 850, supplier system returns EDI 855 ACK, goods receipt is logged, supplier submits EDI 810 invoice, 3-way match executes, EDI 820 payment fires. Instrument every step with logging and validate that segment-level data (PO number cross-references, quantity matches, payment terms, dollar totals) is consistent across all four documents. Do not launch agent-initiated purchasing into production until this cycle completes without error in sandbox.
Continue the Guide
Where to go next in the AgentMall stack.
B2B procurement is one of five vertical deep-dives in this batch. Cross-link to the hub for the full vertical survey, or drill into the protocol and capability layers that underpin this spoke.
Also in this series
Vertical Spoke
Travel & Hospitality
GDS infrastructure (Amadeus, Sabre, Travelport), NDC, the loyalty-credential delegation problem, and how travel agent commerce has operated for 50+ years before AI agents arrived.
Vertical Spoke
Pet Products
Three buyer segments, Autoship mechanics, prescription medication regulatory gates, and the independent-seller competitive angle — a consumer vertical with B2B-adjacent subscription complexity.
Economics
Full Stack Cost Picture
What it actually costs to run a B2B-ready agent commerce stack — Ariba Network fees, MCP hosting, credit provider margins, and EDI middleware costs mapped to transaction volume.
Ready to Build?
Start with Layer 1 — audit your pricing data first.
The single highest-leverage action for any B2B wholesale supplier building agent readiness: pull every SKU from your ERP and verify the quoted price, price-break tiers, MOQ, lead time, and payment terms are all populated. A product record missing any of these fields will fail at the get_quote step — and every downstream layer depends on that call succeeding. Fix the data before you build the MCP server.
Back to the AgentMall Roadmap →