Skip to main content

Purchase Order API

1. Overview

Jakamo Purchase Order API (PO API) is an XML-based REST API over HTTPS. The PO API is for sending purchase orders to Jakamo and receiving suppliers’ order confirmations back to the ERP via Jakamo. PO API can be used to send purchase orders to multiple supplier companies in Jakamo via one integration.

See the user guide instructions to Orders application on Orders User Guide page.



1.1 Requirements how to get started

Request demo accounts from Jakamo Support Team (support@thejakamo.com) to create a PO integration from your system.

There are two similar Jakamo environments available for you: the test environment and the production environment.

There are a few technical capabilities needed to be able to connect to Jakamo APIs:

  • Basic knowledge of ERP programming and REST APIs
  • Ability to authenticate using the basic authentication method
  • Ability to create a UBL XML mapping for purchase order data
  • Ability to extract order from the ERP and create an Order message (UBL XML)
  • Ability to GET order confirmation data (UBL XML OrderReponse) from the Jakamo PO API
  • Ability to POST OrderChange (UBL XML) to the Jakamo PO API
  • Ability to POST StatusMessage (Received) to the Jakamo PO API
  • Ability to handle Jakamo message queue (PO API queue handling, incoming message handling)
  • Ability to handle error situations – basically reading PO API responses and acting accordingly

1.2 Steps to go to production

The transition from the Jakamo test environment to the Jakamo production environment requires the following actions:

1. Production account establishment in Jakamo

Create the Jakamo production account via the Jakamo registration page. Please ensure that there is only one production account existing for your company in Jakamo (avoid creating a double account).

2. Purchase order integration activation

Purchase order integration activation for the Jakamo production account. Ask Jakamo Support Team (support@thejakamo.com) to activate the PO integration for you in the production environment. After the integration is available in the Jakamo production account, the Integrations page appears in the dropdown menu in the Jakamo user interface. The integrations setting page are available for company admin users.

3. API authentication method

Register OAuth2.0 application or create integration credentials in the Jakamo production account on the “Integrations” page under Integration Credentials. Determine a cryptic username and password. Please ensure using different usernames and passwords in each enabled integration in use.

4. User and company mappings configuration in Jakamo

Define user and company mappings on the Jakamo Integrations page.

5. Message endpoint configuration

Change messages’ endpoint configurations from demo to production (see Jakamo PO API endpoints).

6. Everything is ready!

You can now send orders to your suppliers and you can receive order confirmations from your suppliers through Jakamo.

2. Authorization

Jakamo PO API uses OAuth2.0 or basic authentication as an authentication method. OAuth2.0 is the preferred method. Find step-by-step instructions on how to move from basic authentication to use OAuth2.0.

For basic authentication, the username and password for the API are set inside the Jakamo account in the Integrations settings with the CHANGE CREDENTIALS functionality. If you have multiple integrations enabled towards your Jakamo company account, please use different credentials for each integration.

3. PO API endpoints

Jakamo environmentHTTP requestJakamo API endpoint
Test environmentPOSThttps://demo.thejakamo.com/api/order
Test environmentGEThttps://demo.thejakamo.com/api/order/response
Test environmentPUThttps://demo.thejakamo.com/api/order/{order_id}
Production environmentPOSThttps://www.thejakamo.com/api/order
Production environmentGEThttps://www.thejakamo.com/api/order/response
Production environmentPUThttps://www.thejakamo.com/api/order/{order_id}

4. PO API request response messages

Jakamo Purchase Order API will return the HTTP response status code and in some cases additional information in the response body. Successfully posted message will return HTTP response status code 200 OK. If there is an error and a message is not posted to the API, Jakamo API will return 400 Bad Requests or 500 Internal Server Errors.

The table below presents the most common responses from Jakamo Purchase Order API.

HTTP response status codeResponse bodyAdditional information
200 OKMessage is successfully posted to Jakamo PO API.
400 Bad RequestAuthentication failed.Authentication failed because of an incorrect username or password or incorrect authentication method. Make sure you use the integration credentials defined in Jakamo “Integrations” and basic authentication as an authentication method.
400 Bad RequestNo vendor mapping foundMissing mapping in Order/SellerSupplierParty/Party/PartyIdentification/ID. Add missing vendor mapping in Jakamo “Integrations”.
400 Bad RequestNo buyer contact id found or cannot find user mapping.Missing mapping in Order/BuyerCustomerParty/BuyerContact/ID. Add missing user mapping in Jakamo “Integrations”.
400 Bad RequestLineItem missing QuantityQuantity element is incorrect or missing from Order/OrderLine/LineItem.
400 Bad RequestPrice\PriceAmount is required.The price element is incorrect or missing from Order/OrderLine/LineItem.
400 Bad RequestEither Order-, OrderChange- or Status-message is required toCheck the authentication method and credentials
400 Bad RequestInvalid issue dateMissing issue date.
400 Bad RequestAn order with the provided order number already exists.Order with the order number (Order/ID) is already created for Jakamo. Order can be created to Jakamo only once by using the Order message. To be able to revise the order, use the OrderChange message type instead.
400 Bad RequestIncorrect order dataMissing mandatory element or mandatory information, e.g. missing Order/OrderLine/ID.
400 Bad RequestNo mapping found in partner integrationYou are trying to send order to supplier that haven't mapped your company. Please contact your supplier and request them to add your company to their Jakamo integration mappings
500 Internal Server ErrorA generic error message, is given when no more specific message is suitable. For example, messages do not follow the UBL structure or a mandatory element is missing.

5. Handling incoming message queue

See the general Jakamo API queue handling instructions from incoming message queue handling page.

All incoming messages come through the same endpoint and they can be fetched from the API queue by HTTP GET to the certain endpoint.

The PO API will return messages from the queue one message at a time. Running multiple GET requests would always return the same message if the message is not cleared from the queue. The oldest undeleted message in the queue will be returned first. Incoming messages can be OrderResponse (UBL) and StatusMessage messages.

After processing the incoming message (validate, save it on the disk, parse, import, etc.), the message should be cleared from the queue. All incoming messages contain a value in the “X-Acknowledge-Uri” header. Simply HTTP POST to that address to remove the message from the queue. No message body content is needed when sending a POST request to remove the message from the queue. PO API will return HTTP response code 200 OK and body message <Info>Message cleared from the queue</Info> if your request was correct.

6. Order-to-delivery process in Jakamo

Here is presented the entire order-to-delivery process in Jakamo from a technical perspective. Below can find all the requests explained more in detail with example messages. See a user instructions to Order-to-delivery process on Orders User Guide page.

6.1 Creating a new order

A new order created in the ERP system can be sent to Jakamo by posting the new Order message to Jakamo PO API with an HTTP POST request.

In Jakamo, new order is immediately shared with the supplier and the order will have the status “Waiting for supplier confirmation”.

