pixi

Direct Fulfillment

Using Direct Fulfillment (in what follows called DF) you can ship orders with an external service provider.

This process is partly known as "dropshipping", when the shipment is made directly from a supplier’s or manufacturer’s warehouse to the end customer – without the merchant having any physical contact with the goods.


Direct Fulfillment Methods

Items that are not on stock can be sent to customers using two different methods:

  1. The ordered items are directly shipped to the end customer by the fulfillment supplier.

  2. The fulfillment supplier sends the items to the merchants warehouse who then ships them to the end customer.

In any case: The fulfillment supplier owns the items in his warehouse. Items that were shipped due to customer orders are being invoiced.


Shipping from DF Supplier to the End Customer

The most commonly used direct fulfillment method is shipping the ordered items directly to the end customer by the DF supplier.

The advantage of this method is, that the merchant does not need to pay anything for employees or any warehouse capacities. The items are directly shipped from the DF supplier's warehouse.

This kind of fulfillment is used for DF types 1 and 3.

Note: In case you don't own any warehouse and the DF supplier ships items, which are your property, you can operate as described in this section.


Shipping from DF Supplier to the Merchant

With this method the ordered items are shipped to the merchant's warehouse, who then ships them the the end customers, by the DF supplier.

The advantage of this method is that the end customer gets his order completely, also if an item was not on stock at the time the orders was placed. The downside is that the end customer might need to wait a bit longer until he gets his order because of the items short stop in the merchants warehouse.

This kind of fulfillment is used for DF type 2.

If you don't have any items on stock but you delivery items from your warehouse (on demand), you can do this also with the help of the pixi Web application in combination with Picco or pixi Mobile.
You need to create new supplier orders by using the On demand supplier order suggestion method. When the orders were delivered, you can process the items with pixi Mobile or Picco further using Cross Docking / On Demand programs.

Read more: Supplier Order Suggestion, Order Method On demand, pixi Mobile: Cross Docking

Back to top

Direct Fulfillment Types

Due to the flag which is imported with the order, pixi automatically decides what to do with the order. A fulfillment order is treated as a normal order until the payment was received. If an order was not paid, then it waits for the payment until it is transfered to the DF supplier. Orderlines in status HAL (hold) are therefore not handed over to the DF supplier.

As soon as the payment was received and the orderline was put to ANG (accepted), pixi checks the DF type of every orderline and assigns the appropriate DF supplier if needed.

In pixi there are 3 fulfillment types:

DF Type

Procedure

Description

0 / empty

pixi ships

pixi ships the orderline directly to the end customer - no DF.
This orderlines are usually not transferred to the fulfillment supplier.

1

Fulfillment supplier ships

The orderline is transferred to the DF supplier.
He processes the order and ships it to the end customers.

2

pixi ships; but the items are ordered by the DF supplier

pixi ships the orderline directly to the end customer.
In case the item is not on stock (available stock (res.) < quantity of ordered items) it is ordered at the DF supplier.
IMPORTANT: The items are sent to the merchant and not to the end customer.

3

Depending on the item stock, either pixi or the DF supplier ships

pixi ships the items, if they are on stock (available stock (res.) > quantity of ordered items).
In case the items are not on stock and a DF supplier is assigned to them, the orderline is put to status FUT and the DF supplier ships the items to the end customer.


If the orderlines are not on stock, the orderline status changes to FUT. Those orders are then ready to be collected by the pixi API. After this, every single orderline needs to be confirmed using an additional API call to ensure that all orders were transferred crrectly.

The DF supplier then processes the orders. The package only contains a delivery note. There is also the possibility to use an external invoice number, if the DF supplier creates an invoice. This external invoice then needs to match the invoice which is automatically created by pixi.

After the order was shipped, it is put to status shipped in pixi using the API. By doing this, one tracking ID per orderline can be passed, which will then be applied to the invoice at invoice creation. As an alternative - if the orderline can also not be delivered by the DF supplier - it can also be cancelled by the DF supplier.

pixi does the rest: If the order consists of other items that are on stock, they are picked, packed and shipped as usual (DF type 0 / empty).

