Tutorial: Getting Started with Drop Shipping for Webshops

Start using Posti API for your shipping

DropShipping example

Authentication

In order to get started with Posti services, please receive credentials for your business from Posti for the authorized access. Please refer to the Authentication API for the detailed description of the process.

Getting Started

Drop Shipping overview

You can integrate your system with Posti's API in order to use our warehousing and shipping services. You will be able to maintain your own product catalog, download product catalogs from suppliers in Posti's supplier network, view stock balances, create orders and view statuses of your orders and shipments.


Manage warehouses

You can add and manage warehouses information to host product specific stock balance using Glue Admin Tool (recommended) or using Warehouses API. You can use the EDI-code (in Finland OVT) of your company to identify each warehouse. The first four digits are the country code, the next eight digits are the company identification code and the last five digits can be used to identify each warehouse. The last five digits can be omitted, if it is not required to identify multiple warehouses and added later when required.

PUT/v2/warehouses

Authorize supplier to sell products

You can authorize suppliers to sell their products in your webshop by adding a suppliers to your list of warehouses using the Warehouses API or the Glue Admin Tool. Once the supplier has been added to the list of available warehouses, you can see products in supplier's catalog. You can set the warehouse priority to control from which warehouse the goods will be delivered. For instance, you can set priority higher for your own warehouses and lower for suppplier warehouses.

PUT/v2/warehouses

For more detailed information refer to Warehouses API.


Retrieve catalog

Product catalog contains products that supplier has published for your webshop. The supplier provides stock balance for these products.

Once you have authorized a supplier to sell products in your webshop (please refer to Section "Authorize supplier to sell products"), you can retrieve the suppliers product catalog by issuing:

GET/v2/products/all/{warehouseId}
{
    "externalId": "691196000582",
    "name": "Jack's Fishing Gear fishing rod model 123",
    "shortName": "jfg-rod-123",
    "description": {
        "en": "Forged aluminum spool. For left and right handed."
    },
    "EANCode": "59012341234567",
    "supplier": "Jack's Fishing Gear",
    "category": "Fishing/Fishing rods/Open reel fishing rods",
    "measurements": {
        "weight": 75.0,
        "length": 1.75,
        "width": 1.12,
        "height": 1.83,
        "volume": 5.92
    },
    "isFragile": false,
    "hasBestBeforeDate": false,
    "hasWarranty": true,
    "vatPercentage": 24.0,
    "totalPrice": 79.95,
    "currency": "EUR",
    "stockBalance": {
        "totalQty": 8.0,
        "maximumQty": 5.0,
        "warehouseBalance": [{
            "externalWarehouseId": "1234567",
            "quantity": 5.0,
            "totalPrice": 79.95,
            "currency": "EUR"
        },
        {
            "externalWarehouseId": "2345678",
            "quantity": 3.0,
            "totalPrice": 89.95,
            "currency": "EUR"
        }]
    },
    "additionalInfo": {
        "attachments": [{
            "type": "marketing",
            "URI": "www.mypictureoffishingrod.com/picture.png",
            "fileType": "png",
            "fileName": "Product Picture"
        }],
        "comments": [{
            "type": "marketing",
            "value": "Probably the best fishing rod in the world"
        }],
        "classifications": [
		{
            		"type": "Segment Description",
            		"value": "Footwear"
		},
		{
			"type": "Segment Code",
			"value": "63000000"
		},
		{
			"type": "Family Code",
			"value": "63010000"
		},
		{
			"type": "Family Description",
			"value": "Footwear"
		},
		{
			"value": "Class Code",
			"type": "63010100"
		},
		{
			"type": "Class Description",
			"value": "Athletic Footwear"
		},
		{
			"type": "Brick Code",
			"value": "1001070"
		},
		{
			"type": "Brick Description",
			"value": "Athletic Footwear - General Purpose"
		}

        ],
        "productVariationIds":[
           {
              "type":"supplierId",
              "value":"GFK6544256"
           }
        ],
        "dangerousGoodsDetail":{
           "isDangerousGoods":true
        },
        "warrantyDetail":{
           "expiration":"3 years",
           "serialControlled":true
        }
    },
    "specification": [{
        "type": "Technical Info",
        "property": [{
            "type": "weight",
            "value": "0.4",
            "specifier": "kg",
            "languageId": "fi",
            "description": "paino"
        }]
    }]
}