Example - full PO: Sending a new order to Jakamo (HTTP POST)
<ns:Order xmlns:ns="urn:oasis:names:specification:ubl:schema:xsd:Order-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>Jakamo</cbc:CustomizationID>
<cbc:ID>purchase_order_number-1234</cbc:ID>
<cbc:IssueDate>2023-10-14</cbc:IssueDate>
<cbc:IssueTime>23:00:00</cbc:IssueTime>
<cbc:Note>Additional info</cbc:Note>
<cbc:Note>Additional info row 2</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:CustomerReference>CUSTOMER_REF_1234567890</cbc:CustomerReference>
<!-- Describe the delivery method to AdditionalDocumentReference/ID -->
<cac:AdditionalDocumentReference>
<cbc:ID>Delivery method X</cbc:ID>
<cbc:DocumentTypeCode>ZZZ</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Delivery method</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>SUPPLIER_REFERENCE_1234567890</cbc:ID>
<cbc:DocumentTypeCode>SS</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Supplier reference</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Shipping mark X</cbc:ID>
<cbc:DocumentTypeCode>SM</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Shipping mark</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Goods Label X</cbc:ID>
<cbc:DocumentTypeCode>GLB</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Goods label</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<!-- This is an electronic invoice address! Document descriptions have a specific use in this case. -->
<cbc:ID>003707224808</cbc:ID>
<cbc:DocumentTypeCode>ADE</cbc:DocumentTypeCode>
<cbc:DocumentDescription>test@example.com</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<!-- Purchase order version. -->
<cbc:ID>Version 1</cbc:ID>
<cbc:DocumentTypeCode>PP</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Order version</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:Contract>
<cbc:ID>Contract_ID_1</cbc:ID>
</cac:Contract>
<cac:ProjectReference>
<cbc:ID>PROJECT_REF_1</cbc:ID>
</cac:ProjectReference>
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>erp_id</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Customer Company AB</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>000000</cbc:Postbox>
<cbc:StreetName>Test street 1</cbc:StreetName>
<cbc:CityName>Seinäjoki</cbc:CityName>
<cbc:PostalZone>60100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<!-- Company VAT number -->
<cbc:CompanyID>FI00000000</cbc:CompanyID>
</cac:PartyTaxScheme>
</cac:Party>
<cac:BuyerContact>
<!-- Name not really used, we map the user to our own DB and use the ID only. -->
<cbc:ID>buyer_id</cbc:ID>
<cbc:Name>Bertha Buyer</cbc:Name>
</cac:BuyerContact>
</cac:BuyerCustomerParty>
<cac:SellerSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>vendor_id</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Test Supplier Ltd.</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>131</cbc:Postbox>
<cbc:StreetName/>
<cbc:CityName>KOTKA</cbc:CityName>
<cbc:PostalZone>48601</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:SellerSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>ACCO_1</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Accounting Party Ltd.</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>12345</cbc:Postbox>
<cbc:StreetName/>
<cbc:CityName>Seinäjoki, FINLAND</cbc:CityName>
<cbc:PostalZone>60100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:Delivery>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Postbox/>
<cbc:StreetName>Jakamokatu 2</cbc:StreetName>
<cbc:CityName>Seinäjoki</cbc:CityName>
<cbc:PostalZone>60100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FINLAND</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyIdentification>
<cbc:ID>12345</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Delivery Party Ltd.</cbc:Name> <!-- Add here the
company name for the delivery address
if it is not the same as Jakamo company account name.
Otherwise Jakamo company account name added to delivery address. -->
</cac:PartyName>
</cac:DeliveryParty>
</cac:Delivery>
<cac:DeliveryTerms>
<cbc:ID>FCA</cbc:ID>
<cac:DeliveryLocation>
<cbc:Description>Seinäjoki</cbc:Description>
</cac:DeliveryLocation>
</cac:DeliveryTerms>
<cac:PaymentTerms>
<!-- For some reason this currently works as follows:
Set Note-field as the payment terms on our end if it's provided. Otherwise use ID. -->
<cbc:ID>1</cbc:ID>
<cbc:Note>within 60 days Due net</cbc:Note>
</cac:PaymentTerms>
<cac:OrderLine>
<cbc:Note>Orderline additional info 1</cbc:Note>
<cbc:Note>Orderline additional info 2</cbc:Note>
<cbc:Note>Orderline additional info 3</cbc:Note>
<cac:LineItem>
<!-- This is used as "Line number" on our end. -->
<cbc:ID>1</cbc:ID>
<!-- If quantity is zero, this row will be marked deleted on our end. -->
<cbc:Quantity unitCode="PCE">100</cbc:Quantity>
<!-- LineExtensionAmount is the total NET price. This has a higher priority than the calculated value on our end. -->
<cbc:LineExtensionAmount currencyID="EUR">960</cbc:LineExtensionAmount>
<cac:Delivery>
<!-- Delivery is not required, but it will be saved as an external ID for the delivery -->
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity unitCode="PCE">100</cbc:Quantity>
<!-- Two document references, AEP = Project number, BWN = buyer work number -->
<cac:DocumentReference>
<cbc:ID>PROJECT_NUMBER_1</cbc:ID>
<cbc:DocumentTypeCode>AEP</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:DocumentReference>
<cbc:ID>BUYER_WORK_NUMBER_1</cbc:ID>
<cbc:DocumentTypeCode>BWN</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Postbox/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FINLAND</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<!-- Delivery periods only use end date for now, no use cases with both start and end dates yet. -->
<cac:RequestedDeliveryPeriod>
<cbc:EndDate>2024-01-28</cbc:EndDate>
</cac:RequestedDeliveryPeriod>
</cac:Delivery>
<!-- This is basically for discounts. ChargeIndicator => false is a discount applied to the line item. -->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<!-- MultiplierFactorNumeric is currently the field we are using for the discounts. Means 20% discount. -->
<cbc:MultiplierFactorNumeric>0.2</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">240</cbc:Amount>
</cac:AllowanceCharge>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<!-- Base quantity to which the pricing applies to. In this example, 10 items cost 120 EUR -->
<!-- unitCode can differ, for example 120 euros for 10 meters of pipe. -->
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
<!-- Defaults to 1. This is a multiplier for the item if it's not possible to order a single item, but the pricing is for the single item.
For example: We order a package with 10 x 1 meter pipes. Pricing is for the single meter => PriceAmount = 12, BaseQuantity = 1,
but OrderableUnitFactorRate = 10
-->
<cbc:OrderableUnitFactorRate>1</cbc:OrderableUnitFactorRate>
</cac:Price>
<cac:Item>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<!-- Item identifications for both end -->
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
</cac:SellersItemIdentification>
<cac:ManufacturersItemIdentification>
<cbc:ID>PART_666</cbc:ID>
</cac:ManufacturersItemIdentification>
<!-- Item specification docrefs. GA = Standard, AOL = Work Breakdown Structure, 174 = Drawing number, NWK = network -->
<cac:ItemSpecificationDocumentReference>
<cbc:ID>STANDARD: ISO 4014</cbc:ID>
<cbc:DocumentTypeCode>GA</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>work breakdown: MF-201008-01-02-01-00001</cbc:ID>
<cbc:DocumentTypeCode>AOL</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>Drawing XYZ</cbc:ID>
<cbc:DocumentTypeCode>174</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>NETWORK: 6306052</cbc:ID>
<cbc:DocumentTypeCode>NWK</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<!-- Special case: DocumentTypeCodes with listId="AttributeList" will be saved as key-value-attributes for the item. -->
<cac:ItemSpecificationDocumentReference>
<cbc:ID>1 meter</cbc:ID>
<cbc:DocumentTypeCode listID="AttributeList">LENGTH</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>1kg</cbc:ID>
<cbc:DocumentTypeCode listID="AttributeList">WEIGHT</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>0.3 meters</cbc:ID>
<cbc:DocumentTypeCode listID="AttributeList">DIAMETER</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<!-- Set Item VAT. If not set, the VAT will not be calculated. -->
<cac:ClassifiedTaxCategory>
<cbc:Percent>24</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<!-- Party manufacturing the actual item. -->
<cac:ManufacturerParty>
<cac:PartyIdentification>
<cbc:ID>MANU_1</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Manufacturer Ltd.</cbc:Name>
</cac:PartyName>
</cac:ManufacturerParty>
</cac:Item>
</cac:LineItem>
<!-- Docrefs 315 => contract, 174 => drawing (174 not implemented) -->
<cac:DocumentReference>
<cbc:ID>CONTRACT_REFERENCE_1</cbc:ID>
<cbc:DocumentTypeCode>315</cbc:DocumentTypeCode>
</cac:DocumentReference>
</cac:OrderLine>
</ns:Order>
Example - minimal PO: Sending a new order to Jakamo (HTTP POST)
<ns:Order xmlns:ns="urn:oasis:names:specification:ubl:schema:xsd:Order-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>Jakamo</cbc:CustomizationID>
<cbc:ID>123456-minimal-PO</cbc:ID>
<cbc:IssueDate>2023-10-14</cbc:IssueDate>
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>erp_id_here</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
<cac:BuyerContact>
<cbc:ID>buyer_id</cbc:ID>
</cac:BuyerContact>
</cac:BuyerCustomerParty>
<cac:SellerSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>vendor_number_here</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:SellerSupplierParty>
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>1</cbc:ID>
<cbc:Quantity unitCode="PCE">10</cbc:Quantity>
<cac:Delivery>
<cbc:Quantity unitCode="PCE">70</cbc:Quantity>
<cac:RequestedDeliveryPeriod>
<cbc:EndDate>2024-01-28</cbc:EndDate>
</cac:RequestedDeliveryPeriod>
</cac:Delivery>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">2</cbc:PriceAmount>
</cac:Price>
<cac:Item>
<cbc:Name>HEX HEAD SCREW</cbc:Name>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
</ns:Order>

