---
title: AI Quote Agent: Automating B2B eCommerce Quote Requests (2026)
description: Monday, the RFQ clipboard. An agent drafts from customer price and ATP. Over the $5,000 fixture cap stays HITL. CPQ still issues the quote.
url: https://www.joinhorizon.co/blog/ai-quote-agent-b2b-ecommerce-2026/
datePublished: 2026-08-27T00:00:00.000Z
dateModified: 2026-10-28T00:00:00.000Z
author: palaniappan-p
category: AI Agents
tags: ai-agents, ecommerce, b2b, amazon-bedrock, bedrock-agentcore, agentcore-gateway
---

# AI Quote Agent: Automating B2B eCommerce Quote Requests (2026)

> Monday, the RFQ clipboard. An agent drafts from customer price and ATP. Over the $5,000 fixture cap stays HITL. CPQ still issues the quote.

Monday, an RFQ is a **pipeline**: requirements, catalog match, **customer** price, inventory, a recommended quote, then an **approval gate**, then an issued quote in CPQ. Skip the gate and you have a salesperson who never sleeps and never read the contract.

**The job.** Draft a quote from customer price and ATP without auto-issuing contractual risk.

**This week.** Collect requirements, match catalog, call `getCustomerPrice` and availability, draft the recommendation. Do not issue above your cap. Do not capture payment.

**A person still signs.** Quotes over the cap (fixture **$5,000** / $25,000 in the artifact; replace with yours), custom terms, credit hold, restricted SKUs, and contract-price exceptions. If there is **no account match**, say so and hand off. Do not quote the public catalog as the contract price.

**Skip it** when you only have list-price APIs, when the account is pending onboarding, or when finance will not name a cap and an approver.

This is series part 28 of the **2026** field guide. Dollar caps in the artifact are **placeholders**. They are not FactualMinds quote-SLA measurements. We have no published agent case study that claims quote-win rate improved by a percentage.

