Integrated Quoting workflow
Overview
Amazon Business Integrated Quoting allows you, developers of sourcing module, to integrate your sourcing module with Amazon Business. The integration will help your business customers (1) build and publish Request for Quotation (RFQ), (2) collect and compare information from various suppliers, and (3) select competitive offers.
Integrated Quoting leverages the commerce eXtensible Markup Language (cXML) standard to represent request (QuoteRequest
) and bids response (QuoteMessage
), letting you send a QuoteRequest
and receive a QuoteMessage
for business customers.
This document details the Integrated Quoting workflow and guides you on how to integrate your sourcing module with Amazon Business.
How Integrated Quoting workflow works
Information exchange between the sourcing module and Amazon Business happens over HTTP with Transport Layer Security (TLS 1.3) and authentication of incoming requests.

Figure 1: Integrated Quoting Workflow
Document exchange between Amazon Business and the sourcing module is facilitated by endpoints shared by both parties.
Amazon Business will issue a POST endpoint to the sourcing module. The sourcing module will use this endpoint for QuoteRequest
and StatusUpdateRequest
document exchanges. Amazon Business will authenticate all incoming requests using a digital certificate.
The sourcing module will issue a POST endpoint to Amazon Business. Amazon Business will use this endpoint when sending responses. Amazon Business will send the QuoteMessage
document and regular StatusUpdateRequest
for all changes and events encountered while processing the QuoteRequest
document.
The process involves:
Step 1. The business customer creates a purchase request in their eProcurement system.
The eProcurement system sends this request to the sourcing module.
Step 2. The sourcing module creates an RFQ.
The business customer reviews the request and selects the suppliers who are allowed to bid for the request. After review and selection, the sourcing module sends the QuoteRequest
to Amazon Business. The QuoteRequest
details the quotation request sent by the business customer to the sourcing module.
Step 3. Amazon Business authenticates and authorizes the request.
After authentication and authorization, Amazon Business responds to the sourcing module with cXML StatusUpdateRequest
(RESPONSE_FOR_CREATE_QUOTE_REQUEST) and sends the request to Amazon Business sellers for quoting.
Step 4. Amazon Business sellers submits bid for QuoteRequest
.
Step 5. Amazon Business reviews bids and transforms bids to cXML QuoteMessage
.
Amazon Business sends bids to the sourcing module as QuoteMessage
.
Step 6. The sourcing module receives bids and the customer selects a winning bid.
After selection of the winning bid, the sourcing module sends cXML StatusUpdateRequest
(NOTIFY_QUOTE_OUTCOME) and notifies Amazon Business of the outcome. The sourcing module sends the response details to the eProcurement system.
Step 7. The eProcurement system updates the purchase request with bid offer and waits for purchase approval.
Step 8. After purchase approval in the eProcurement system, a Purchase Order is created.
Step 9. Amazon Business processes the Purchase Order for the business customer.
QuoteRequest
Integrated Quoting workflow includes creating and cancelling QuoteRequest
.
Create QuoteRequest
The business customer creates QuoteRequest
through their eProcurement system. The sourcing module will receive the RFQ event from the eProcurement system. The sourcing module will submit QuoteRequest
to Amazon Business.