6.2 Revising the order

The order which already exist in Jakamo can be modified by posting the OrderChange message, which is referring to that existing order, to Jakamo PO API with an HTTP POST request. If order is already received or cancelled in Jakamo, you can not reopen the order in Jakamo by sending OrderChange message to it.

In Jakamo, if the supplier has confirmed the order you are revising, the revised order will then have the status “Waiting for supplier confirmation” if any of the following values differs from the supplier’s order confirmation:

  • Ordered quantity (OrderChange/OrderLine/LineItem/Quantity)
  • Price (OrderChange/OrderLine/LineItem/Price/PriceAmount)
  • Requested delivery date (OrderChange/OrderLine/LineItem/Delivery/RequestedDeliveryPeriod/EndDate)
  • Seller’s item identifier (OrderChange/OrderLine/LineItem/Item/SellersItemIdentification/ID) Only if customer have this identifier check and comparison activated in their integration setting (activated by Jakamo)
Example - full PO: Updating an order already existing in Jakamo (HTTP POST)
<<ns:OrderChange xmlns:ns="urn:oasis:names:specification:ubl:schema:xsd:Order-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>Jakamo</cbc:CustomizationID>
<cbc:ID>purchase_order_number-1234</cbc:ID>
<cbc:IssueDate>2023-12-14</cbc:IssueDate>
<cbc:IssueTime>23:00:00</cbc:IssueTime>
<cbc:Note>Additional info</cbc:Note>
<cbc:Note>Additional info row 2</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:CustomerReference>CUSTOMER_REF_1234567890</cbc:CustomerReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Delivery method X</cbc:ID>
<cbc:DocumentTypeCode>ZZZ</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Delivery method</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>SUPPLIER_REFERENCE_1234567890</cbc:ID>
<cbc:DocumentTypeCode>SS</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Supplier reference</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Shipping mark X</cbc:ID>
<cbc:DocumentTypeCode>SM</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Shipping mark</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Goods Label X</cbc:ID>
<cbc:DocumentTypeCode>GLB</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Goods label</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<!-- This is an electronic invoice address! Document descriptions have a specific use in this case. -->
<cbc:ID>003707224808</cbc:ID>
<cbc:DocumentTypeCode>ADE</cbc:DocumentTypeCode>
<cbc:DocumentDescription>test@example.com</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<!-- Purchase order version. -->
<cbc:ID>Version 1</cbc:ID>
<cbc:DocumentTypeCode>PP</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Order version</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:Contract>
<cbc:ID>Contract_ID_1</cbc:ID>
</cac:Contract>
<cac:ProjectReference>
<cbc:ID>PROJECT_REF_1</cbc:ID>
</cac:ProjectReference>
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>erp_id</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Customer Company AB</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>000000</cbc:Postbox>
<cbc:StreetName>Test street 1</cbc:StreetName>
<cbc:CityName>Seinäjoki</cbc:CityName>
<cbc:PostalZone>60100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<!-- Company VAT number -->
<cbc:CompanyID>FI00000000</cbc:CompanyID>
</cac:PartyTaxScheme>
</cac:Party>
<cac:BuyerContact>
<!-- Name not really used, we map the user to our own DB and use the ID only. -->
<cbc:ID>buyer@example.com</cbc:ID>
<cbc:Name>Bertha Buyer</cbc:Name>
</cac:BuyerContact>
</cac:BuyerCustomerParty>
<cac:SellerSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>vendor_number</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Test Supplier Ltd.</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>131</cbc:Postbox>
<cbc:StreetName/>
<cbc:CityName>KOTKA</cbc:CityName>
<cbc:PostalZone>48601</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:SellerSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>ACCO_1</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Accounting Party Ltd.</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>12345</cbc:Postbox>
<cbc:StreetName/>
<cbc:CityName>Seinäjoki, FINLAND</cbc:CityName>
<cbc:PostalZone>60100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:Delivery>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Postbox/>
<cbc:StreetName>Jakamokatu 2</cbc:StreetName>
<cbc:CityName>Seinäjoki</cbc:CityName>
<cbc:PostalZone>60100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FINLAND</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyIdentification>
<cbc:ID>12345</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Delivery Party Ltd.</cbc:Name>
</cac:PartyName>
</cac:DeliveryParty>
</cac:Delivery>
<cac:DeliveryTerms>
<cbc:ID>FCA</cbc:ID>
<cac:DeliveryLocation>
<cbc:Description>Seinäjoki</cbc:Description>
</cac:DeliveryLocation>
</cac:DeliveryTerms>
<cac:PaymentTerms>
<!-- For some reason this currently works as follows:
Set Note-field as the payment terms on our end if it's provided. Otherwise use ID. -->
<cbc:ID>1</cbc:ID>
<cbc:Note>within 60 days Due net</cbc:Note>
</cac:PaymentTerms>
<cac:OrderLine>
<cbc:Note>Orderline additional info 1</cbc:Note>
<cbc:Note>Orderline additional info 2</cbc:Note>
<cbc:Note>Orderline additional info 3</cbc:Note>
<cac:LineItem>
<!-- This is used as "Line number" on our end. -->
<cbc:ID>1</cbc:ID>
<!-- If quantity is zero, this row will be marked deleted on our end. -->
<cbc:Quantity unitCode="PCE">200</cbc:Quantity>
<!-- LineExtensionAmount is the total NET price. This has a higher priority than the calculated value on our end. -->
<cbc:LineExtensionAmount currencyID="EUR">960</cbc:LineExtensionAmount>
<cac:Delivery>
<!-- Delivery is not required, but it will be saved as an external ID for the delivery -->
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity unitCode="PCE">200</cbc:Quantity>
<!-- Two document references, AEP = Project number, BWN = buyer work number -->
<cac:DocumentReference>
<cbc:ID>PROJECT_NUMBER_1</cbc:ID>
<cbc:DocumentTypeCode>AEP</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:DocumentReference>
<cbc:ID>BUYER_WORK_NUMBER_1</cbc:ID>
<cbc:DocumentTypeCode>BWN</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Postbox/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FINLAND</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<!-- Delivery periods only use end date for now, no use cases with both start and end dates yet. -->
<cac:RequestedDeliveryPeriod>
<cbc:EndDate>2024-01-28</cbc:EndDate>
</cac:RequestedDeliveryPeriod>
</cac:Delivery>
<!-- This is basically for discounts. ChargeIndicator => false is a discount applied to the line item. -->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<!-- MultiplierFactorNumeric is currently the field we are using for the discounts. Means 20% discount. -->
<cbc:MultiplierFactorNumeric>0.2</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">240</cbc:Amount>
</cac:AllowanceCharge>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<!-- Base quantity to which the pricing applies to. In this example, 10 items cost 120 EUR -->
<!-- unitCode can differ, for example 120 euros for 10 meters of pipe. -->
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
<!-- Defaults to 1. This is a multiplier for the item if it's not possible to order a single item, but the pricing is for the single item.
For example: We order a package with 10 x 1 meter pipes. Pricing is for the single meter => PriceAmount = 12, BaseQuantity = 1,
but OrderableUnitFactorRate = 10
-->
<cbc:OrderableUnitFactorRate>1</cbc:OrderableUnitFactorRate>
</cac:Price>
<cac:Item>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<!-- Item identifications for both end -->
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
</cac:SellersItemIdentification>
<cac:ManufacturersItemIdentification>
<cbc:ID>PART_666</cbc:ID>
</cac:ManufacturersItemIdentification>
<!-- Item specification docrefs. GA = Standard, AOL = Work Breakdown Structure, 174 = Drawing number, NWK = network -->
<cac:ItemSpecificationDocumentReference>
<cbc:ID>STANDARD: ISO 4014</cbc:ID>
<cbc:DocumentTypeCode>GA</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>work breakdown: MF-201008-01-02-01-00001</cbc:ID>
<cbc:DocumentTypeCode>AOL</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>Drawing XYZ</cbc:ID>
<cbc:DocumentTypeCode>174</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>NETWORK: 6306052</cbc:ID>
<cbc:DocumentTypeCode>NWK</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<!-- Special case: DocumentTypeCodes with listId="AttributeList" will be saved as key-value-attributes for the item. -->
<cac:ItemSpecificationDocumentReference>
<cbc:ID>1 meter</cbc:ID>
<cbc:DocumentTypeCode listID="AttributeList">LENGTH</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>1kg</cbc:ID>
<cbc:DocumentTypeCode listID="AttributeList">WEIGHT</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>0.3 meters</cbc:ID>
<cbc:DocumentTypeCode listID="AttributeList">DIAMETER</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<!-- Set Item VAT. If not set, the VAT will not be calculated. -->
<cac:ClassifiedTaxCategory>
<cbc:Percent>24</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<!-- Party manufacturing the actual item. -->
<cac:ManufacturerParty>
<cac:PartyIdentification>
<cbc:ID>MANU_1</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Manufacturer Ltd.</cbc:Name>
</cac:PartyName>
</cac:ManufacturerParty>
</cac:Item>
</cac:LineItem>
<!-- Docrefs 315 => contract, 174 => drawing (174 not implemented) -->
<cac:DocumentReference>
<cbc:ID>CONTRACT_REFERENCE_1</cbc:ID>
<cbc:DocumentTypeCode>315</cbc:DocumentTypeCode>
</cac:DocumentReference>
</cac:OrderLine>
</ns:OrderChange>

