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

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

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.

<?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-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:

XPathDescriptionRequired
cXML/Header/From/IdentityThe identifier for the sourcing module.Yes
cXML/Header/To/IdentityThe identifier for Amazon Business.Yes
cXML/Header/Sender/CredentialThe “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/@requestDateThe date and time of the QuoteRequest document.Yes
cXML/Request/QuoteRequest/QuoteRequestHeader/@openDateThe date the QuoteRequest is open for suppliers to respond.Yes
cXML/Request/QuoteRequest/QuoteRequestHeader/@closeDateThe date the QuoteRequest is closed for supplier responses.Yes
cXML/Request/QuoteRequest/QuoteRequestHeader/@currencyA three-letter ISO currency code currency for the QuoteRequest and QuoteMessage.Yes
cXML/Request/QuoteRequest/QuoteRequestHeader/ShipToThe ShipTo information for the line item in the QuoteRequest.Yes
cXML/Request/QuoteRequest/QuoteRequestHeader/CommentsSends 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/@quantityThe number of items.Yes
cXML/Request/QuoteRequest/QuoteItemOut/@lineNumberLine position (counting from 1) of the item in a QuoteRequest.Yes
cXML/Request/QuoteRequest/QuoteItemOut/@requestedDeliveryDateThe delivery date requested for the line item.Yes
cXML/Request/QuoteRequest/QuoteItemOut/@itemClassificationSpecifies whether the current line item is "material" or "service".No
cXML/Request/QuoteRequest/QuoteItemOut/ItemDetail/UnitOfMeasureDescribes 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/ClassificationA unique 10-character code that designates classification and specialization of an item.No
cXML/Request/QuoteRequest/QuoteItemOut/ItemDetail/ManufacturerNameThe name of the manufacturer that produced the item.No
cXML/Request/QuoteRequest/QuoteItemOut/ItemDetail/ManufacturerPartIDThe 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 CodeMessage
200The request is accepted.
400The request is missing a required parameter or has invalid parameter.
401The request doesn’t contain a valid authorization input or the user account isn't found.
403Indicates that access to the resource is forbidden. Possible reasons include Access Denied, Unauthorized, Expired Token, or Invalid Signature.
429The 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:

XPathDescriptionRequired
cXML/Header/From/IdentityThe identifier for Amazon Business.Yes
cXML/Header/To/IdentityThe identifier for the sourcing module.Yes
cXML/Header/Sender/CredentialThe 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/StatusSpecifies if the request is accepted or rejected.Yes
cXML/Request/StatusUpdateRequest/Status/@xml:langThe language in which the text attribute and element content are written.Yes
cXML/Request/StatusUpdateRequest/Status/@codeHTTP status code.Yes
cXML/Request/StatusUpdateRequest/Status/@textThe 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:

XPathDescriptionRequired
cXML/Header/From/IdentityThe identifier for Amazon Business.Yes
cXML/Header/To/IdentityThe identifier for the sourcing module.Yes
cXML/Header/Sender/CredentialThe cXML credentials that identify Amazon Business in the sourcing module.No
cXML/Message/QuoteMessage/QuoteMessageHeader/@quoteIDRepresents QuoteResponseID.Yes
cXML/Message/QuoteMessage/QuoteMessageHeader/@currencyA three-letter ISO currency code currency for the QuoteRequest and QuoteMessage.Yes
cXML/Message/QuoteMessage/QuoteMessageHeader/@xml:langThe language for the QuoteRequest and QuoteMessage.Yes
cXML/Message/QuoteMessage/QuoteMessageHeader/@typeThe type of QuoteMessage. Possible values: accept, rejectYes
cXML/Message/QuoteMessage/QuoteMessageHeader/OrganizationIDThe unique identification of the supplier.No
cXML/Message/QuoteMessage/QuoteMessageHeader/TotalThe total amount for the line item in the QuoteMessage.No
cXML/Message/QuoteMessage/QuoteMessageHeader/QuoteRequestReference/@requestIDRepresents the Amazon Business generated quote request Id which was sent in the quote request asynchronous acknowledgement.Yes
cXML/Message/QuoteMessage/QuoteMessageHeader /QuoteRequestReference/@requestDateThe date and time of the QuoteRequest document.Yes
cXML/Message/QuoteMessage/QuoteMessageHeader /CommentsContains 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/@typeThe type of QuoteMessage. Possible values: accept, rejectYes
cXML/Message/QuoteMessage/QuoteItemIn/@lineNumberLine position (counting from 1) of the item in the QuoteRequest.Yes
cXML/Message/QuoteMessage/QuoteItemIn/@requestedDeliveryDateThe delivery date requested for the line item.Yes
cXML/Message/QuoteMessage/QuoteItemIn/@itemClassificationSpecifies whether the current line item is "material" or "service".Yes
cXML/Message/QuoteMessage/QuoteItemIn/ItemID/SupplierPartIDSpecifies Amazon Business identified ASIN.No
cXML/Message/QuoteMessage/QuoteItemIn/ItemID /SupplierPartAuxiliaryIDSpecifies quoteId and lineNumber.Yes
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/UnitPriceThe expected price for each unit of the item.Yes
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/DescriptionDescribes the item in a textual form.Yes
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/UnitOfMeasureDescribes 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/ClassificationA unique 10-character code that designates classification and specialization of an item.No
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/ManufacturerNameThe name of the manufacturer that produced the item.No
cXML/Request/QuoteRequest/QuoteItemIn/ItemDetail/ManufacturerPartIDThe manufacturer ID that identifies the item.No
cXML/Request/QuoteRequest/QuoteItemIn/ShippingContains shipping costs for the order.No
cXML/Request/QuoteRequest/QuoteItemIn/TaxThe amount of tax to pay.No

QuoteMessage with no bids

Amazon 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 nameValidationValidation scope
RequestOpenDateChecks whether date is in valid ISO format.Quote level
QuoteExpiryDateChecks whether expiry date is 1) not a date in the past and 2) in valid ISO format.Quote level
ExpectedDeliveryDateChecks whether delivery date is 1) not a date in the past and 2) in valid ISO format.Quote level
BuyerCustomerIDChecks whether Buyer has “CAN_PUNCHOUT” permission on the group associated with the QuoteRequest.Quote Level
QuantityChecks whether Quantity contains a valid positive integer.Line item level
ItemChecks 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:

XPathDescriptionRequired
cXML/Message/QuoteMessage/QuoteMessageHeader/@typeSignifies that there’s no bid in the response.Yes
cXML/Message/QuoteMessage/QuoteMessageHeader/CommentsSpecifies 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:

XPathDescriptionRequired
cXML/Header/From/IdentityThe identifier for the sourcing module.Yes
cXML/Header/To/IdentityThe identifier for Amazon Business.Yes
cXML/Header/Sender/CredentialThe “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/StatusSpecifies if the request is accepted or rejected.Yes
cXML/Request/StatusUpdateRequest/Status/@xml:langThe language in which the text attribute and element content are written.Yes
cXML/Request/StatusUpdateRequest/Status/@codeThe HTTP status code.Yes
cXML/Request/StatusUpdateRequest/Status/@textThe 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

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:

XPathDescriptionRequired
cXML/Header/From/IdentityThe identifier for the sourcing module.Yes
cXML/Header/To/IdentityThe identifier for Amazon Business.Yes
cXML/Header/Sender/CredentialThe “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 UpdateDescription
NOTIFY_QUOTE_OUTCOMEUse to notify the rewarding status of a quote.
CANCEL_QUOTE_REQUESTUse to cancel an existing quote request.
RESPONSE_FOR_CREATE_QUOTE_REQUESTUse to acknowledge a new quote request.
RESPONSE_FOR_CANCEL_QUOTE_REQUESTUse to acknowledge a cancel request.

Did this page help you?