Orderlines that are on stock are automatically grabbed by the invoice automatism and an invoice gets created. Invoices for orderlines that are shipped by the DF supplier, can either be created manually using the API or also automatically using the invoice automation.

The following descriptions for every DF type consider whole orders. DF types can also be set per orderline - then the description applies to a single orderline.

Back to top

DF Type 0 / empty

The order is shipped from the merchant's warehouse to the end customer.

If an item is not on stock, it gets cancelled or is ordered at a supplier and later on shipped by the merchant. There is no DF supplier involved in this.

The order is processed normally:

  • If the payment was not settled yet, the order remains in status HAL - it waits for the payment.

  • If the payment was received and assigned to the order, the status changes to ANG.

  • If all ordered items are on stock, they get picked, scanned into the shipping boxes (status EIN) and shipped (status AUS).

Graphic: Orderline status history in pixi


Back to top

DF Type 1

The DF supplier ships the order in any case - independent of the items stock.

The order is processed as follows:

  • If the payment was not settled yet, the order remains in status HAL - it waits for the payment.

  • If the payment was received and assigned to the order, the status changes to FUT (Fulfillment Transfer). The orderlines are collected using API calls pixiDFGetOrders & pixiDFGetOrderlines by the DF supplier.
    Afterwards, the orderlines are confirmed using the API call pixiDFGetChangesConfirmation.

  • (Optional) Using pixiDFGetChanges you can check before the items are shipped, if orderlines might already be cancelled by customers in between or if changes to the quantity were made.

  • The DF supplier ships the order and sets the order to shipped using the API call pixiDFSetStatus or pixiDFUpdateOrderlineStatus. In pixi the status then automatically changes to FUS (Fulfillment Sent).

  • After the DF invoice was created either by the pixi invoice automatism or using the API call pixiDFCreateInvoices, the order is put to status AUS in pixi.

Graphic: Orderline status history in pixi

Graphic: API call process (DF supplier perspective)


Back to top

DF Type 2

The ordered items are shipped by the merchant in any case.

The order is processed as follows:

  • If the payment was not settled yet, the order remains in status HAL - it waits for the payment.

  • If the payment was received and assigned to the order, the status of each orderline changes depending on the stock for this item in the merchant's warehouse.

  • If there is enough stock, the status changes to ANG. There is no DF supplier involved in this case.

  • If there is not enough stock, the status changes to FUT (Fulfillment Transfer).

  • The items are now picked and scanned into the shipping boxes (status EIN).

  • After the DF invoice was created either by the pixi invoice automation or using the API call pixiDFCreateInvoices, the order is put to status AUS in pixi.

Graphic: Item is on stock

Graphic: Item is not on stock

Graphic: API call process (DF supplier perspective)


Back to top

DF Type 3

The ordered items are shipped either by the merchant or the DF supplier depending on the items stock.

The order is processed as follows:

  • If the payment was not settled yet, the order remains in status HAL - it waits for the payment.

  • If the payment was received and assigned to the order, the status of each orderline changes depending on the stock for this item in the merchant's warehouse.

  • If there is enough stock, the status changes to ANG. There is no DF supplier involved in this case.

  • If there is not enough stock, the status changes to FUT (Fulfillment Transfer).

  • After the DF invoice was created either by the pixi invoice automatism or using the API call pixiDFCreateInvoices, the order is put to status AUS in pixi.

Graphic: Item is on stock

Graphic: Item is not on stock

Graphic: API call process (DF supplier perspective)


Back to top

Special Processes

No own warehouse; the merchants items are shipped by the DF supplier

In this scenario the merchant does not have an own warehouse. The items are exclusively shipped to the end customers by the DF supplier. But the items in the DF supplier's warehouse are the marchant's property.