6.3 Order confirmation

Order can be confirmed as requested by the supplier or supplier can propose changes. Changes means differences in ordered and confirmed quantities, ordered and confirmed prices, and requested and confirmed delivery time. Also, if additional comparison setting is on, also Identifier (SellersItemIdentification) can be difference.

6.3.1 Order confirmed partially

The supplier can confirm order partially. This means that they can leave order line or lines out of their confirmation. This is a basic functionality in Jakamo and it can be done in the order confirmation form in the UI and via SO integration if supplier has it enabled towards Jakamo. If supplier leaves line or lines unconfirmed, these lines will return in the OrderResponse message with an empty quantity, price and delivery date values and with LineStatusCode “Open”.

Order can be confirmed partially also by marking order confirmation lines as a Draft. This allows supplier to confirm order line or lines as a draft. It means that the confirmation is done with preliminary values and will be confirmed later on with more exact values. Confirming line or lines as a Draft will return LineStatusCode “Draft” for that order line in the OrderResponse. This is a separate PO integration setting which is set off as a default.

Example: Get partially confirmed OrderResponse (HTTP GET)
<OrderResponse xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2 ..\xsd\maindoc\UBL-OrderResponse-2.1.xsd">
<cbc:UBLVersionID>1</cbc:UBLVersionID>
<cbc:CustomizationID>1</cbc:CustomizationID>
<cbc:ID>3798422</cbc:ID>
<cbc:IssueDate>2023-03-01</cbc:IssueDate>
<cbc:IssueTime/>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:Note/>
<cac:OrderReference>
<cbc:ID>purchase_order_number-1234</cbc:ID>
</cac:OrderReference>
<cac:SellerSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="" schemeAgencyID="92">supplier_id</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:SellerSupplierParty>
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="" schemeAgencyID="92">erp_id</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:BuyerCustomerParty>
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
</cac:Price>
<cbc:LineStatusCode>Open</cbc:LineStatusCode>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity/>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate/>
<cbc:EndDate/>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Item>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>2</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
</cac:Price>
<cbc:LineStatusCode>Confirmed</cbc:LineStatusCode>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate>2023-01-28 00:00:00</cbc:StartDate>
<cbc:EndDate>2023-01-28 00:00:00</cbc:EndDate>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Item>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
<cbc:ExtendedID/>
</cac:SellersItemIdentification>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
</OrderResponse>

6.3.2 Order confirmed as requested

Supplier can confirm the order as requested in the purchase order. In Jakamo, order will have the status “Confirmed” after all the ordered and confirmed values matches. This means ordered and confirmed quantity, price in the order and confirmed price, and requested and confirmed delivery date. If additional Identifier comparison setting is on, also buyer’s SellersItemIdentication and supplier’s SellersItemIdentification should match.

Example: Get confirmed OrderResponse (HTTP GET)
<OrderResponse xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2 ..\xsd\maindoc\UBL-OrderResponse-2.1.xsd">
<cbc:UBLVersionID>1</cbc:UBLVersionID>
<cbc:CustomizationID>1</cbc:CustomizationID>
<cbc:ID>4848484</cbc:ID>
<cbc:IssueDate>2023-03-01</cbc:IssueDate>
<cbc:IssueTime/>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:Note/>
<cac:OrderReference>
<cbc:ID>purchase_order_number-1234</cbc:ID>
</cac:OrderReference>
<cac:SellerSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="" schemeAgencyID="92">supplier_id</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:SellerSupplierParty>
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="" schemeAgencyID="92">erp_id</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:BuyerCustomerParty>
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
</cac:Price>
<cbc:LineStatusCode>Confirmed</cbc:LineStatusCode>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate>2023-01-28 00:00:00</cbc:StartDate>
<cbc:EndDate>2023-01-28 00:00:00</cbc:EndDate>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Item>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
<cbc:ExtendedID/>
</cac:SellersItemIdentification>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>2</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
</cac:Price>
<cbc:LineStatusCode>Confirmed</cbc:LineStatusCode>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate>2023-01-28 00:00:00</cbc:StartDate>
<cbc:EndDate>2023-01-28 00:00:00</cbc:EndDate>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Item>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
<cbc:ExtendedID/>
</cac:SellersItemIdentification>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
</OrderResponse>

6.3.3 Order confirmed with changes

