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.
- Test environment is for testing purposes. Start your integration testing and user training in a test environment.
- Production environment is for the live use with other Jakamo companies.
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 OrderResponse) from the Jakamo PO API
- Ability to POST OrderChange (UBL XML) to the Jakamo PO API
- Ability to PUT 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.
There's also detailed section on this in the last chapter of this documentation.
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 environment | HTTP request | Jakamo API endpoint |
---|---|---|
Test environment | POST | https://demo.thejakamo.com/api/order |
Test environment | GET | https://demo.thejakamo.com/api/order/response |
Test environment | PUT | https://demo.thejakamo.com/api/order/{order_id} |
Production environment | POST | https://www.thejakamo.com/api/order |
Production environment | GET | https://www.thejakamo.com/api/order/response |
Production environment | PUT | https://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 code | Response body | Additional information |
---|---|---|
200 OK | Message is successfully posted to Jakamo PO API. | |
400 Bad Request | Authentication 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 Request | No vendor mapping found | Missing mapping in Order/SellerSupplierParty/Party/PartyIdentification/ID. Add missing vendor mapping in Jakamo “Integrations”. |
400 Bad Request | No 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 Request | LineItem missing Quantity | Quantity element is incorrect or missing from Order/OrderLine/LineItem. |
400 Bad Request | Price\PriceAmount is required. | The price element is incorrect or missing from Order/OrderLine/LineItem. |
400 Bad Request | Either Order-, OrderChange- or Status-message is required to | Check the authentication method and credentials |
400 Bad Request | Invalid issue date | Missing issue date. |
400 Bad Request | An 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 Request | Incorrect order data | Missing mandatory element or mandatory information, e.g. missing Order/OrderLine/ID. |
400 Bad Request | No mapping found in partner integration | You 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 Error | A 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: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: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:OrderChange-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: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: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>2.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>2.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>2.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 You want to introduce delivery line split functionality, please contact support@thejakamo.com
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.
LineStatusCode | Order line condition |
---|---|
Open | Order line is not confirmed yet |
Draft | Order line is confirmed as draft ** |
Confirmed | Order line is confirmed as requested |
Confirmed with Changes | Order line is confirmed with changes compared to requested |
Started receiving | One ore more delivery batches for the order line has received |
Received | Order line is already received by you |
Cancelled | Order 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 name | Description |
---|---|
Note | Text. 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. |
EmphasizeOriginalAgreedDetails | Boolean. 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"
The supplier can inform when an 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: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: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 the order, order line, or delivery batch as received, the customer can "close" the order in Jakamo. This prevents the supplier from making any modifications to their confirmation for received parts of the order or marking any delivered information for received parts. The change applies also to the customer party. Once set status to "received" there's no way to open the order again and it's recommended to manage to open the order or order lines in the discussion or to create 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 delivery batches are received, the order line status will be set as Received. If all the order lines of the order are received, the entire order will have the 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 its dedicated endpoint with a referring to the purchase order (purchase order number).
Example 1: Fully receiving order line by receiving all its delivery batches (HTTP PUT)
Leaving all OrderLine\Delivery elements out will make all delivery batches of specified purchase order lines fully received. StatusMessage\EventDate is used as the date of receipt if provided - if not, the 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 a specific delivery batch of order line (HTTP PUT)
Adding OrderLine\Delivery without Delivery\ReceivedQuantity will use the confirmed quantity of the delivery batch to make it fully received. Including the optional ReceivedDate will set the received date of the delivery batch accordingly. ReceivedDate is available in the 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 a specific delivery batch of order line (HTTP PUT)
Including Delivery\ReceivedQuantity will set ReceivedQuantity to the delivery batch accordingly. If the total of ReceivedQuantitys fulfills the confirmed quantity of the delivery batch after addition, the delivery batch is considered fully received. Again, Delivery\ReceivedDate is optional, including ReceivedDate will set the 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 the purchase order number (order id) PURCHASE_ORDER_NUMBER-1281. The buyer company has received the order and wants to mark it as Received in Jakamo. Order contains only one purchase order line (OrderLineID 1). The buyer company posts a message with HTTP PUT to https://www.thejakamo.com/api/order/ORDER-ID endpoint. Change the last part (ORDER-ID) to correspond to 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. 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.
7.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.
7.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.
Didn't you find what you were looking for? Send an email to Jakamo support (support@thejakamo.com) and we will help you.