This is a possible scenario of handling such orders:

  • After the order has been created either by the order import or manually in pixi, the DF supplier collects all orders using the API calls pixiGetOrderHeader and pixiGetOrderlines. The orderlines are in status HAL, in case no payment has been received yet and they have status ANG, if the orderlines are ready to be shipped.

  • The DF supplier now processes all shippable orderlines and can also check orders for possible changes that were possibly made between the order import and processing the order using the API call pixiGetOrder.

    • In the same step a comment can be added to orderlines or the whole order using pixiUpdateOrderline or pixiAddOrderComments. Like this you can easily see that the order is being processed and changes should not be made anymore.

  • If the DF supplier processed the order, the orderline status of every item is put to DF type 1 using API call pixiUpdateOrderline.

    • In pixi the orderline status for items with DF type 1 changes to FUT.

  • Since the the items stock in the DF supplier's warehouse is property of the merchant and needs to be exported to all connected channels, this stock has to be corrected accordingly for all items that were picked. Because of this the DF supplier needs to decrease the items stock using pixiSetStockMultiple.

  • After the stock was adjusted, the orderline status is put to FUS using pixiDFSetStatus.

  • The DF invoice is then created either by the pixi invoice automatism or using the API call pixiDFCreateInvoices and the order is automatically put to AUS - it is considered to be shipped.

Graphic: Orderline status history in pixi

Graphic: API call process (DF supplier perspective)


Back to top

Configuration

Important Database Settings

Enable DF: pixi Control Center > Database Settings > Direct Fulfillment
This setting needs to be activated in order to being able to use direct fulfillment. If this setting is not activated, please contact your account manager to buy the direct fulfillment licence.

DF API - Allow full Access without Password: pixi Control Center > Database Settings > Direct Fulfillment
If this setting is activated, then the supplier number and the supplier customer number don't have to be provided when getting DF orders using the API. If this setting is deactivated, then that information needs to be provided.

Enable Fullfillment Type One & Fullfillment Type Two: pixi Control Center > Database Settings > Direct Fulfillment
Those two settings need to be activated so pixi can automatically create invoices for DF orders that contain orderlines in status FUS.

Show status FUA instead of FUT: pixi Control Center > Database Settings > Customer Service
If this setting is activated, then status FUA is shown as orderline status instead of FUT if the orderline was not yet confirmed by the DF supplier using the API call pixiDFGetChangesConfirmation.

Picklist - Include Orders with FUT Orderlines: pixi Control Center > Database Settings > Shipping
If the setting is enabled, then a picklist can be created also for orders where some of the orderlines are on status FUT.
Note: Only orderlines on ANG from such orders can go to picklist.
If the setting is disabled, then all orders where some of the orderlines are on status FUT, are excluded.
Default: OFF

Include FUT Status for Supplier Orders: pixi Control Center > Database Settings > Direct Fulfillment
If you enable this setting (ON), open Direct Fulfilment orders in status FUT are included in in Purchase Order Suggestions and FUT order lines are generally interpreted in pixi as part of the Open Order Qty for the item.
With this setting you can thus generate Purchase Order Suggestions usually via the On-Demand method in pixi Purchasing. Once the supplier reports shipment, the status of the oldest open orderlines in FUT can be changed for the shipped items via the pixi API from FUT to BES up until the shipped quantity is matched.

Back to top

Order Import

On order import, every order includes a flag which says that an item or the order should be shipped via pixi or a DF supplier. If an order doesn't contain this flag, the DF type is determined using this database setting:

DF Type - Default Value: pixi Control Center > Database Settings > Direct Fulfillment
This setting sets the default value for the DF type of an orderline, if the order import XML doesn't contain any value.
You can enter values from 1 to 3.

Detailed information about how to provide the values can be found in the openTRANS Syntax Specification.


DF Suppliers

To mark a supplier as DF supplier, you need to open it in the pixi Web application > Buying > Suppliers. Go to General and set Direct fulfillment to "Yes".

You also need to set a customer number (My customer ID) which needs to be provided when using API calls next to the Supplier ID. This customer number can be up to 20 characters long.

In pixi LOU suppliers are managed in pixi Control Center > Tables > Suppliers.

Read more: Suppliers

Back to top

API Calls

pixiDFGetOrders

This API call returns all open orders without customer or shipping lock for a specific supplier.


Parameter

Data Type

Mandatory

Description

SupplNr

varchar (4)

yes

Supplier number in pixi (e.g. MGS for the default supplier)

Secret

varchar (20)

no