Supplier can confirm the order with changes compared to the requested in the purchase order. If confirmed values differs from the ordered values, order is “Waiting for customer action” in Jakamo. Customer need to approve or reject the proposed changes.

Example: Get confirmed with changes OrderResponse (HTTP GET)
<OrderResponse xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2 ..\xsd\maindoc\UBL-OrderResponse-2.1.xsd">
<cbc:UBLVersionID>1</cbc:UBLVersionID>
<cbc:CustomizationID>1</cbc:CustomizationID>
<cbc:ID>33432425</cbc:ID>
<cbc:IssueDate>2023-03-01</cbc:IssueDate>
<cbc:IssueTime/>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:Note/>
<cac:OrderReference>
<cbc:ID>purchase_order_number-1234</cbc:ID>
</cac:OrderReference>
<cac:SellerSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="" schemeAgencyID="92">supplier_id</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:SellerSupplierParty>
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="" schemeAgencyID="92">erp_id</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:BuyerCustomerParty>
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
</cac:Price>
<cbc:LineStatusCode>Confirmed with changes</cbc:LineStatusCode>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate>2023-03-29 00:00:00</cbc:StartDate>
<cbc:EndDate>2023-03-29 00:00:00</cbc:EndDate>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Item>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
<cbc:ExtendedID/>
</cac:SellersItemIdentification>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>2</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">500</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
</cac:Price>
<cbc:LineStatusCode>Confirmed with changes</cbc:LineStatusCode>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate>2023-01-28 00:00:00</cbc:StartDate>
<cbc:EndDate>2023-01-28 00:00:00</cbc:EndDate>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Item>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
<cbc:ExtendedID/>
</cac:SellersItemIdentification>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
</OrderResponse>

6.3.4 Order confirmed with changes (new delivery batches)

By default, the supplier does not have the ability to add new delivery batches to the order line. The supplier can only confirm the delivery batches originally included by the customer. Another option is that customer can allow suppliers to add new delivery batches with additional integration setting activated by Jakamo. Communicating the order delivery schedule to the customer can be more standardized by allowing suppliers independently add new delivery schedules to the order line.

If the customer has granted their suppliers an autorization to add new delivery batches to the order line during order confirmation, new delivery batches are included in the OrderResponse message as new delivery elements with unique ID numbers. The batch numbering for added delivery batches is sequential numbering generated by Jakamo, where after the original batch identifier, where a period . is followed by numbers sequentially starting from 1, 2, 3, and so forth.

For example, identifiers for two new delivery batches added by the supplier can be DELIVERY_ID_1.1 and DELIVERY_ID_1.2 if original delivery batch ID is DELIVERY_ID_1.

Example: Get confirmed with changes with new deliveries with OrderResponse (HTTP GET)
<OrderResponse xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2 ..\xsd\maindoc\UBL-OrderResponse-2.1.xsd">
<cbc:UBLVersionID>1</cbc:UBLVersionID>
<cbc:CustomizationID>1</cbc:CustomizationID>
<cbc:ID>27395</cbc:ID>
<cbc:IssueDate>2023-03-01</cbc:IssueDate>
<cbc:IssueTime/>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:Note/>
<cac:OrderReference>
<cbc:ID>purchase_order_number-1234</cbc:ID>
</cac:OrderReference>
<cac:SellerSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="" schemeAgencyID="92">supplier_id</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:SellerSupplierParty>
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="" schemeAgencyID="92">erp_id</cbc:ID>
</cac:PartyIdentification>
</cac:Party>
</cac:BuyerCustomerParty>
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
</cac:Price>
<cbc:LineStatusCode>Confirmed with changes</cbc:LineStatusCode>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity>33</cbc:Quantity>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate>2023-01-28 00:00:00</cbc:StartDate>
<cbc:EndDate>2023-01-28 00:00:00</cbc:EndDate>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1.1</cbc:ID>
<cbc:Quantity>33</cbc:Quantity>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate>2023-03-31 00:00:00</cbc:StartDate>
<cbc:EndDate>2023-03-31 00:00:00</cbc:EndDate>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1.2</cbc:ID>
<cbc:Quantity>34</cbc:Quantity>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate>2023-04-15 00:00:00</cbc:StartDate>
<cbc:EndDate>2023-04-15 00:00:00</cbc:EndDate>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Item>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
<cbc:ExtendedID/>
</cac:SellersItemIdentification>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>2</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
</cac:Price>
<cbc:LineStatusCode>Confirmed</cbc:LineStatusCode>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity>100</cbc:Quantity>
<cac:PromisedDeliveryPeriod>
<cbc:StartDate>2023-01-28 00:00:00</cbc:StartDate>
<cbc:EndDate>2023-01-28 00:00:00</cbc:EndDate>
</cac:PromisedDeliveryPeriod>
<cac:AdditionalDocumentReference>
<cbc:ID>Open</cbc:ID>
<cbc:DocumentTypeCode>JDS</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Floor/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:BuildingName/>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FI</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Item>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
<cbc:ExtendedID/>
</cac:SellersItemIdentification>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
</OrderResponse>

6.4 Retrieving order confirmation

Supplier can confirm the order in Jakamo user interface or via sales order integration (if they have integration towards Jakamo in use). Jakamo will generate the OrderResponse message to the PO API queue, which means that from the customer’s point of view, it is technically irrelevant how the confirmation was made by the supplier.

New OrderResponse message can be retrieved from the Jakamo PO API queue with an HTTP GET request. PO API incoming message queue will return the oldest message from the queue, see more information about the PO API queue handling from the chapter 5. Handling incoming message queue.

A. Only pass confirmed orders to the response queue from Jakamo

If order confirmations cannot be processed within the customer's own systems, processing (acception or rejection) can also be carried out within the Jakamo user interface. Separate integration setting activated by Jakamo will block all OrderResponses until all the order lines are confirmed as requested in Jakamo. This can be useful if comparing requested and confirmed values cannot be done inside ERP or integration connector.

B. Utilize LineStatusCodes on OrderResponse message

All the OrderResponses can be generated immediatelty to the response queue. The handling process for each order line can be configured based on the LineStatusCode of the order line. For example, you may read in only “Confirmed” order lines to your system.

LineStatusCodeOrder line condition
OpenOrder line is not confirmed yet
DraftOrder line is confirmed as draft **
ConfirmedOrder line is confirmed as requested
Confirmed with ChangesOrder line is confirmed with changes compared to requested
Started receivingOne ore more delivery batches for the order line has received
ReceivedOrder line is already received by you
CancelledOrder line is cancelled by you or by supplier

** LineStatusCode Draft is available only if customer has allowed this status to be used, i.e allowed suppliers to mark confirmed row as draft. As a default, Draft status is not in use, but needs to activate by Jakamo.

6.5 Accepting or rejecting the order confirmation

If the supplier's confirmation differs from the customer's order, the order confirmation must be approved or rejected by the customer. Deviations in the order confirmation can be managed and approved or rejected using either the Jakamo's user interface or an external system (e.g., ERP). The decision (approval or rejection) can be indicated through an OrderChange message or via a simple confirmation. You may choose the method that best suits your preference.

6.5.1 Approving or rejecting order confirmation in the Jakamo UI

If customer accept or reject supplier's order confirmation (if there has been proposed changes compared to ordered values), Jakamo can holding back the entire order response message until all the lines are accepted in Jakamo and have status “Confirmed”. This means that when OrderResponse is retrieved from Jakamo API queue, all the lines are already accepted by the customer company and have accepted values on the order lines.

It is also possible to have additional OrderResponse message generated to PO API queue when customer do the final approval in Jakamo UI. This is an additional integration setting.

