Digistore24 offers an api to connect your fullfillment software. You agents are preparing the packages and handing them over to the parcel delivery service. Via api calls to Digistore24 your software retrieves data on the deliveries and updates the delivery status.

Using the api, you can make sure

  • every delivery is sent excactly once (even if more then one agent is handling the deliveries)
  • multiple deliveries for the same address are grouped.
  • tracking information is added in Digistore24 and provided to the customer
  • partial deliveries are handled correctly

Requirements

You are selling physical products, which are to be delivered, like books or supplements.

You have a software managing your delivery process.

Background information

For every shipped order, Digistore24 creates one or more "deliveries".

Digistore24 creates a delivery for each order position, which is to be shipped. If you have more then one shipped order position on a purchase, you may want to group deliveries.

Every delivery has a type indicating the current status. Possible values for delivery type are:

  • request - the order has not been processed. The items are to be sent.
  • in_progress - one of your delivery handling agents is currently dealing with the delivery.
  • delivery - all items of the delivery have been sent
  • partial_delivery - some items of the delivey have been sent
  • return - the package has been returned - maybe the shipping address was wrong
  • cancel - the delivery has been canceled - maybe because of a refund of the purchase

Process

1. Setup product

In Digistore24, you need to have a product being sold.

Make sure, the product type is set correctly to a delivered product type (like a book, a dvd set or supplements).

2. Retrieve open deliveries via api

Use api end point listDeliveries() to get a list of open deliveries.

To only get open and not completed deliveries, use parameter:

search[type]=request,partial_delivery

Cycle through the list of deliveries, processing 3. Mark delivery as "in progress" for each delivery.

3. Mark delivery as "in progress"

To make sure, a delivery is only handeled once, use getDelivery() to set the delivery as being processed. Use parameter

set_in_progress=Y

In Digistore24's response, evaluate is_set_in_progress

  • If Y, your agent may process the delivery. Proceed to the next step (4. Update delivery status).
  • If N, your agent should pick the next delivery. Use getDelivery()  for the next delivery again.

4. Update delivery status

Use updateDelivery() to mark the package as shipped and to (optionally) provide parcel tracking data.

Make sure, you add the quantity of the product delivered:

data[add_quantity_delivered]=N

If - after the api call - no quantity is left to be delivered, then the data[type] is set to: delivery - indicating, that the delivery is complete.

If not all order positions have been delivered, the data[type] ist set to: partial_delivery - indicating, that there is a quantity left to be delivered.

Optionally you may add package tracking information -  e.g. tracking[0][parcel_service]=DHL and tracking[0][tracking_id]=123456789 - see updateDelivery() for details.

Then proceed with step 3 for the next delivery.

Tips and tricks

Pack different order positions in one package

To minimize the number of packages sent, search for delivery with the same address.

Use listDeliveries() with these parameters:

search[type]=request,partial_delivery
search[same_address_as]=DELIVERY_ID

Replace DELIVERY_ID with the id of a delivery.

You'll get a list of deliveries shipped to the same address.

The delivery with the given delivery id is not included in the list.

Monitoring deliveries in Digistore24

In the Digistore24 backoffice, you may monitor the deliveries in the vendor view on Reports - Deliveries.

 See also