Customer number of the supplier in pixi, needs to be provided as an additional security

AllOrders

bit

no

0 = not confirmed orders are returned
1 = all orders of the supplier are returned


The result set contains important data which are need for a further processing besides customer related data (shipping address, etc.):

Column

Data Type

Description

OrderNR

int

Customers order number


Back to top

pixiDFGetOrderlines

This API call returns all orderlines for a specific supplier.

Parameter

Data Type

Mandatory

Description

OrderNR

int

yes

Order number in pixi from the previous API call pixiDFGetOrders => column: OrderNR

SupplNr

varchar (4)

no

Supplier number in pixi (e.g. MGS for the default supplier)

Secret

varchar (20)

no

Customer number of the supplier in pixi, needs to be provided as an additional security

AllOrderlines

bit

no

0 = not confirmed orderlines in status FUT
1 = all orderlines in status FUT - incl. the confirmed ones


The result set contains important data which are need for a further processing:

Column

Data Type

Description

OrderlineRef

int

Unique ID of the orderline

OrderHistKey

int

Unique key for the conformation of an orderline by the DF supplier


Back to top

pixiDFGetChanges

This API call returns orderlines for a specific supplier which have not been confirmed yet.

Parameter

Data Type

Mandatory

Description

OrderNRExternal

int

yes

Order number shop

SupplNr

varchar (4)

no

Supplier number in pixi (e.g. MGS for the default supplier)

Secret

varchar (20)

no

Customer number of the supplier in pixi, needs to be provided as an additional security

ExcludeStatuses

varchar (200)

no

Do not consider the status for the result

LockedCustomers

bit

no

0 = return orderlines of not locked customers only
1 = return orderlines also of locked customers


The result set contains important data which are need for a further processing:

Column

Data Type

Description

ordernr

int

Customer order number

OrderLineRef

int

Unique ID of the orderline

OrderHistKey

int

Unique (max) key for the confirmation of an orderline by the DF supplier


Back to top

pixiDFGetChangesConfirmation

Every single orderline needs to be confirmed with this call.

Parameter

Data Type

Mandatory

Description

SupplNr

varchar (4)

yes

Supplier number in pixi (e.g. MGS for the default supplier)

Secret

varchar (20)

yes

Customer number of the supplier in pixi, needs to be provided as an additional security

OrderHistKey

int

no

The Key OrderHistKey from the previous API call pixiDFGetOrderlines or pixiDFGetChanges => column: OrderHistKey


Afterwards, the orderline is not shown anymore in the result of pixiDFGetOrderlines and (if all orderlines were confirmed) also not in pixiDFGetOrders.

Back to top

pixiDFUpdateOrderlineStatus

With this API call, one orderline can be set to shipped, cancelled or ordered.

Note: To avoid a potential invoice split in pixi, we recommend to use pixiDFSetStatus for shipment updates, i.e. to update all shipped order lines in a single request.

Parameter

Data Type

Mandatory

Description

SupplNr

varchar (4)

yes

Supplier number in pixi (e.g. MGS for the default supplier)

Secret

varchar (20)

yes

Customer number of the supplier in pixi, needs to be provided as an additional security

OrderHistoryKey

int

yes

The Key OrderHistoryKey from the previous API call pixiDFGetOrderlines or pixiDFGetChanges => column: OrderHistKey

Status

varchar (3)

yes

FUS (Fulfillment Sent), if the orderline was sent
STO (Cancelled), if the orderline cannot be shipped
BES (Ordered), if the orderline was ordered at the DF supplier

DFShipDate

datetime

no

Shipping time of the order

DFTrackingID

varchar (100)

no

Packages tracking ID, if available; seperate several IDs with ,

Qty

int

no

Quantity of the orderlines, whose status should be changed

InvoiceNrExternal

varchar (20)

no

External invoice number, if it was created by the DF supplier

OrderLineRef

int

no

Unique ID of the orderline


The result returns error code 200, if the orderline was marked successfully and in any other case it returns 500 as well as an error description.


Back to top

pixiDFSetStatus

With this API call one or more orderlines can be set to cancelled (DF type 1, 2 and 3), ordered (DF type 2) or shipped (DF type 1 and 3).