6.5.2 Approving or rejecting order confirmation in the external system

All the OrderResponses can be retrieved from the PO API queue and handle in the external system, typically in the ERP. If the values in OrderResponse can be approved, confirmation can be approved by sending OrderChange message with approved values in the message. This will update order status in Jakamo as “Confirmed”. If only some of the lines are approved, OrderChange message may contain confirmed values only for those approved lines and ordered values on the “rejected” lines. This will change the order status “Waiting for supplier confirmation” in Jakamo and supplier need to do re-confirmation.

6.5.3 Simple confirmation (accepting the supplier’s proposed changes)

Customer can also use the simply confirmation to be able to approve the changes on the supplier’s order confirmation. OrderResponse contains Jakamo-Confirm-Url in the OrderResponse message headers. Changes can be approved by customer and order updated to be “Confirmed” in Jakamo by doing HTTP POST to that Jakamo-Confirm-Url address. This will update the order status to be “Confirmed” and update the order line values to match supplier’s confirmed values.

Simple confirmation request also accepts parameters, given in message body. The following table lists available parameters.

Parameter nameDescription
NoteText. Text given as a Note parameter will appear as an addition to the usual automatically created order confirmation comment in comments section of the order.
EmphasizeOriginalAgreedDetailsBoolean. With this parameter, you may express that setting the requested values to match supplier's confirmed values is a mere technicality in order to acknowledge that you have received that information, but you would like to emphasize what was originally agreed. Currently, this has the effect of changing the display of requested delivery date to the display of original confirmed delivery date of delivery batches in order view. In subsequent requests, this can be set to false by explicitly giving false as value. If this is empty or omitted, this will keep it's previous value.

6.6 Retrieving status message "Delivered"

Supplier can infom when order or order line is delivered by marking order or order line as "Delivered" in Jakamo UI or by sending "Delivered" StatusMessage to Jakamo. This will update order or order line status in Jakamo as "Delivered".

Example: Retrieving "Delivered" status information from Jakamo (HTTP GET)
<StatusMessage>
<OrderID>purchase_order_number-1234</OrderID>
<Status>Delivered</Status>
<RealDeliveryDate>2023-01-25</RealDeliveryDate>
<TrackingNumber>123456789</TrackingNumber>
<BuyerCustomerID>erp_id</BuyerCustomerID>
<SellerSupplierID>vendor_id</SellerSupplierID>
<OrderLine>
<OrderLineID>1</OrderLineID>
<Delivery>
<DeliveryID>DELIVERY_ID_1</DeliveryID>
<RealDeliveryDate>2023-01-25</RealDeliveryDate>
<TrackingNumber></TrackingNumber>
</Delivery>
<RealDeliveryDate>2023-01-25</RealDeliveryDate>
</OrderLine>
</StatusMessage>

6.7 Empty queue

If the PO API queue is empty, the Jakamo PO API will return a status 200 OK and body message No more messages available if there are no order confirmations or status messages available.

6.8 Cancellation of the order or order line

Customer can cancel the entire order, or one or several order lines.

6.8.1 Cancelling the entire order

Customer can cancel the entire order. Technically, there are two different ways how to do the cancellation:

A. By sending StatusMessage “Cancelled” to the order by sending the message to the Jakamo PO API with an HTTP PUT request.

Example A: Cancelling the order with "Cancelled" StatusMessage (HTTP PUT)
      <StatusMessage>
<OrderID>purchase_order_number-1234</OrderID> <!-- CHANGE THIS TO TEST: Order id -->
<Status>Cancelled</Status>
</StatusMessage>

B. By including LineStatusCode “Cancelled” to each order line that order contains in the OrderChange message.

