Once you've configured a PunchOut integration, you can test it in two stages.
Using swagger and cXML, make an api call to setup the PunchOut request. Replace [DOMAIN] with your Kodaris domain and replace [IDENTITY] and [SHARED_SECRET] with your PunchOut credentials.
Endpoint: https://[DOMAIN]/services?urls.primaryName=User%20API#/PunchOut%20API/setupUsingPOST
Payload
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.1.009/cXML.dtd">
<cXML payloadID="[PLACEHOLDER]" timestamp="2022-07-28T07:27:26">
<Header>
<From>
<Credential domain="NetworkID">
<Identity>[IDENTITY]</Identity>
</Credential>
</From>
<To>
<Credential domain="[PLACEHOLDER]">
<Identity>[PLACEHOLDER]</Identity>
</Credential>
</To>
<Sender>
<Credential domain="[PLACEHOLDER]">
<Identity>[IDENTITY]</Identity>
<SharedSecret>[SHARED_SECRET]</SharedSecret>
</Credential>
<UserAgent>[PLACEHOLDER]</UserAgent>
</Sender>
</Header>
<Request deploymentMode="production">
<PunchOutSetupRequest operation="create">
<BuyerCookie>[PLACEHOLDER]</BuyerCookie>
<BrowserFormPost>
<URL>https://example.com/cxml_cart</URL>
</BrowserFormPost>
</PunchOutSetupRequest>
</Request>
</cXML>
Result
If you were successfully authenticated, you will see a StartPage element in the cXML response.
<StartPage>
<URL>[START_PAGE_URL]</URL>
</StartPage>
Copy the [START_PAGE_URL] value, and navigate to the URL in browser. You will be logged in as a customer. Ensure the integration user's username is in the site header.
Next:
Using swagger and cXML, perform an api call to create the order request. Replace [DOMAIN] with your Kodaris domain and replace [IDENTITY] and [SHARED_SECRET] with your PunchOut credentials.
Endpoint: https://[DOMAIN]/services?urls.primaryName=User%20API#/PunchOut%20API/orderUsingPOST
Payload (Two examples are provided)
Payload 1 (OrderRequest-From-[PLACEHOLDER].xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.1.009/cXML.dtd">
<cXML payloadID="[PLACEHOLDER]" timestamp="2022-07-21T07:27:26">
<Header>
<From>
<Credential domain="NetworkID">
<Identity>[IDENTITY]</Identity>
</Credential>
</From>
<To>
<Credential domain="birchstreet.com">
<Identity>[PLACEHOLDER]</Identity>
</Credential>
</To>
<Sender>
<Credential domain="birchstreet.com">
<Identity>[IDENTITY]</Identity>
<SharedSecret>[SHARED_SECRET]</SharedSecret>
</Credential>
<UserAgent>V7</UserAgent>
</Sender>
</Header>
<Request deploymentMode="production">
<OrderRequest>
<OrderRequestHeader orderDate="2022-07-21T07:20:08" orderID="[PLACEHOLDER]" type="new">
<Total>
<Money currency="CAD">0</Money>
</Total>
<ShipTo>
<Address>
<Name xml:lang="en-us">[PLACEHOLDER]</Name>
<PostalAddress>
<DeliverTo>[PLACEHOLDER]</DeliverTo>
<Street>[PLACEHOLDER]</Street>
<City>[PLACEHOLDER]</City>
<State>NB</State>
<PostalCode>E5B 1T7</PostalCode>
<Country isoCountryCode="CA">CA</Country>
</PostalAddress>
<Email>[PLACEHOLDER]</Email>
<Phone name="work">
<TelephoneNumber>
<CountryCode isoCountryCode="">1</CountryCode>
<AreaOrCityCode>506</AreaOrCityCode>
<Number>[PLACEHOLDER]</Number>
</TelephoneNumber>
</Phone>
</Address>
</ShipTo>
<BillTo>
<Address addressID="1089">
<Name xml:lang="en-us">[PLACEHOLDER]</Name>
<PostalAddress>
<DeliverTo>[PLACEHOLDER]</DeliverTo>
<Street>[PLACEHOLDER]</Street>
<City>St. Andrews</City>
<State>NB</State>
<PostalCode>E5B 1T7</PostalCode>
<Country isoCountryCode="CA">CA</Country>
</PostalAddress>
<Phone name="work">
<TelephoneNumber>
<CountryCode isoCountryCode="">1</CountryCode>
<AreaOrCityCode>506</AreaOrCityCode>
<Number>[PLACEHOLDER]</Number>
</TelephoneNumber>
</Phone>
</Address>
</BillTo>
<Shipping>
<Money currency="CAD">0</Money>
<Description xml:lang="en-us" />
</Shipping>
<Tax>
<Money currency="CAD">0</Money>
<Description xml:lang="en-us" />
</Tax>
<Extrinsic name="Cookie">[PLACEHOLDER]</Extrinsic>
<Extrinsic name="SpanNumber">[PLACEHOLDER]</Extrinsic>
<Extrinsic name="Department">Rooms Division</Extrinsic>
</OrderRequestHeader>
<ItemOut quantity="4" lineNumber="1">
<ItemID>
<SupplierPartID>[PLACEHOLDER]</SupplierPartID>
<SupplierPartAuxiliaryID />
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">2.16</Money>
</UnitPrice>
<Description xml:lang="en-us">MOEN 4IN AQUADRAINPLUNGER 6IN HANDLE</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="" />
<Extrinsic name="ItemPickingInstructions" />
<Extrinsic name="OrderPickingInstructions" />
<Extrinsic name="Comments" />
<Extrinsic name="RoutingInstructions" />
<Extrinsic name="InvoicingInstructions" />
<Extrinsic name="RequestedDeliveryDate" />
<Extrinsic name="OrderCustomer" />
</ItemDetail>
<Shipping>
<Money currency="CAD">0</Money>
<Description xml:lang="en-us" />
</Shipping>
</ItemOut>
<ItemOut quantity="1" lineNumber="2">
<ItemID>
<SupplierPartID>400229</SupplierPartID>
<SupplierPartAuxiliaryID />
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">90.23</Money>
</UnitPrice>
<Description xml:lang="en-us">20 X 25 X 2IN PLEATEDAIR FILTER BOX OF 12</Description>
<UnitOfMeasure>BX</UnitOfMeasure>
<Classification domain="" />
<Extrinsic name="ItemPickingInstructions" />
<Extrinsic name="OrderPickingInstructions" />
<Extrinsic name="Comments" />
<Extrinsic name="RoutingInstructions" />
<Extrinsic name="InvoicingInstructions" />
<Extrinsic name="RequestedDeliveryDate" />
<Extrinsic name="OrderCustomer" />
</ItemDetail>
<Shipping>
<Money currency="CAD">0</Money>
<Description xml:lang="en-us" />
</Shipping>
</ItemOut>
</OrderRequest>
</Request>
</cXML>
Payload 2 (OrderRequest-From-Yardi-5041511-0020C.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd>
<cXML payloadID="[PLACEHOLDER]" timestamp="2022-07-19T13:04:03" xml:lang="en-US">
<Header>
<From>
<Credential domain="DUNS">
<Identity>[IDENTITY]</Identity>
</Credential>
</From>
<To>
<Credential domain="DUNS">
<Identity>[PLACEHOLDER]</Identity>
</Credential>
</To>
<Sender>
<Credential domain="DUNS">
<Identity>[IDENTITY]</Identity>
<SharedSecret>[SHARED_SECRET]</SharedSecret>
</Credential>
<UserAgent />
</Sender>
</Header>
<Request>
<OrderRequest>
<OrderRequestHeader orderDate="2022-07-19T00:00:00" orderID="001-3318091" type="new">
<Total>
<Money currency="CAD">1058.15</Money>
</Total>
<ShipTo>
<Address addressID="0020C" isoCountryCode="CA">
<Name xml:lang="en">[PLACEHOLDER]</Name>
<PostalAddress name="default">
<DeliverTo>[PLACEHOLDER]</DeliverTo>
<Street>[PLACEHOLDER]</Street>
<City>Airdrie</City>
<State>AB</State>
<PostalCode>T4A 0T4</PostalCode>
<Country isoCountryCode="CA">CAN</Country>
</PostalAddress>
<Email name="default">[PLACEHOLDER]</Email>
</Address>
</ShipTo>
<BillTo>
<Address addressID="466074" isoCountryCode="CA">
<Name xml:lang="en">[PLACEHOLDER]</Name>
<PostalAddress name="default">
<DeliverTo>[PLACEHOLDER]</DeliverTo>
<Street>[PLACEHOLDER]</Street>
<Street>[PLACEHOLDER]</Street>
<City>GUELPH</City>
<State>ON</State>
<PostalCode>N1H 2S8</PostalCode>
<Country isoCountryCode="CA">CAN</Country>
</PostalAddress>
</Address>
</BillTo>
<Contact role="endUser">
<Name xml:lang="en">[PLACEHOLDER]</Name>
<Email name="default">[PLACEHOLDER]</Email>
</Contact>
</OrderRequestHeader>
<ItemOut lineNumber="1" quantity="4">
<ItemID>
<SupplierPartID>107352</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">6.99</Money>
</UnitPrice>
<Description xml:lang="en">DAP 300ML ALEX FLEXPREMIUM SEALANT WHITE, Mfr=[PLACEHOLDER], SKU=107352</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="2" quantity="1">
<ItemID>
<SupplierPartID>116151</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">77.99</Money>
</UnitPrice>
<Description xml:lang="en">FIDO PET WASTE BAGGIESCASE OF 10, Mfr=H[PLACEHOLDER], SKU=116151</Description>
<UnitOfMeasure>CS</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="3" quantity="1">
<ItemID>
<SupplierPartID>117772</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">19.99</Money>
</UnitPrice>
<Description xml:lang="en">MEDIUM YELLOW LINED LATEX GLOVE PKG OF 12 PR, Mfr=[PLACEHOLDER], SKU...</Description>
<UnitOfMeasure>PK</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="4" quantity="4">
<ItemID>
<SupplierPartID>117796</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">1.59</Money>
</UnitPrice>
<Description xml:lang="en">HEAVY-DUTY SCRUBBINGSPONGE, Mfr=[PLACEHOLDER], SKU=117796</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="5" quantity="1">
<ItemID>
<SupplierPartID>117965</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">69.98</Money>
</UnitPrice>
<Description xml:lang="en">ANGEL SOFT 2 PLY BATHTISSUE CASE OF 40, Mfr=[PLACEHOLDER], SKU=117965</Description>
<UnitOfMeasure>CS</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="6" quantity="1">
<ItemID>
<SupplierPartID>117989</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">51.98</Money>
</UnitPrice>
<Description xml:lang="en">PREFERENCE PERFORATEDROLL TOWEL CASE OF 30, Mfr=[PLACEHOLDER], SKU=1...</Description>
<UnitOfMeasure>CS</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="7" quantity="1">
<ItemID>
<SupplierPartID>151476</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">167.99</Money>
</UnitPrice>
<Description xml:lang="en">MIRACLE CLOTH TOWELSWHITE 16X16IN CS OF 50, Mfr=[PLACEHOLDER], SKU=1...</Description>
<UnitOfMeasure>CS</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="8" quantity="9">
<ItemID>
<SupplierPartID>202411</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">7.99</Money>
</UnitPrice>
<Description xml:lang="en">SPRAYWAY 539 G AEROSOLFOAMING GLASS CLEANER, Mfr=[PLACEHOLDER], SKU=...</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="9" quantity="2">
<ItemID>
<SupplierPartID>202414</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">28.99</Money>
</UnitPrice>
<Description xml:lang="en">33IN SUCTION CUP REACHER/LITTER PICKER, Mfr=[PLACEHOLDER], SKU=202414</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="10" quantity="2">
<ItemID>
<SupplierPartID>203344</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">27.45</Money>
</UnitPrice>
<Description xml:lang="en">42.5X48 BLK SUPRSTRG VALGARBAGE BAGS CASE OF 50, Mfr=[PLACEHOLDER], ...</Description>
<UnitOfMeasure>CS</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="11" quantity="12">
<ItemID>
<SupplierPartID>281203</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">15.99</Money>
</UnitPrice>
<Description xml:lang="en">ALUMINUM REPLACEMENTRANGE HOOD FILTER, Mfr=[PLACEHOLDER], SKU=281203</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="12" quantity="3">
<ItemID>
<SupplierPartID>340802</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">14.99</Money>
</UnitPrice>
<Description xml:lang="en">LED BULB 9.8W A19 4100KPKG OF 6, Mfr=[PLACEHOLDER], SKU=340802</Description>
<UnitOfMeasure>PK</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="13" quantity="2">
<ItemID>
<SupplierPartID>354473</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">10.49</Money>
</UnitPrice>
<Description xml:lang="en">11 OZ GRAPHITE EXTREMEQUICK DRY LUBRICANT, Mfr=[PLACEHOLDER], SKU=35...</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="14" quantity="4">
<ItemID>
<SupplierPartID>416345</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">14.54</Money>
</UnitPrice>
<Description xml:lang="en">ASPEN LOW FLOW SHOWERHEAD 1.75 GPM CHROME, Mfr=[PLACEHOLDER], SKU=41...</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="15" quantity="6">
<ItemID>
<SupplierPartID>501145</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">10.66</Money>
</UnitPrice>
<Description xml:lang="en">CHROME DIECAST TUB SPOUTWITH DIVERTER SLIP ON, Mfr=[PLACEHOLDER], SK...</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="16" quantity="12">
<ItemID>
<SupplierPartID>509373</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">4.39</Money>
</UnitPrice>
<Description xml:lang="en">LED 7W PAR20 40 DEGREEFLOOD 3000K, Mfr=[PLACEHOLDER], SKU=[PLACEHOLDER]</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
</ItemDetail>
</ItemOut>
<ItemOut lineNumber="17" quantity="6">
<ItemID>
<SupplierPartID>829500</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="CAD">3.08</Money>
</UnitPrice>
<Description xml:lang="en">WARDROBE BI-FOLD DOORGUIDE NYLON PKG OF 2, Mfr=[PLACEHOLDER], SKU=[PLACEHOLDER]...</Description>
<UnitOfMeasure>PK</UnitOfMeasure>
</ItemDetail>
</ItemOut>
</OrderRequest>
</Request>
</cXML>
Result
If the order is accepted for processing you will get the following success code.
<Status code="200" text="OK">Success</Status>
Then OrderRequest should now be processed in the background within a few seconds. You can then check if new order appeared in Operations Portal > Orders.
Note: You cannot duplicate an existing (same) order. Same order is identified by OrderRequestHeader.orderID in request and Purchase Order # in the Operations Portal. If it is needed to test same OrderRequest example again you must change OrderRequestHeader.orderID value.