There are also several additional methods for retrieving products (all, single warehouse or unique product(s)). For more detailed information refer to Products API.


Create orders

Place an order from your webstore for the existing products by executing a PUT request to Orders API. Orders will be routed to Posti’s warehouse system or external warehouse systems for shipping. Separate order lines can be routed to different warehouses based on warehouse balance and prioritization. You can set warehouse prioritization and certain splitting details using Glue Admin Tool. In cases where your order could not be routed to any warehouse, an email will be sent to your support email address.

PUT/v2/orders
{
    "externalId" : "123456789",
    "orderDate" : "2017-04-10T12:06:01.000+03:00",
    "references" : [
    	{
		"name" : "PO",
		"value" : "111222333"
	} 
     ],
    "metadata" : {
        "insertDate" : "2017-04-10T05:46:20.922Z",
        "updateDate" : "2017-04-10T05:46:20.922Z",
        "sourceOrganization" : "Webshop name",
        "receiverOrganization" : "Sending warehouse name eg. vendor",
        "language" : "FI",
        "externalUserId" : "003712345678",
        "documentType" : "PurchaseOrder"
    },
    "vendor" : {
        "externalId" : "003712345678",
        "name" : "Webshop name",
        "streetAddress" : "Postintaival 7",
        "postalCode" : "00230",
        "postOffice" : "Helsinki",
        "country" : "FI"
    },
    "sender" : {
        "externalId" : "003723456789",
        "name" : "Name of the company that will be shown as sender in the address label",
        "streetAddress" : "Example street 123",
        "postalCode" : "00100",
        "postOffice" : "Helsinki",
        "country" : "FI"
    },
    "client" : {
        "externalId" : "123456",
        "name" : "Name of the payer",
        "streetAddress" : "Home address 123",
        "postalCode" : "90900",
        "postOffice" : "Kiiminki",
        "country" : "FI"
    },
    "recipient" : {
        "externalId" : "100060",
        "name" : "Name of the recipient",
        "streetAddress" : "Recipient address 5",
        "postalCode" : "01820",
        "postOffice" : "Klaukkala",
        "country" : "FI",
        "telephone" : "04012345678",
        "email" : "firstname.lastname@example.com"
    },
    "deliveryAddress" : {
        "name" : "Recipient firstname\nRecipient lastname\nc/o Pickup point name",
        "streetAddress" : "Pickup point address 1",
        "postalCode" : "00234",
        "postOffice" : "Helsinki",
        "country" : "FI",
        "telephone" : "04012345678",
        "email" : "firstname.lastname@example.com"
    },
    "currency" : "EUR",
    "requestedDeliveryDate" : "2017-04-12T00:00:00.000+02:00",
    "print" : [ 
        {
            "templateId" : "standard",
            "freeText" : []
        }
    ],
	"deliveryOperator" : "Posti",
    "serviceCode" : "2W2103",
    "postiCustomerId" : "12345",
    "rows" : [ 
        {
            "externalId" : "100",
            "externalProductId" : "unique-id-1",
            "productEANCode" : "6419835068484",
            "productDescription" : "Product name shown in delivery note",
            "externalWarehouseId" : "003723456789",
            "quantity" : 3.0,
            "volume" : 0.04,
            "productUnitOfMeasure" : "KPL",
            "print" : {
                "customerProductId" : "Webshop product-id shown in delivery note"
            },
			"deliveryOperator" : "Posti",
			"serviceCode" : "2W2103",
            "additionalServices" : [ 
                {
                    "serviceCode" : "3139",
                    "attributes" : [ 
                        {
                            "name" : "telephone",
                            "value" : "04012345678"
                        }, 
                        {
                            "name" : "email",
                            "value" : "firstname.lastname@example.com"
                        }
                    ]
                }
            ],
            "routingServiceCode" : "3200",
        }
    ]
}
				

Orders API will return a status code 200 to confirm that an order has been successfully placed.


Get order information

Once Posti's or external warehouse has received a notification about the new order, they will pick and collect requested items. They will register a new shipment and create a tracking code and a parcel label. The shipping information will automatically be copied to your order as status information. You can retrieve the information about the original order and related shipments by initiating a get request to Orders API.

GET/v2/orders/order/{orderNumber}

If your shipment is delivered by Posti, you can track the shipment with Posti's tracking ID via Tracking API. You can also use parcel delivery estimation API to get estimation when your client can pick the parcel.