Example B: Cancelling the order with "Cancelled" LineStatusCode with each order line (HTTP POST)
<ns:OrderChange xmlns:ns="urn:oasis:names:specification:ubl:schema:xsd:Order-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>Jakamo</cbc:CustomizationID>
<cbc:ID>purchase_order_number-1234</cbc:ID>
<cbc:IssueDate>2023-01-14</cbc:IssueDate>
<cbc:IssueTime>23:00:00</cbc:IssueTime>
<cbc:Note>Additional info</cbc:Note>
<cbc:Note>Additional info row 2</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:CustomerReference>CUSTOMER_REF_1234567890</cbc:CustomerReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Delivery method X</cbc:ID>
<cbc:DocumentTypeCode>ZZZ</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Delivery method</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>SUPPLIER_REFERENCE_1234567890</cbc:ID>
<cbc:DocumentTypeCode>SS</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Supplier reference</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Shipping mark X</cbc:ID>
<cbc:DocumentTypeCode>SM</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Shipping mark</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Goods Label X</cbc:ID>
<cbc:DocumentTypeCode>GLB</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Goods label</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<!-- This is an electronic invoice address! Document descriptions have a specific use in this case. -->
<cbc:ID>003707224808</cbc:ID>
<cbc:DocumentTypeCode>ADE</cbc:DocumentTypeCode>
<cbc:DocumentDescription>test@example.com</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<!-- Purchase order version. -->
<cbc:ID>Version 1</cbc:ID>
<cbc:DocumentTypeCode>PP</cbc:DocumentTypeCode>
<cbc:DocumentDescription>Order version</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:Contract>
<cbc:ID>Contract_ID_1</cbc:ID>
</cac:Contract>
<cac:ProjectReference>
<cbc:ID>PROJECT_REF_1</cbc:ID>
</cac:ProjectReference>
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>erp_id</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Customer Company AB</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>000000</cbc:Postbox>
<cbc:StreetName>Test street 1</cbc:StreetName>
<cbc:CityName>Seinäjoki</cbc:CityName>
<cbc:PostalZone>60100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<!-- Company VAT number -->
<cbc:CompanyID>FI00000000</cbc:CompanyID>
</cac:PartyTaxScheme>
</cac:Party>
<cac:BuyerContact>
<!-- Name not really used, we map the user to our own DB and use the ID only. -->
<cbc:ID>buyer_id</cbc:ID>
<cbc:Name>Bertha Buyer</cbc:Name>
</cac:BuyerContact>
</cac:BuyerCustomerParty>
<cac:SellerSupplierParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>vendor_number</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Test Supplier Ltd.</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>131</cbc:Postbox>
<cbc:StreetName/>
<cbc:CityName>KOTKA</cbc:CityName>
<cbc:PostalZone>48601</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:SellerSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID>ACCO_1</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Accounting Party Ltd.</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>12345</cbc:Postbox>
<cbc:StreetName/>
<cbc:CityName>Seinäjoki, FINLAND</cbc:CityName>
<cbc:PostalZone>60100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:Delivery>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Postbox/>
<cbc:StreetName>Jakamokatu 2</cbc:StreetName>
<cbc:CityName>Seinäjoki</cbc:CityName>
<cbc:PostalZone>60100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FINLAND</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyIdentification>
<cbc:ID>12345</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Delivery Party Ltd.</cbc:Name>
</cac:PartyName>
</cac:DeliveryParty>
</cac:Delivery>
<cac:DeliveryTerms>
<cbc:ID>FCA</cbc:ID>
<cac:DeliveryLocation>
<cbc:Description>Seinäjoki</cbc:Description>
</cac:DeliveryLocation>
</cac:DeliveryTerms>
<cac:PaymentTerms>
<!-- For some reason this currently works as follows:
Set Note-field as the payment terms on our end if it's provided. Otherwise use ID. -->
<cbc:ID>1</cbc:ID>
<cbc:Note>within 60 days Due net</cbc:Note>
</cac:PaymentTerms>
<cac:OrderLine>
<cbc:Note>Orderline additional info 1</cbc:Note>
<cbc:Note>Orderline additional info 2</cbc:Note>
<cbc:Note>Orderline additional info 3</cbc:Note>
<cac:LineItem>
<!-- This is used as "Line number" on our end. -->
<cbc:ID>1</cbc:ID>
<!-- If quantity is zero, this row will be marked deleted on our end. -->
<cbc:LineStatusCode>Cancelled</cbc:LineStatusCode>
<cbc:Quantity unitCode="PCE">10</cbc:Quantity>
<!-- LineExtensionAmount is the total NET price. This has a higher priority than the calculated value on our end. -->
<cbc:LineExtensionAmount currencyID="EUR">1200</cbc:LineExtensionAmount>
<cac:Delivery>
<!-- Delivery is not required, but it will be saved as an external ID for the delivery -->
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity unitCode="PCE">10</cbc:Quantity>
<!-- Two document references, AEP = Project number, BWN = buyer work number -->
<cac:DocumentReference>
<cbc:ID>PROJECT_NUMBER_1</cbc:ID>
<cbc:DocumentTypeCode>AEP</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:DocumentReference>
<cbc:ID>BUYER_WORK_NUMBER_1</cbc:ID>
<cbc:DocumentTypeCode>BWN</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:DeliveryLocation>
<cac:Address>
<cbc:Postbox/>
<cbc:StreetName>Tamperekatu 5</cbc:StreetName>
<cbc:CityName>Tampere</cbc:CityName>
<cbc:PostalZone>30100</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FI</cbc:IdentificationCode>
<cbc:Name>FINLAND</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<!-- Delivery periods only use end date for now, no use cases with both start and end dates yet. -->
<cac:RequestedDeliveryPeriod>
<cbc:EndDate>2023-01-28</cbc:EndDate>
</cac:RequestedDeliveryPeriod>
</cac:Delivery>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<!-- Base quantity to which the pricing applies to. In this example, 10 items cost 120 EUR -->
<!-- unitCode can differ, for example 120 euros for 10 meters of pipe. -->
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
<!-- Defaults to 1. This is a multiplier for the item if it's not possible to order a single item, but the pricing is for the single item.
For example: We order a package with 10 x 1 meter pipes. Pricing is for the single meter => PriceAmount = 12, BaseQuantity = 1,
but OrderableUnitFactorRate = 10
-->
<cbc:OrderableUnitFactorRate>1</cbc:OrderableUnitFactorRate>
</cac:Price>
<cac:Item>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<!-- Item identifications for both end -->
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
</cac:SellersItemIdentification>
<cac:ManufacturersItemIdentification>
<cbc:ID>PART_666</cbc:ID>
</cac:ManufacturersItemIdentification>
<!-- Item specification docrefs. GA = Standard, AOL = Work Breakdown Structure, 174 = Drawing number, NWK = network -->
<cac:ItemSpecificationDocumentReference>
<cbc:ID>STANDARD: ISO 4014</cbc:ID>
<cbc:DocumentTypeCode>GA</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>work breakdown: MF-201008-01-02-01-00001</cbc:ID>
<cbc:DocumentTypeCode>AOL</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>Drawing XYZ</cbc:ID>
<cbc:DocumentTypeCode>174</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>NETWORK: 6306052</cbc:ID>
<cbc:DocumentTypeCode>NWK</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<!-- Special case: DocumentTypeCodes with listId="AttributeList" will be saved as key-value-attributes for the item. -->
<cac:ItemSpecificationDocumentReference>
<cbc:ID>1 meter</cbc:ID>
<cbc:DocumentTypeCode listID="AttributeList">LENGTH</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>1kg</cbc:ID>
<cbc:DocumentTypeCode listID="AttributeList">WEIGHT</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<cac:ItemSpecificationDocumentReference>
<cbc:ID>0.3 meters</cbc:ID>
<cbc:DocumentTypeCode listID="AttributeList">DIAMETER</cbc:DocumentTypeCode>
</cac:ItemSpecificationDocumentReference>
<!-- Set Item VAT. If not set, the VAT will not be calculated. -->
<cac:ClassifiedTaxCategory>
<cbc:Percent>24</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<!-- Party manufacturing the actual item. -->
<cac:ManufacturerParty>
<cac:PartyIdentification>
<cbc:ID>MANU_1</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Manufacturer Ltd.</cbc:Name>
</cac:PartyName>
</cac:ManufacturerParty>
</cac:Item>
</cac:LineItem>
<!-- Docrefs 315 => contract, 174 => drawing (174 not implemented) -->
<cac:DocumentReference>
<cbc:ID>CONTRACT_REFERENCE_1</cbc:ID>
<cbc:DocumentTypeCode>315</cbc:DocumentTypeCode>
</cac:DocumentReference>
</cac:OrderLine>
</ns:OrderChange>

After order is cancelled in Jakamo, the Jakamo status for the order is “Cancelled”.

6.8.2 Cancelling the order line

The customer can cancel order line or lines from the order. Technically, there are three different ways how to do the cancellation:

A. Order line quantity can be set to 0 (zero) via OrderChange message. If order line quantity and delivery quantity are both 0, an order line will be cancelled in Jakamo.

Example A: Cancelling the order line by setting order line quantities to zero (0) (HTTP POST)
<...
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>1</cbc:ID>
<cbc:Quantity unitCode="PCE">0</cbc:Quantity>
<cbc:LineExtensionAmount currencyID="EUR">1200</cbc:LineExtensionAmount>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity unitCode="PCE">0</cbc:Quantity>
<cac:RequestedDeliveryPeriod>
<cbc:EndDate>2023-01-28</cbc:EndDate>
</cac:RequestedDeliveryPeriod>
</cac:Delivery>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
<cbc:OrderableUnitFactorRate>1</cbc:OrderableUnitFactorRate>
</cac:Price>
<cac:Item>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
</ns:OrderChange>
...

B. Order line can include LineStatusCode “Cancelled” in the OrderChange message. If order line include LineStatusCode “Cancelled”, that order line will be cancelled in Jakamo.

Example B: Cancelling the order line by using LineStatusCode “Cancelled” on order line (HTTP POST)
<...
<cac:OrderLine>
<cac:LineItem>
<cbc:ID>1</cbc:ID>
<cbc:Quantity unitCode="PCE">5</cbc:Quantity>
<cbc:LineStatusCode>Cancelled</cbc:LineStatusCode>
<cbc:LineExtensionAmount currencyID="EUR">1200</cbc:LineExtensionAmount>
<cac:Delivery>
<cbc:ID>DELIVERY_ID_1</cbc:ID>
<cbc:Quantity unitCode="PCE">5</cbc:Quantity>
<cac:RequestedDeliveryPeriod>
<cbc:EndDate>2023-01-28</cbc:EndDate>
</cac:RequestedDeliveryPeriod>
</cac:Delivery>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">120</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="PCE">10</cbc:BaseQuantity>
</cac:Price>
<cac:Item>
<cbc:Description>ISO 4014 - M16x80 - 8.8 tZn</cbc:Description>
<cbc:Name>HEX HEAD SCREW M16x80mm</cbc:Name>
<cac:BuyersItemIdentification>
<cbc:ID>PART12345</cbc:ID>
<cbc:ExtendedID>REVISION_123</cbc:ExtendedID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>PART54321</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:LineItem>
</cac:OrderLine>
</ns:OrderChange>
...

C. The entire order line element can be leave out from the OrderChange message. According to UBL standard, if order line is not include in the OrderChange message, this line is interpreted as cancelled.

6.9 Order rejected by the supplier