> **Copy the gates:** Replace the fixture caps in [`b2b-quote-approval-gates.md`](https://www.joinhorizon.co/examples/architecture-blog-2026/ecommerce-ai-agents-series/b2b-quote-approval-gates.md). Run the eval rows. Folder: [`ecommerce-ai-agents-series/`](https://www.joinhorizon.co/examples/architecture-blog-2026/ecommerce-ai-agents-series/README.md).

**Our take:** the agent **drafts**; CPQ **issues**. Auto-issue only inside a cap you already enforce in Cedar **and** in CPQ. Trade-off: fewer "instant quotes." You keep humans on contractual risk.

Sales lookup (net, history, ATP) is [the sales agent](https://www.joinhorizon.co/blog/ai-sales-agent-b2b-ecommerce-2026/). New accounts that are not `approved` do not get issued quotes. See [onboarding gates](https://www.joinhorizon.co/blog/ai-agent-b2b-customer-onboarding-2026/). AWS composition: [FactualMinds AgentCore brief](https://www.joinhorizon.co/blog/aws-ai-agents-for-ecommerce-factualminds-2026/). High-value **submit** still belongs to a workflow: [agent vs workflow](https://www.joinhorizon.co/blog/ai-agent-vs-workflow-automation-ecommerce-2026/).

## RFQ to issued quote

```mermaid
flowchart TD
  rfq[RFQ]
  req[Requirements]
  cat[Catalog match]
  price[Customer price]
  atp[Inventory / lead time]
  rec[Quote recommendation]
  gate[Approval gate]
  q[Issued quote]
  rfq --> req --> cat --> price --> atp --> rec --> gate --> q
  gate -->|over cap or terms| hitl[Human queue]
```

| Step | Rule |
| ---- | ---- |
| Requirements | Account, SKU/UOM, qty, ship-to if you have it. Missing account → no net. |
| Catalog | Sellable to that account. Do not invent a substitute SKU. |
| Customer pricing | `getCustomerPrice` only. Public retail is not a fallback. |
| Inventory | ATP or `unknown`. Do not promise a dock date the WMS did not return. |
| Recommendation | Structured draft: lines, MOQ check, validity from **CPQ rules**. |
| Gate | Under cap + standard terms may follow **your** CPQ auto-issue. Above cap, custom T&Cs, credit hold → HITL. |
| Issue | OMS/CPQ send. Agent does not freelance SMTP. |

MOQ and contract terms are **data**. If the model "waives" a 12-unit minimum because the buyer asked nicely, that is a failed eval, not hustle.

## Agent drafts; high-value is HITL

Fixture caps in the artifact (`$5,000` / `$25,000`) exist so you have something to delete. Put real numbers in Policy.

| Amount / condition | `draftQuote` | `submitQuote` |
| ------------------ | ------------ | ------------- |
| Under cap, MOQ ok, standard terms, fresh price list | Yes | Only if CPQ already auto-issues that class |
| Over cap, custom terms, restricted SKU, stale `asOf` | Yes (incomplete) | **No** (HITL) |
| Credit hold / pending onboarding | Recommend only | **No** |

Context: illustrative Cedar. Attach `accountId` and `amountUsd` from the tool resource, not from the prompt.

```cedar
// Sketch — over-cap submit is forbid. LOG_ONLY then ENFORCE.
forbid (
  principal,
  action == Action::"submitQuote",
  resource
)
when {
  resource has amountUsd &&
  resource.amountUsd > 5000
};
```

Browser **off**. No `capturePayment`. Bedrock Guardrails do not replace Cedar for submit.

HITL packets need the same evidence the AM will ask for: session id, tool trace, `accountId`, line SKUs, customer-price `asOf`, MOQ result, requested terms vs standard, amount vs cap. An approval button without a trace is a rubber stamp.

Do not let the buyer JWT approve **their** exception terms. Draft yes. Issue of custom payment terms or MSA language is associate plus finance/legal, the same human bar as [onboarding credit](https://www.joinhorizon.co/blog/ai-agent-b2b-customer-onboarding-2026/). Pending accounts do not get issued quotes. `approved` is a commerce status, not a vibe.

Public retail quote tools (PDP price + email PDF) are a different product. If you only have list price APIs, you do not have a B2B quote agent. You have a leak. Wire `getCustomerPrice` first: [sales agent policy](https://www.joinhorizon.co/blog/ai-sales-agent-b2b-ecommerce-2026/).

## What broke

> **What broke:** A draft-quote harness with `submitQuote` attached "so the demo could email PDF." First over-cap RFQ went out with list price in a footnote and net in the header, mixed because catalog and CPQ disagreed. **Detection:** HITL queue empty; CPQ showed `issued` with no manager id; eval "over cap must not submit" failed. **Fix:** split draft vs submit; Cedar forbid on submit above cap; fail if `getCustomerPrice` missing; send only from CPQ after approval. **Lesson:** automating the PDF is not automating the contract.

Minimum quantities and contract terms live in **CPQ/ERP**, not in the system prompt. If MOQ is 12 and the RFQ is 4, the agent recommends a 12-pack or a human exception. It does not issue a 4-unit net "to be helpful." Same for payment terms: net-30 vs net-60 is a finance change, not a chat close.

Harness is enough for draft-only with five tools. If quote-submit, credit-check, and catalog specialists need different IAM, export to Strands on Runtime: [CTO architecture brief](https://www.joinhorizon.co/blog/aws-ai-agents-for-ecommerce-factualminds-2026/). Do not buy Classic after July 30, 2026 to "get quotes out faster."

Eval the obvious abuse cases before the demo: shopper JWT must not draft a net quote; buyer A must not see buyer B; over-cap must not `submitQuote`; stale `asOf` must not issue. If any of those pass, you do not have a quote agent. You have an email bot with a price hallucination.

The `$5,000` / `$25,000` rows in the artifact are placeholders. Put the real caps in Cedar **and** CPQ the same day. Prompt-only caps drift.

## What to do this week

1. Write your real caps into [`b2b-quote-approval-gates.md`](https://www.joinhorizon.co/examples/architecture-blog-2026/ecommerce-ai-agents-series/b2b-quote-approval-gates.md). Delete the fixtures.
2. List MOQ, standard terms, and who signs exceptions.
3. Wire `getCustomerPrice` + `getAvailability` + `draftQuote`. Leave `submitQuote` off until Cedar is boring.
4. Ten goldens: under cap, over cap, below MOQ, shopper JWT, pending account, "take a card to hold it."
5. HITL queue: session id + tool trace on every over-cap row.
6. Harness for draft-only if ≤5 tools; else Runtime. Not Classic after July 30, 2026.
7. [Contact FactualMinds](https://www.joinhorizon.co/contact-us/) if you need Policy on CPQ writes: [Generative AI on AWS](https://www.joinhorizon.co/services/generative-ai-on-aws/).
8. To scope this as one first workflow rather than a fleet, start from the [B2B AI sales agent](https://www.joinhorizon.co/ai-agents/sales/) page.

## For your technical lead

**On June 17, 2026**, AgentCore Harness reached general availability ([What's New](https://aws.amazon.com/about-aws/whats-new/2026/06/amazon-bedrock-agentcore-harness-generally-available/)). **Agents Classic** is in maintenance for new customers after **July 30, 2026**. That is fine for a draft-quote loop with a handful of tools, but Classic is the wrong greenfield.

> **First-party signals we reuse (not eCommerce outcomes):** Gateway server-side tools cut median tool RTT **~180 ms → ~95 ms** on a **B2B CRM assistant** (12 tools, ~8k turns/day; see the [Gateway post](https://www.joinhorizon.co/blog/amazon-bedrock-agentcore-gateway-server-side-tool-execution-2026/)). Quote turns will add CPQ latency on top. Platform silhouette **~$791/mo** at 50K sessions is not a CPQ invoice ([decision guide](https://www.joinhorizon.co/blog/aws-bedrock-agentcore-vs-amazon-q-enterprise-decision-guide-2026/)). Use the [AgentCore pricing calculator](https://www.joinhorizon.co/tools/amazon-bedrock-agentcore-pricing-calculator/). The CRM canary (**~180 → ~95 ms**) tells you Gateway is not the slow part. CPQ issue and approval SLA are.

## What this post doesn't cover

- Full sales discovery UX: [sales agent](https://www.joinhorizon.co/blog/ai-sales-agent-b2b-ecommerce-2026/)
- Credit limit / MSA activation: [onboarding](https://www.joinhorizon.co/blog/ai-agent-b2b-customer-onboarding-2026/)
- Native Shopify CPQ connector (there isn't one on AgentCore)
- Measured quote-cycle-time KPIs from a client engagement
- Legal playbooks for Incoterms or export licenses

## FAQ

### When should you NOT auto-issue a B2B quote from an agent?

Do not auto-issue when amount exceeds your Cedar cap, MOQ fails, price-list asOf is stale, the account is on credit hold, terms are nonstandard, or the SKU is restricted. The agent drafts. Humans (or a deterministic CPQ rule you already trust) issue. Skip Agents Classic for net-new builds after July 30, 2026.

### What could go wrong if the quote uses public retail price?

You send a number that is not the contract. The buyer will hold you to it or walk. Same failure as a sales agent without getCustomerPrice. Fail closed; escalate to an associate.

### What could go wrong if submitQuote has no Policy?

The model will email a $80k draft because the user said "we need it today." Prompt text is not an authorization boundary. Put Cedar on Gateway, LOG_ONLY then ENFORCE, and keep high-value submit on a HITL queue.

### Can a buyer JWT approve their own exception terms?

No. Buyers may draft an RFQ for their account. Payment-term changes, MSA language, and over-cap issue stay associate plus finance/legal. Onboarding credit is a separate human gate.

### Is Bedrock the quoting engine?

No. Bedrock is the model. CPQ/OMS is the system of record. AgentCore Harness or Runtime hosts the loop. Gateway plus Cedar gates draft vs submit. No native Shopify connector.

### Should the quote agent take a credit card to "lock the price"?

No. No payment capture in agent tools. A quote is not a checkout. Keep PCI in the systems that already own it.

---

Need RFQ gates on Gateway without a native Shopify myth? [Contact us](https://www.joinhorizon.co/contact-us/) or [Amazon Bedrock](https://www.joinhorizon.co/services/aws-bedrock/).

## How the quote agent stays bounded

Draft a quote from the account price book and ATP.

- **Maturity:** Level 2 — reference architecture
- **Risk:** critical
- **Oversight:** human-control
- **Starts when:** An RFQ arrives.
- **Tools:** A write goes through a router, a permission check, a policy check, and a budget check. The model does not commit it. An approval token lives in tool context, not in the user message.
- **Stops for a person:** Sending the quote, and any price below the book, waits for a named associate.
- **Checked by:** Every line has a SKU, a book price, and ATP. A line without them is omitted.
- **Untrusted data:** RFQ attachments and email instructions to beat a competitor at any margin.
- **If it fails:** If the quote agent stops, name the reason: completed, budget_exceeded, timed_out, cancelled, guardrail_blocked, approval_required, tool_failure, verification_failed, or partial_completion. Retry a timeout at most twice. Back off on rate limits. After repeated verification failure, escalate. Stop when the budget is exhausted or a permission is denied. No unbounded loop. Sending the quote, and any price below the book, waits for a named associate.
- **Lifecycle:** Explore, then act, then confirm, then verify. Explore gathers the context for the quote agent. Act stays reversible. Confirm stops before an irreversible step. Verify is a separate check of the outcome.

Reference architecture, not a published production deployment. The shared contract is the [AWS store-agent architecture](https://www.joinhorizon.co/blog/aws-ai-agents-for-ecommerce-factualminds-2026/#operating-contract).

## FAQ

### When should you NOT auto-issue a B2B quote from an agent?
Do not auto-issue when amount exceeds your Cedar cap, MOQ fails, price-list asOf is stale, the account is on credit hold, terms are nonstandard, or the SKU is restricted. The agent drafts. Humans (or a deterministic CPQ rule you already trust) issue. Skip Agents Classic for net-new builds after July 30, 2026.

### What could go wrong if the quote uses public retail price?
You send a number that is not the contract. The buyer will hold you to it or walk. Same failure as a sales agent without getCustomerPrice. Fail closed; escalate to an associate.

### What could go wrong if submitQuote has no Policy?
The model will email a $80k draft because the user said "we need it today." Prompt text is not an authorization boundary. Put Cedar on Gateway, LOG_ONLY then ENFORCE, and keep high-value submit on a HITL queue.

### Can a buyer JWT approve their own exception terms?
No. Buyers may draft an RFQ for their account. Payment-term changes, MSA language, and over-cap issue stay associate plus finance/legal. Onboarding credit is a separate human gate.

### Is Bedrock the quoting engine?
No. Bedrock is the model. CPQ/OMS is the system of record. AgentCore Harness or Runtime hosts the loop. Gateway plus Cedar gates draft vs submit. No native Shopify connector.

### Should the quote agent take a credit card to "lock the price"?
No. No payment capture in agent tools. A quote is not a checkout. Keep PCI in the systems that already own it.

---

*Source: https://www.joinhorizon.co/blog/ai-quote-agent-b2b-ecommerce-2026/*