Figure 2: Create QuoteRequest
QuoteRequest
supports sending multiple line items in a single quote. Each QuoteItemOut
in a QuoteRequest
represents one line item. The following QuoteRequest
example contains two line items: one request for 1000 digital cameras and one for 100 office chairs.
<cXML xml:lang="en-US" payloadID="123-createRfq@sourcingModule.com" timestamp="2022-05-23T15:27:20-07:00">
<Header>
<From>
<Credential domain="NetworkId">
<Identity>SourcingModuleIdentity</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkId">
<Identity>AmazonBuyer12345</Identity>
<SharedSecret>randomSecurePassword</SharedSecret>
</Credential>
<UserAgent>Sourcing Module 1.0</UserAgent>
</Sender>
</Header>
<Request>
<QuoteRequest>
<QuoteRequestHeader requestID=""requestDate="2022-05-23T15:27:21-07:00"
type="new" openDate="2022-05-23T15:27:21-07:00" closeDate="2022-05-30T15:27:21-07:00" currency="USD" xml:lang="en-US" quoteReceivingPreference="winningOnly">
<Name xml:lang="EN">Name of the request</Name>
<Description xml:lang="en-US"> Description of quote request
</Description>
<ShipTo>
<Address isoCountryCode="US" addressID="159">
<Name xml:lang="en">Acme, INC.</Name>
<PostalAddress name="default">
<DeliverTo>Buyer Name</DeliverTo>
<Street>House Number</Street>
<Street>Street</Street>
<City>City</City>
<State>State</State>
<PostalCode>123456</PostalCode>
<Country isoCountryCode="US">United States</Country>
</PostalAddress>
<Email name="default">buyer@acmeinc.com</Email>
</Address>
</ShipTo>
<Extrinsic name="BuyerEmail">buyer@acmeinc.com</Extrinsic>
<Extrinsic name="RequesterEmail">requester@acmeinc.com</Extrinsic>
<Comments xml:lang="en-US">some comment which buyer wants to pass
</Comments>
</QuoteRequestHeader>
<Extrinsic name="ExternalQuoteRequestID"> reqID-6634853691153124390
</Extrinsic>
<QuoteItemOut quantity="1000" lineNumber="1" requestedDeliveryDate="2022-06-23T15:27:21-07:00" itemClassification="material">
<ItemID>
<SupplierPartID>"Amazon Identified Asin"</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">350.0</Money>
</UnitPrice>
<Description xml:lang="en">Digital cameras</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="unspsc">45121504</Classification>
<ManufacturerPartID>ABN-23455634</ManufacturerPartID>
<ManufacturerName>Nikon</ManufacturerName>
</ItemDetail>
</QuoteItemOut>
<QuoteItemOut quantity="100" lineNumber="2" requestedDeliveryDate="2022-06-23T15:27:21-07:00" itemClassification="material">
<ItemID>
<SupplierPartID>"Amazon Identified Asin"</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">15.0</Money>
</UnitPrice>
<Description xml:lang="en">Office chairs</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="unspsc">45121504</Classification>
<ManufacturerPartID>ABN-23455684</ManufacturerPartID>
<ManufacturerName>Amazon Basics</ManufacturerName>
</ItemDetail>
</QuoteItemOut>
</QuoteRequest>
</Request>
</cXML>
QuoteRequest
includes these parameters:
XPath | Description | Required |
---|---|---|
cXML/Header/From/Identity | The identifier for the sourcing module. | Yes |
cXML/Header/To/Identity | The identifier for Amazon Business. | Yes |
cXML/Header/Sender/Credential | The “sourcing credentials” used by Amazon Business when validating if the sourcing module is authorized to send the QuoteRequest on behalf of the business customer. | Yes |
cXML/Request/QuoteRequest/QuoteRequestHeader/@requestDate | The date and time of the QuoteRequest document. | Yes |
cXML/Request/QuoteRequest/QuoteRequestHeader/@openDate | The date the QuoteRequest is open for suppliers to respond. | Yes |
cXML/Request/QuoteRequest/QuoteRequestHeader/@closeDate | The date the QuoteRequest is closed for supplier responses. | Yes |
cXML/Request/QuoteRequest/QuoteRequestHeader/@currency | A three-letter ISO currency code currency for the QuoteRequest and QuoteMessage . | Yes |
cXML/Request/QuoteRequest/QuoteRequestHeader/ShipTo | The ShipTo information for the line item in the QuoteRequest. | Yes |
cXML/Request/QuoteRequest/QuoteRequestHeader/Comments | Sends comments and attachments in the QuoteRequest . | No |
cXML/Request/QuoteRequest/QuoteRequestHeader/Extrinsic[@name='BuyerEmail'] | The buyer’s email address. | Yes |
cXML/Request/QuoteRequest/QuoteRequestHeader/Extrinsic[@name='RequesterEmail'] | The requester’s email address. | Yes |
cXML/Request/QuoteRequest/Extrinsic[@name='ExternalQuoteRequestID'] | Represents external QuoteRequestID . Amazon Business sends this identifier in subsequent status update requests. The sourcing module is responsible to keep this identifier unique. Amazon Business won’t treat this as a unique identifier in case of duplicate requests. | Yes |
cXML/Request/QuoteRequest/QuoteItemOut/@quantity | The number of items. | Yes |
cXML/Request/QuoteRequest/QuoteItemOut/@lineNumber | Line position (counting from 1) of the item in a QuoteRequest . | Yes |
cXML/Request/QuoteRequest/QuoteItemOut/@requestedDeliveryDate | The delivery date requested for the line item. | Yes |
cXML/Request/QuoteRequest/QuoteItemOut/@itemClassification | Specifies whether the current line item is "material" or "service". | No |
cXML/Request/QuoteRequest/QuoteItemOut/ItemDetail/UnitOfMeasure | Describes how the product is packaged or shipped. It must conform with UN and CEFACT Unit of Measure Common Codes. | Yes |
cXML/Request/QuoteRequest/QuoteItemOut/ItemDetail/Classification | A unique 10-character code that designates classification and specialization of an item. | No |
cXML/Request/QuoteRequest/QuoteItemOut/ItemDetail/ManufacturerName | The name of the manufacturer that produced the item. | No |
cXML/Request/QuoteRequest/QuoteItemOut/ItemDetail/ManufacturerPartID | The manufacturer ID that identifies the item. | No |
After source request authentication, Amazon Business will provide a synchronous response with standard HTTP codes.
Here are sample HTTP status codes in the synchronous response.
HTTP Status Code | Message |
---|---|
200 | The request is accepted. |
400 | The request is missing a required parameter or has invalid parameter. |
401 | The request doesn’t contain a valid authorization input or the user account isn't found. |
403 | Indicates that access to the resource is forbidden. Possible reasons include Access Denied, Unauthorized, Expired Token, or Invalid Signature. |
429 | The frequency of requests was greater than allowed. |
Amazon Business will validate if the sourcing module is authorized to send the request on behalf of the business customer. Once the sourcing module is authorized, Amazon Business will send a RESPONSE_FOR_CREATE_QUOTE_REQUEST StatusUpdateRequest
to the sourcing module within 60 minutes of receiving the original QuoteRequest
. The status will indicate if the request was rejected or accepted.
The purpose of the StatusUpdateRequest
is to confirm that Amazon Business has received the QuoteRequest
and the request has passed authentication and authorization. The RESPONSE_FOR_CREATE_QUOTE_REQUEST StatusUpdateRequest
is sent at the quote level to acknowledge all line items contained in the quote. In case of rejections, the StatusUpdateRequest
will provide the details of rejection.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML xml:lang="en-US" payloadID="123-createRfqResponse@amazon.com" timestamp="2022-05-23T15:27:20-07:00">
<Header>
<From>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkId">
<Identity>SourcingModuleIdentity</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkId">
<Identity>AmazonBusinessFromIdentity</Identity>
<SharedSecret>randomSecurePassword</SharedSecret>
</Credential>
<UserAgent>Amazon Business 1.0</UserAgent>
</Sender>
</Header>
<Request>
<StatusUpdateRequest>
<Status code="
<http status code>" text="
<Textual version of the status code>" xml:lang="en-US">
Accepted/Rejected
</Status>
<Extrinsic name="UPDATE_TYPE">RESPONSE_FOR_CREATE_QUOTE_REQUEST</Extrinsic>
<Extrinsic name="RequestID">"amazonQuoteRequestEventIdentifier"</Extrinsic>
<Extrinsic name="ExternalQuoteRequestID">uniqueExternalQuoteRequestId</Extrinsic>
<Extrinsic name="Comments">"Additional comments"</Extrinsic>
</StatusUpdateRequest>
</Request>
</cXML>
StatusUpdateRequest
includes these parameters:
XPath | Description | Required |
---|---|---|
cXML/Header/From/Identity | The identifier for Amazon Business. | Yes |
cXML/Header/To/Identity | The identifier for the sourcing module. | Yes |
cXML/Header/Sender/Credential | The cXML credentials that identify Amazon Business in the sourcing module. | No |
cXML/Request/StatusUpdateRequest/Extrinsic[@name='RequestID'] | Contains the unique identifier shared by Amazon Business to reference QuoteRequest . | Yes |
cXML/Request/StatusUpdateRequest/Extrinsic[@name='ExternalQuoteRequestID'] | Contains the external identifier shared by the sourcing module in CreateQuoteRequest as requestId at xPath cXML/Request/QuoteRequest/Extrins ic[@name='ExternalQuoteRequestId']. | Yes |
cXML/Request/StatusUpdateRequest/Extrinsic[@name='Comments'] | Allows inclusion of additional information on the status message. | No |
cXML/Request/StatusUpdateRequest/Status | Specifies if the request is accepted or rejected. | Yes |
cXML/Request/StatusUpdateRequest/Status/@xml:lang | The language in which the text attribute and element content are written. | Yes |
cXML/Request/StatusUpdateRequest/Status/@code | HTTP status code. | Yes |
cXML/Request/StatusUpdateRequest/Status/@text | The textual version of the status code. | Yes |
cXML/Request/StatusUpdateRequest/Extrinsic[@name='UPDATE_TYPE'] | Specifies the type of StatusUpdate . | Yes |
Amazon Business will process the QuoteRequest
and send the QuoteMessage
, if applicable, to the sourcing module. The QuoteMessage
will contain information about each line item in the QuoteRequest
. Each QuoteItemIn
in a QuoteMessage
represents one line item. The following QuoteMessage
sample contains two line items.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.024/cXML.dtd">
<cXML payloadID="123-sendQuoteMessage@amazon.com" timestamp="2022-05-24T14:37:31-07:00">
<Header>
<From>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
</Credential>
</From>
<To>
<Credential domain="DOMAIN">
<Identity>SourcingModuleIdentity</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
<SharedSecret>randomSecurePassword</SharedSecret>
</Credential>
<UserAgent>Amazon Business 1.0</UserAgent>
</Sender>
</Header>
<Message>
<QuoteMessage>
<QuoteMessageHeader currency="USD" quoteDate="2022-05-23T15:27:21-07:00" quoteID="10000000000000000000003563" type="accept" xml:lang="en_US">
<OrganizationID>
<Credential domain="NetworkID">
<Identity>Amzn02000005132</Identity>
</Credential>
</OrganizationID>
<Total>
<Money currency="USD">491003.6</Money>
</Total>
<QuoteRequestReference requestDate="2022-05-23T16:27:21-07:00" requestID="esi.iq.6634853691153124390" />
<Comments>Some comments</Comments>
</QuoteMessageHeader>
<Extrinsic name="ExternalQuoteRequestID">reqID-</Extrinsic>
<Extrinsic name="quoteExpiryDate">2022-06-18T14:37:31-07:00</Extrinsic>
<QuoteItemIn lineNumber="1" quantity="1000" requestedDeliveryDate="2022-06-23T14:37:31-07:00" type="accept" itemClassification="material">
<Extrinsic name="QuoteExpiryDate">2022-05-30T15:27:21-07:00</Extrinsic>
<ItemID>
<SupplierPartID>B07C2Z21X5</SupplierPartID>
<SupplierPartAuxiliaryID>amzn.esi.qm.11111111-2222-3333-4444-abcdefg12345,2</SupplierPartAuxiliaryID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">477.00</Money>
</UnitPrice>
<Description xml:lang="en">Digital Cameras</Description>
<UnitOfMeasure>Pack</UnitOfMeasure>
<ManufacturerPartID />
<ManufacturerName>Amazon</ManufacturerName>
</ItemDetail>
<Shipping>
<Money currency="USD">240.72</Money>
<Description xml:lang="en_US" />
</Shipping>
<Tax>
<Money currency="USD">9540.44</Money>
<Description xml:lang="en_US" />
</Tax>
<Total>
<Money currency="USD">486780.72</Money>
</Total>
</QuoteItemIn>
<QuoteItemIn lineNumber="2" quantity="100" requestedDeliveryDate="2022-06-23T14:37:31-07:00" type="accept" itemClassification="material">
<Extrinsic name="QuoteExpiryDate">2022-05-30T15:27:21-07:00</Extrinsic>
<ItemID>
<SupplierPartID>B07B7K7N3P</SupplierPartID>
<SupplierPartAuxiliaryID>amzn.esi.qm.11111111-2222-3333-4444-abcdefg12345,1</SupplierPartAuxiliaryID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">39.97</Money>
</UnitPrice>
<Description xml:lang="en">Office Chair</Description>
<UnitOfMeasure>Pack</UnitOfMeasure>
<ManufacturerPartID />
<ManufacturerName>Amazon</ManufacturerName>
</ItemDetail>
<Shipping>
<Money currency="USD">70.00</Money>
<Description xml:lang="en_US" />
</Shipping>
<Tax>
<Money currency="USD">155.88</Money>
<Description xml:lang="en_US" />
</Tax>
<Total>
<Money currency="USD">4222.88</Money>
</Total>
</QuoteItemIn>
</QuoteMessage>
</Message>
</cXML>
QuoteMessage
includes these parameters:
XPath | Description | Required |
---|---|---|
cXML/Header/From/Identity | The identifier for Amazon Business. | Yes |
cXML/Header/To/Identity | The identifier for the sourcing module. | Yes |
cXML/Header/Sender/Credential | The cXML credentials that identify Amazon Business in the sourcing module. | No |
cXML/Message/QuoteMessage/QuoteMessageHeader/@quoteID | Represents QuoteResponseID. | Yes |
cXML/Message/QuoteMessage/QuoteMessageHeader/@currency | A three-letter ISO currency code currency for the QuoteRequest and QuoteMessage. | Yes |
cXML/Message/QuoteMessage/QuoteMessageHeader/@xml:lang | The language for the QuoteRequest and QuoteMessage. | Yes |
cXML/Message/QuoteMessage/QuoteMessageHeader/@type | The type of QuoteMessage. Possible values: accept, reject | Yes |
cXML/Message/QuoteMessage/QuoteMessageHeader/OrganizationID | The unique identification of the supplier. | No |
cXML/Message/QuoteMessage/QuoteMessageHeader/Total | The total amount for the line item in the QuoteMessage. | No |
cXML/Message/QuoteMessage/QuoteMessageHeader/QuoteRequestReference/@requestID | Represents the Amazon Business generated quote request Id which was sent in the quote request asynchronous acknowledgement. | Yes |
cXML/Message/QuoteMessage/QuoteMessageHeader /QuoteRequestReference/@requestDate | The date and time of the QuoteRequest document. | Yes |
cXML/Message/QuoteMessage/QuoteMessageHeader /Comments | Contains comments associated with this QuoteMessage. | No |
cXML/Request/ QuoteMessage/Extrinsic[@name=’quoteExpiryDate’] | Indicates the date, in ISO format, when the quote will expire. | Yes |
cXML/Request/QuoteRequest/Extrinsic[@name=’ExternalQuoteRequestID’] | Represents external QuoteRequestID. Amazon Business sends this identifier in subsequent status update requests. The sourcing module is responsible to keep this identifier unique. Amazon Business won’t treat this as a unique identifier in case of duplicate requests. | Yes |
cXML/Message/QuoteMessage/QuoteItemIn/@type | The type of QuoteMessage. Possible values: accept, reject | Yes |
cXML/Message/QuoteMessage/QuoteItemIn/@lineNumber | Line position (counting from 1) of the item in the QuoteRequest. | Yes |
cXML/Message/QuoteMessage/QuoteItemIn/@requestedDeliveryDate | The delivery date requested for the line item. | Yes |
cXML/Message/QuoteMessage/QuoteItemIn/@itemClassification | Specifies whether the current line item is "material" or "service". | Yes |
cXML/Message/QuoteMessage/QuoteItemIn/ItemID/SupplierPartID | Specifies Amazon Business identified ASIN. | No |
cXML/Message/QuoteMessage/QuoteItemIn/ItemID /SupplierPartAuxiliaryID | Specifies quoteId and lineNumber. | Yes |
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/UnitPrice | The expected price for each unit of the item. | Yes |
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/Description | Describes the item in a textual form. | Yes |
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/UnitOfMeasure | Describes how the product is packaged or shipped. It must conform with UN and CEFACT Unit of Measure Common Codes. | Yes |
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/Classification | A unique 10-character code that designates classification and specialization of an item. | No |
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/ManufacturerName | The name of the manufacturer that produced the item. | No |
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/ManufacturerPartID | The manufacturer ID that identifies the item. | No |
cXML/Request/QuoteRequest/QuoteItemIn/Shipping | Contains shipping costs for the order. | No |
cXML/Request/QuoteRequest/QuoteItemIn/Tax | The amount of tax to pay. | No |
QuoteMessage
with no bids
QuoteMessage
with no bidsAmazon Business will be unable to get bids for the QuoteRequest
when:
- no matching items in catalog
- internal processing fails
- no bids received from Amazon Business sellers
- any of these
QuoteRequest
validations fail:
Field name | Validation | Validation scope |
---|---|---|
RequestOpenDate | Checks whether date is in valid ISO format. | Quote level |
QuoteExpiryDate | Checks whether expiry date is 1) not a date in the past and 2) in valid ISO format. | Quote level |
ExpectedDeliveryDate | Checks whether delivery date is 1) not a date in the past and 2) in valid ISO format. | Quote level |
BuyerCustomerID | Checks whether Buyer has “CAN_PUNCHOUT” permission on the group associated with the QuoteRequest. | Quote Level |
Quantity | Checks whether Quantity contains a valid positive integer. | Line item level |
Item | Checks whether Amazon Business has the requested item. | Line item level |
When these scenarios occur, Amazon Business sends a QuoteMessage
with information about why the quote or line item was rejected.
Quote-level rejection
When an entire QuoteRequest
is rejected due to quote-level issues, the rejection reason is sent in the comments
at the quote level. The following QuoteMessage
example responds to a quote that is rejected because the QuoteRequest
was sent with an invalid deliveryZipCode
value.
<cXML xml:lang="en-US" payloadID="d31e205f-6ebc-44f5-8c15-35047aa2de6a@amazon.com" timestamp="2022-05-27T11:17:12.488Z">
<Header>
<From>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkId">
<Identity>SourcingPlatformIdentity</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
<SharedSecret>AmazonBusiness@1234</SharedSecret>
</Credential>
<UserAgent>Amazon Business 1.0</UserAgent>
</Sender>
</Header>
<Message>
<QuoteMessage>
<QuoteMessageHeader currency="USD" quoteDate="2022-05-27T11:13:25.912009Z" quoteID="amzn.esi.qm.99999999-8888-7777-6666-1a2b3c4d5e6f" type="reject" xml:lang="en_US">
<OrganizationID>
<Credential domain="NetworkID">
<Identity/>
</Credential>
</OrganizationID>
<QuoteRequestReference requestDate="2022-05-17T11:09:56.002Z" requestID="amzn.esi.iq.12399999-8888-7777-6666-1a2b3c4d5e6f"></QuoteRequestReference>
<Comments>Quote request is sent with invalid deliveryZipCode</Comments>
</QuoteMessageHeader>
<Extrinsic name="ExternalQuoteRequestID">7d4ceccc-1cf9-4bd1-bbaa-909eb5923f66</Extrinsic>
</QuoteMessage>
</Message>
</cXML>
QuoteMessage
with no bids for the entire QuoteRequest
includes these parameters:
XPath | Description | Required |
---|---|---|
cXML/Message/QuoteMessage/QuoteMessageHeader/@type | Signifies that there’s no bid in the response. | Yes |
cXML/Message/QuoteMessage/QuoteMessageHeader/Comments | Specifies the reason for sending no bid for QuoteRequest . | Yes |
Item-level rejection
Items in a QuoteRequest
can also be rejected due to issues with individual line items, such as when an item is out of stock, not sold by Amazon, or does not meet required thresholds. For a QuoteRequest
in which one line item is accepted but one line item is rejected, comments are provided at the line item level. The following QuoteMessage
sample contains two line items: one that is accepted, and one that is rejected because Amazon Business does not have the requested item. The rejected item’s QuoteItemIn
contains the rejection reason in the comments
. The accepted item’s QuoteItemIn
contains details about the item, including its unit price, shipping, tax, and subtotal.
<cXML xml:lang="en-US" payloadID="d31e205f-6ebc-44f5-8c15-35047aa2de6a@amazon.com" timestamp="2022-05-27T11:17:12.488Z">
<Header>
<From>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkId">
<Identity>SourcingPlatformIdentity</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
<SharedSecret>AmazonBusiness@1234</SharedSecret>
</Credential>
<UserAgent>Amazon Business 1.0</UserAgent>
</Sender>
</Header>
<Message>
<QuoteMessage>
<QuoteMessageHeader currency="USD" quoteDate="2022-05-27T11:13:25.912009Z" quoteID="amzn.esi.qm.99999999-8888-7777-6666-1a2b3c4d5e6f" type="accept" xml:lang="en_US">
<OrganizationID>
<Credential domain="NetworkID">
<Identity/>
</Credential>
</OrganizationID>
<Total>
<Money currency="USD">36.82</Money>
</Total>
<QuoteRequestReference requestDate="2022-05-17T11:09:56.002Z" requestID="amzn.esi.iq.99999999-8888-7777-6666-1a2b3c4d5e6f"></QuoteRequestReference>
</QuoteMessageHeader>
<Extrinsic name="ExternalQuoteRequestID">7d4ceccc-1cf9-4bd1-bbaa-909eb5923f66</Extrinsic>
<QuoteItemIn lineNumber="1" quantity="1" requestedDeliveryDate="2022-06-22T06:59:59Z" type="reject" itemClassification="material">
<Comments>Amazon Business doesn't have requested item.
</Comments>
</QuoteItemIn>
<QuoteItemIn lineNumber="2" quantity="100" requestedDeliveryDate="2022-06-30T06:59:59Z" type="accept" itemClassification="material">
<Extrinsic name="QuoteExpiryDate">2022-05-30T15:27:21-07:00</Extrinsic>
<ItemID>
<SupplierPartID>B07B7K7N3P</SupplierPartID>
<SupplierPartAuxiliaryID>amzn.esi.qm.99999999-8888-7777-6666-1a2b3c4d5e6f,1</SupplierPartAuxiliaryID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="USD">39.97</Money>
</UnitPrice>
<Description xml:lang="en">Office Chair</Description>
<UnitOfMeasure>Pack</UnitOfMeasure>
<ManufacturerPartID />
<ManufacturerName>Amazon</ManufacturerName>
</ItemDetail>
<Shipping>
<Money currency="USD">70.00</Money>
<Description xml:lang="en_US" />
</Shipping>
<Tax>
<Money currency="USD">155.88</Money>
<Description xml:lang="en_US" />
</Tax>
<Total>
<Money currency="USD">4222.88</Money>
</Total>
</QuoteItemIn>
</QuoteMessage>
</Message>
</cXML>
If all items in a QuoteRequest
are rejected due to line item level issues, the rejection comments are sent at the individual line item level. The following QuoteMessage
sample contains two rejected line items: one is rejected because Amazon Business does not have the requested items, and the other is rejected because the Quantity
value is missing for this item. The QuoteItemIn
for each item contains the rejection reason in the comments
.
<cXML xml:lang="en-US" payloadID="d31e205f-6ebc-44f5-8c15-35047aa2de6a@amazon.com" timestamp="2022-05-27T11:17:12.488Z">
<Header>
<From>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkId">
<Identity>SourcingPlatformIdentity</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
<SharedSecret>AmazonBusiness@1234</SharedSecret>
</Credential>
<UserAgent>Amazon Business 1.0</UserAgent>
</Sender>
</Header>
<Message>
<QuoteMessage>
<QuoteMessageHeader currency="USD" quoteDate="2022-05-27T11:13:25.912009Z" quoteID="amzn.esi.qm.99999999-8888-7777-6666-1a2b3c4d5e6f" type="reject" xml:lang="en_US">
<OrganizationID>
<Credential domain="NetworkID">
<Identity/>
</Credential>
</OrganizationID>
<QuoteRequestReference requestDate="2022-05-17T11:09:56.002Z" requestID="amzn.esi.iq.99999999-8888-7777-6666-1a2b3c4d5e6f"></QuoteRequestReference>
</QuoteMessageHeader>
<Extrinsic name="ExternalQuoteRequestID">7d4ceccc-1cf9-4bd1-bbaa-909eb5923f66</Extrinsic>
<QuoteItemIn lineNumber="1" quantity="1" requestedDeliveryDate="2022-06-15T06:59:59Z" type="reject" itemClassification="material">
<Comments> Amazon Business doesn't have requested item.
</Comments>
</QuoteItemIn>
<QuoteItemIn lineNumber="2" quantity="1" requestedDeliveryDate="2022-06-10T06:59:59Z" type="reject" itemClassification="material">
<Comments> Quantity is missing for this item, hence it cannot be processed.
</Comments>
</QuoteItemIn>
</QuoteMessage>
</Message>
</cXML>
Notify quote outcome
After receiving the QuoteMessage
, the sourcing module will provide synchronous response with standard HTTP codes. Once the bidding process is complete, the sourcing module will notify Amazon Business on the final status of the quote by sending the NOTIFY_QUOTE_OUTCOME StatusUpdateRequest
. The NOTIFY_QUOTE_OUTCOME StatusUpdateRequest
is sent at the line item level. If a quote contains multiple line items, one StatusUpdateRequest
is sent per line item. Each StatusUpdateRequest
is sent as a separate response.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML xml:lang="en-US" payloadID="123-quoteOutcome@sourcingModule.com" timestamp="2022-05-23T15:27:20-07:00">
<Header>
<From>
<Credential domain="NetworkId">
<Identity>SourcingModuleIdentity</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkId">
<Identity>AmazonBuyer12345</Identity>
<SharedSecret>randomSecurePassword</SharedSecret>
</Credential>
<UserAgent>Sourcing Module 1.0</UserAgent>
</Sender>
</Header>
<Request>
<StatusUpdateRequest>
<Extrinsic name="QuoteMessageID"> 10000000000000000000003563
</Extrinsic>
<Extrinsic name="RequestID"> reqID-6634853691153124390 </Extrinsic>
<Extrinsic name="UPDATE_TYPE">NOTIFY_QUOTE_OUTCOME</Extrinsic>
<Status code="<http status code>" text="<Textual version of the status code>" xml:lang="en-US">
Accepted/Rejected
</Status>
<Extrinsic name="Comments"> comments </Extrinsic>
</StatusUpdateRequest>
</Request>
</cXML>
NOTIFY_QUOTE_OUTCOME StatusUpdateRequest
includes these parameters:
XPath | Description | Required |
---|---|---|
cXML/Header/From/Identity | The identifier for the sourcing module. | Yes |
cXML/Header/To/Identity | The identifier for Amazon Business. | Yes |
cXML/Header/Sender/Credential | The “sourcing credentials” used by Amazon Business when validating if the sourcing module is authorized to notify outcome on behalf of the business customer. | Yes |
cXML/Request/StatusUpdateRequest/Extrinsic[@name= 'RequestID'] | Contains the Amazon Business generated quote RequestId to track QuoteRequest . | No |
cXML/Request/StatusUpdateRequest/Extrinsic[@name= 'QuoteMessageID'] | Contains quoteId of the QuoteMessage document. | Yes |
cXML/Request/StatusUpdateRequest/Extrinsic[@name= 'Comments'] | Allows inclusion of additional information on the status message. | No |
cXML/Request/StatusUpdateRequest/Status | Specifies if the request is accepted or rejected. | Yes |
cXML/Request/StatusUpdateRequest/Status/@xml:lang | The language in which the text attribute and element content are written. | Yes |
cXML/Request/StatusUpdateRequest/Status/@code | The HTTP status code. | Yes |
cXML/Request/StatusUpdateRequest/Status/@text | The textual version of the status code. | Yes |
If the business customer accepts the quote, the eProcurement system will send the Purchase Order with selected quote. Amazon Business will process the Purchase Order and place an order on behalf of the business customer.
Cancel QuoteRequest
QuoteRequest
To cancel an existing QuoteRequest
, the business customer will cancel the RFQ event from the sourcing module application. The sourcing module will submit a CANCEL_QUOTE_REQUEST StatusUpdateRequest
to the Amazon Business endpoint. The CANCEL_QUOTE_REQUEST StatusUpdateRequest
is sent at the quote level. Once received, the CANCEL_QUOTE_REQUEST StatusUpdateRequest
cancels all line items within a quote.
Sample CANCEL_QUOTE_REQUEST StatusUpdateRequest
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM
"http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML xml:lang="en-US" payloadID="123-cancelRfq@sourcingModule.com" timestamp="2022-05-23T15:27:20-07:00">
<Header>
<From>
<Credential domain="NetworkId">
<Identity>SourcingModuleIdentity</Identity>
</Credential>
</From>
<To>
<Credential domain="NetworkId">
<Identity>AmazonBusinessIdentity</Identity>
</Credential>
</To>
<Sender>
<Credential domain="NetworkId">
<Identity>AmazonQuoteRequest12345</Identity>
<SharedSecret>randomSecurePassword</SharedSecret>
</Credential>
<UserAgent>Sourcing Module 1.0</UserAgent>
</Sender>
</Header>
<Request>
<StatusUpdateRequest>
<Extrinsic name="RequestID">reqID-6634853691153124390</Extrinsic>
<Extrinsic name="UPDATE_TYPE">CANCEL_QUOTE_REQUEST</Extrinsic>
<Extrinsic name="RequesterEmail">request@email.com</Extrinsic>
<Extrinsic name="Comments">"Additional comments"</Extrinsic>
</StatusUpdateRequest>
</Request>
</cXML>
CANCEL_QUOTE_REQUEST StatusUpdateRequest
includes these parameters:
XPath | Description | Required |
---|---|---|
cXML/Header/From/Identity | The identifier for the sourcing module. | Yes |
cXML/Header/To/Identity | The identifier for Amazon Business. | Yes |
cXML/Header/Sender/Credential | The “integrated quoting credentials” used by Amazon Business when validating if the sourcing module is authorized to send the CANCEL_QUOTE_REQUEST on behalf of the business customer. | Yes |
cXML/Request/StatusUpdateRequest/Extrinsic[@name= 'RequestID'] | Contains the Amazon Business generated quote RequestId . It is used to track QuoteRequests in Amazon Business. | Yes |
cXML/Request/StatusUpdateRequest/Extrinsic[@name= 'RequesterEmail'] | Contains the email of the requestor. | Yes |
cXML/Request/StatusUpdateRequest/Extrinsic[@name= 'Comments'] | Allows inclusion of additional information on the message. | No |
cXML/Request/StatusUpdateRequest/Extrinsic[@name= 'UPDATE_TYPE'] | Specifies the type of StatusUpdate . | Yes |
After source request authentication, Amazon Business will provide a synchronous response with standard HTTP codes.
Amazon Business will validate if the sourcing module is authorized to send the request on behalf of the business customer. Once the sourcing module is authorized, Amazon Business will cancel the RFQ and send a StatusUpdateRequest
to the sourcing module that indicates the RFO cancellation.
Getting started
After setting up the sourcing module, ask your business customers to do these steps:
Step 1. Connect with Amazon Business Customer Advisor.
Amazon Business Customer Advisor will help your business customer create the cXML credentials.
Step 2. Share the cXML credentials.
After creating the cXML credentials, your business customers should share the cXML credentials with your sourcing module. Amazon Business will use these cXML credentials to authorize requests coming from the sourcing module.
Appendices
Appendix 1: Digital certificate, authentication, and authorization
Digital Certificate
You need to procure a digital certificate from a trusted certificate authority (CA) for your sourcing module. Amazon Business uses the digital certificate to validate authentication.
The sourcing module (Client) will obtain a signed certificate by sending a certificate signing request with signed private key and public key to CA. CA sends a signed certificate containing the Client’s public key and signed with CA’s private key to the sourcing module.
Digital certificates expire after a predetermined period of time set by the CA. Before the expiration of the digital certificate, you need to obtain an updated certificate. Ensure that you have the updated certificate on Amazon Business.
Authentication
Amazon Business will use the certificate-based authentication. The sourcing module will send a signed certificate with the request. Amazon Business will use the public certificate, shared at the time of onboarding, to validate the incoming HTTP request and authenticate connection.
Authorization
Incoming requests are authorized using the integrated quoting cXML credentials configured by the business customers with the help of Amazon Business Customer Advisor. These credentials allow the sourcing module to send or cancel the QuoteRequest on behalf of the business customer.
Appendix 2: Types of StatusUpdates
Here are the types of StatusUpdates.
Status Update | Description |
---|---|
NOTIFY_QUOTE_OUTCOME | Use to notify the rewarding status of a quote. |
CANCEL_QUOTE_REQUEST | Use to cancel an existing quote request. |
RESPONSE_FOR_CREATE_QUOTE_REQUEST | Use to acknowledge a new quote request. |
RESPONSE_FOR_CANCEL_QUOTE_REQUEST | Use to acknowledge a cancel request. |
Updated 7 months ago