Parameter

Data Type

Mandatory

Description

XML

varchar (max)

yes

Several orderlines can be updated in one XML. An example:

<SETDFSTATUS>
<ITEM>
<ORDERHISTORYKEY>432046</ORDERHISTORYKEY>
<STATUS>FUS</STATUS>
<QTY>1</QTY>
<SHIPDATE>20160114 16:46:12</SHIPDATE>
<TRACKINGID>233242345345</TRACKINGID>
<INVOICENREXTERNAL>RE234234</INVOICENREXTERNAL>
</ITEM>
<ITEM>
<ORDERHISTORYKEY>384578</ORDERHISTORYKEY>
<STATUS>FUS</STATUS>
<QTY>1</QTY>
<SHIPDATE>20160114 16:46:12</SHIPDATE>
<TRACKINGID>233242345345</TRACKINGID>
<INVOICENREXTERNAL>RE234234</INVOICENREXTERNAL>
</ITEM>
</SETDFSTATUS>


  • OrderHistoryKey: Unique orderline ID

  • Status: Status for the orderline

  • Qty: Orderline quantity for the status change

  • ShipDate: Set the shop date for the orderline (DF Ship Date)

  • TrackingID: DF Shipment TrackingID

  • InvoiceNrExternal: Orderlines invoice number (is not shown in pixi Customer Service)


Info: Depending on where you execute the call, the XML might need to be put into a <![CDATA[...]]> block.

CreateInvoices

varchar (1)

no

N (default) = no invoice is created for the orderline
Y = an invoice is created for the orderline

SupplNr

varchar (4)

no

Supplier number in pixi (e.g. MGS for the default supplier)

Secret

varchar (20)

no

Customer number of the supplier in pixi, needs to be provided as an additional security


The result returns error code 200, if the orderline was marked successfully and in any other case it returns 500 as well as an error description.


Back to top

pixiDFCreateInvoices

With this API call you can create an invoice for DF orders that contain orderlines in status FUS.
In case no parameter is provided, the API call works the same as the button Create fulfillment invoices in the pixi Invoices application.

There is no result set.

Parameter

Data Type

Mandatory

Description

OrderLinesXML

varchar (max)

no

Several orderlines can be updated in one XML. An example:

<Orderlines>
<Orderline>
<OrderlineKey>12345</OrderlineKey>
<ShipVendor>DHL</ShipVendor>
<ShipmentTrackingId>tracking2;tracking1;</ShipmentTrackingId>
<ReturnTrackingId>return1;</ReturnTrackingId>
</Orderline>
<Orderline>
<OrderlineKey>67890</OrderlineKey>
<ShipmentTrackingId>tracking3;tracking4;</ShipmentTrackingId>
</Orderline>
<Orderline>
<OrderlineKey>13579</OrderlineKey>
</Orderline>
</Orderlines>

  • OrderlineKey: Unique orderline ID

  • ShipVendor: Shipping vendor that should be used for the invoice
    (max. 3 characters)

  • ShipmentTrackingId: Shipment tracking ID, separated by semicolon
    (max. 512 characters)

  • ReturnTrackingId: Return tracking ID, separated by semicolon
    (max. 512 characters)

Info: Depending on where you execute the call, the XML might need to be put into a
<![CDATA[...]]> block.

ShowDetailedMessages

BIT

no

NULL / 0 = no result
1 = The call returns different messages depending on the status (OK, ERROR)


Result set:

Column

Data Type

Description

ReturnCode

varchar (10)

OK or ERROR

ErrorMessage

varchar (512)

OK

  • Direct fulfilment Invoice(s) created with invoice number(s): "Invoice Number(s)"

ERROR

  • XML is empty or not proper. Please review and adapt.

  • Ship vendor code is too long, field size max. of 3 characters was reached. Please review and adapt.

  • TrackingId is too long, field size max. of 512 characters was reached. Please review and adapt.

  • ReturnTrackingId is too long, field size max. of 512 characters was reached. Please review and adapt.

  • One or more orderline keys does not exist in database. Please review and adapt.


Back to top