Supplier can reject the entire order from the Jakamo UI. There is a functionality “Reject” available in Jakamo order item before supplier has done their confirmation. The rejecting will generate an OrderResponse message to the PO API queue with a LineStatusCode “Cancelled” for each order line in the order. The Jakamo status for the order rejected by the supplier is “Rejected by the supplier”.

If supplier has confirmed the order in Jakamo, order cannot be rejected by the supplier from the UI by using “Reject” functionality. If supplier has to cancel the entire order after order is already confirmed, supplier can confirm the order again (by editing the order confirmation) and setting all order line quantities as 0. This confirmation will propose the cancellation for each order line. This proposal need to be accept or reject by the customer. If customer accept the quantity change, the entire order will be cancelled.

6.10 Sending “Received” information

Customer company can set Received status for:

  • the entire purchase order
  • purchase order line or lines
  • purchase order line's delivery batch or batches

By updating order, order line or delivery batch as received, customer can "close" the order in Jakamo. This prevents supplier to do any modifications to their confirmation for received parts of the order, or marking any delivered information for received parts. The change applies also for the customer party. Once set status to "received" there's no way to open the order again and it's recommended to manage opening the order or order lines in the discussion or creating a new order.

If the StatusMessage is sent to the order line, it will mark the purchase order line in Jakamo as Received. If the StatusMessage is marking one or more delivery batches as received, each of those delivery batches will be marked as Received, and the order line will achieve status Started receiving in Jakamo. If all order line’s delivery batches are received, order line status will set as Received. If all the order lines of the order are received, the entire order will have status Received.

The Received status can be set by putting StatusMessage "Received" via Jakamo PO API to the purchase order. Find different examples of status messages below. Send "Received" StatusMessage with HTTP PUT to it's dedicated endpoint with a referring to the purchase order (purchase order number).

Example 1: Fully receiving order line by receiving all its delivery batches

Leaving all OrderLine\Delivery elements out will make all delivery batches of specified purchase order line fully received. StatusMessage\EventDate is used as date of receipt if provided - if not, current date is used.

<StatusMessage>
<OrderID>purchase_order_number-1234</OrderID>
<Status>Received</Status>
<EventDate>2024-01-29</EventDate>
<OrderLine>
<OrderLineID>1</OrderLineID>
</OrderLine>
</StatusMessage>
Example 2: Fully receiving specific delivery batch of order line

Adding OrderLine\Delivery without Delivery\ReceivedQuantity will use confirmed quantity of the delivery batch to make it fully received. Including optional ReceivedDate will set received date of the delivery batch accordingly. ReceivedDate is available in Jakamo user interface on that delivery batch.

<StatusMessage>
<OrderID>purchase_order_number-1234</OrderID>
<Status>Received</Status>
<EventDate>2024-01-30</EventDate>
<OrderLine>
<OrderLineID>1</OrderLineID>
<Delivery>
<DeliveryID>DELIVERY_ID_1</DeliveryID>
<ReceivedDate>2024-01-30</ReceivedDate>
</Delivery>
</OrderLine>
</StatusMessage>
Example 3: Partially receiving specific delivery batch of order line

Including Delivery\ReceivedQuantity will set ReceivedQuantity to the delivery batch accordingly. If total of ReceivedQuantitys fulfills confirmed quantity of the delivery batch after addition, the delivery batch is considered fully received. Again, Delivery\ReceivedDate is optional, including ReceivedDate will set received date of the delivery batch accordingly.

<StatusMessage>
<OrderID>purchase_order_number-1234</OrderID>
<Status>Received</Status>
<EventDate>2024-02-01</EventDate>
<OrderLine>
<OrderLineID>1</OrderLineID>
<Delivery>
<DeliveryID>DELIVERY_ID_1</DeliveryID>
<ReceivedDate>2024-02-01</ReceivedDate>
<ReceivedQuantity>25</ReceivedQuantity>
</Delivery>
</OrderLine>
</StatusMessage>
Example 4: Case example of goods received message

In this case, the buyer company has sent the order with purchase order number (order id) PURCHASE_ORDER_NUMBER-1281. The buyer company has received the order and want to mark it as Received in Jakamo. Order contains only one purchase order line (OrderLineID 1). Buyer company post message with HTTP PUT to https://www.thejakamo.com/api/order/ORDER-ID endpoint. Change the last part (ORDER-ID) to correspond your purchaser order number.

HTTP PUT to the endpoint https://www.thejakamo.com/api/order/PURCHASE_ORDER_NUMBER-1281

<StatusMessage>
<OrderID>PURCHASE_ORDER_NUMBER-1281</OrderID>
<EventDate>2024-01-01</EventDate>
<Status>Received</Status>
<OrderLine>
<OrderLineID>1</OrderLineID>
</OrderLine>
</StatusMessage>

7. UBL schemas and message mapping

Order message implementation package include Order message mapping form and cardinality, UBL subset documentation for Order, Order message schemas and more XML examples.

OrderResponse message implementation package include OrderResponse message mapping form and cardinality, UBL subset documentation for OrderResponse, OrderResponse message schemas and more XML examples.

8. User and company mappings in the Jakamo integration settings

Mapping configurations to identify buyer and supplier in Jakamo are made in the Jakamo user interface on the Integrations page. Integrations settings are available for you after the integration is activated for you in the Jakamo test environment and Jakamo production environment by Jakamo. See Jakamo's general integration mappings instructions from User Guide.

8.1 User mapping – Map your ERP users to your Jakamo users

ERP users (buyers, purchasers, supplier responsibles) who will create purchase orders via Jakamo must have their personal user accounts in Jakamo. User has to have some identifier (string, email address, username, buyer number…) in the ERP, and that identifier will be transferred in the Order XML data (Order/BuyerCustomerParty/BuyerContact/ID). This ERP identifier must be linked to the Jakamo user so that Jakamo can identify the message sender. The PO integration requires passing this user information in the Order message when making new order or order change.

Create required user mappings on the Integrations page. From that page can be found all the integrations in use. Under the User Strings, click ADD USER and create user mappings between Jakamo users and users in the ERP system. To be able to add a mapping, the user has to have a personal user account in Jakamo.

  • User identifier refers to the identifier string that you send in Order/BuyerCustomerParty/BuyerContact/ID.
  • Jakamo account refers to the users account in Jakamo. Jakamo account dropdown includes the users who has their user accounts established in Jakamo.

DefaultUser can be left unselected. It is not used in purchase order integration.

8.2. Vendor mapping – Map your ERP suppliers to Jakamo companies

A relationship with the supplier company in Jakamo has to be established before any messages can be received or sent via Jakamo. A supplier has to have some identifier (string, for example vendor number) in the ERP, and it will be transferred in the XML data (Order/SellerSupplierParty/Party/PartyIdentification/ID). This ERP identifier must be linked to the Jakamo company so that Jakamo can identify the receiving party.

Create company mappings on the Integrations page. From that page can be found all the integrations in use. Under the Company Strings, click ADD COMPANY and create a mapping between your ERP company (a supplier) and the Jakamo relationship. To be able to add a mapping, the relationship with that company has to exist in Jakamo.

  • Company identifier refers to the identifier string incoming in Order/SellerSupplierParty/Party/PartyIdentification/ID.
  • Jakamo company refers to the supplier account that needs to be mapped to this supplier identifier. Jakamo company dropdown menu include a list of supplier companies your account have relation established in Jakamo.
  • Buyer customer party tags can be determined to separate customer company's different sites while creating the company mapping. See more information on the integrations instruction page on Jakamo User Guide.
Help & Support

Didn't you find what you were looking for? Send an email to Jakamo support (support@thejakamo.com) and we will help you.