Post Purchase Flow
The Post Purchase flow (also known as the Create Order API) is called immediately after the consumer completes their purchase with Home Delivery selected. Instabee uses this to reserve capacity and begin planning the home delivery route.
Overview
What is Post Purchase? This is like a "prebooking" except that we do not actually "book" anything. It's being used for:
- Capacity management (even for Home Delivery!)
- Information for our operation to plan pickups and routes better
- Gives Instabee the possibility to talk to the consumer earlier to help them with any of their needs.
It does also levels up the integration and enables you to send information in the post purchase call that is not possible to send in the post packing call. As Instabee will easily merge the information on our end without introducing any extra complexity.
API Endpoint
| Endpoint | Method | Content-Type |
|---|---|---|
api.integration.instabee.com/orders (production) · sandbox-api.integration.instabee.com/orders (sandbox) | PUT | application/json |
When to Use
Call this endpoint immediately after:
- Customer completes their purchase in your checkout system
Integration Levels
You can integrate at different levels on what's possible:
- Nothing: This call can of course be skipped completely but that just makes it harder for Instabee to achieve a great delivery experience.
- Bare Minimum: Just an availability token/short toke/order reference/cart ID and the selected delivery options. This is the absolute minimum and will enable us to reserve the capacity.
- Regular (or Instabee prefered option): Basic recipient and delivery information.
- Maximum: Complete order details including products, dimensions, and special services. You can create a full order directly and just confirm the packing is done at a later stage.
Key Benefits
- Capacity Reservation: Ensures delivery slots are reserved for your customers
- Flexible Integration: Send as much or as little information as you have available
- Early Tracking: Customers get tracking information immediately after purchase
- Optimized Logistics: Helps Instabee plan pickup and delivery routes
Next Steps
- Complete Parameter Reference: See the Create Order API page for all available parameters
- After Packing: Use the Post Packing API to confirm when parcels are ready for pickup
- Integration Guide: Check the Authentication section for API setup
Quick Links
- Availability API - Check delivery options before creating parcels
- Post Packing API - Confirm parcels after physical packing
Create Order API
The Create Order API (also known as Create Parcel or Order Create API) is used to register a parcel for delivery immediately after a customer completes their purchase. This is the prebooking step that reserves capacity for delivery before the parcel is physically packed.
API Endpoint
| Endpoint | Method | Content-Type |
|---|---|---|
api.integration.instabee.com/orders (production) · sandbox-api.integration.instabee.com/orders (sandbox) | PUT | application/json |
Integration Levels
You can provide information at different levels:
- Bare Minimum: Nothing
- Minimum: Basic order identification and delivery option
- Regular: Basic recipient and delivery information
- Maximum: Complete order details including products, dimensions, and special services
Request Body
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| brand | string | optional | Define brand of the delivery options | instabox or budbee | |
| product | string | required | Define the product of the delivery options | Must be one | LOCKER_EXPRESS, LOCKER_RETURN, HOME_DELIVERY, LOCKER_CAPACITY_SURPLUS, LOCKER_ALLOCATION, LOCKER_AREA |
| countryCode | string | required* | Recipient country code. Can be sent in query param | ISO 3166 alpha 2 | |
| parcelPackingConfirmed | boolean | conditional* | Confirm parcel is packed and ready for pickup | See docs | |
| availabilityToken | string | optional | Availability token from availability response | ||
| orderId | string | optional | Unique order reference for subsequent calls | ||
| parcelId | string | optional | Unique identifier/barcode for parcel | Auto-generated if omitted | |
| merchantBrandId | string | optional | Brand identifier | ||
| communicationName | string | optional | Communication name override | ||
| sender | object | optional | Sender information object | Mainly for C2C | |
| recipient | object | required | Recipient information object | ||
| dispatch | object | optional | Dispatch readiness and warehouse | ||
| options | object | optional | Response options / language | ||
| deliveryInstructions | object | optional | Delivery instruction details | ||
| additionalServices | object | optional | Additional services | ||
| cart | object | optional | Parcel and/or product details |
recipient
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| name | string | required | Recipient name | ||
| string | required | Recipient email address | Valid email format | Used for delivery notifications | |
| phone | string | required | Recipient phone number | Min: 6 digits, Max 15 digits | Can be made optional with setting |
| ssn | string | optional | Social security number | For age verification services | |
| street | string | required | Recipient street address | ||
| street2 | string | optional | Additional address information | Floor, apartment, etc. | |
| postalCode | string | required | Recipient postal code | ||
| city | string | required | Recipient city | ||
| countryCode | string | required | Recipient country code | ISO 3166 alpha 2 | e.g., "SE", "DK", "NO" |
| coordinates | object | optional | GPS coordinates | For precise location |
recipient.coordinates
| Parameter | Type | Required | Description |
|---|---|---|---|
| lat | number | optional | Latitude |
| lon | number | optional | Longitude |
sender
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
| name | string | optional | Sender/merchant name | |
| string | optional | Sender email address | Valid email format | |
| phone | string | optional | Sender phone number | |
| street | string | optional | Sender street address | |
| street2 | string | optional | Additional sender address info | |
| postalCode | string | optional | Sender postal code | |
| city | string | optional | Sender city | |
| countryCode | string | optional | Sender country code | ISO 3166 alpha 2 |
| coordinates | object | optional | Sender GPS coordinates |
sender.coordinates
| Parameter | Type | Required | Description |
|---|---|---|---|
| lat | number | optional | Latitude |
| lon | number | optional | Longitude |
deliveryOption
| Parameter | Type | Required | Description | Comment |
|---|---|---|---|---|
| sortCode | string | required | Sort code for the locker | Identifies specific locker or specific home delivery option |
| etaInterval | object | optional | Preferred delivery time window |
deliveryOption.etaInterval
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| from | string | optional | Start of delivery window | ISO-8601 datetime | |
| to | string | optional | End of delivery window | ISO-8601 datetime | Will default to best available if doesn't match |
dispatch
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| readyToShip | string | optional | When parcel is ready for pickup | ISO-8601 datetime | Only one of readyToShip/readyToPack/outOfStock |
| readyToPack | string | optional | When packing process will start | ISO-8601 datetime | Instabee adds packing time to this |
| outOfStock | boolean | optional | Product is out of stock | true/false | Removes ETA from delivery options |
| packingTime | number | optional | Required packing time in minutes | ||
| collectionPointId | string | optional | Specific warehouse/pickup point | Configured by Instabee | |
| returnPointId | string | optional | Return address point ID | For failed deliveries |
options
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| languageCode | string | optional | Language for customer communications | ISO 639-1 | e.g., "EN", "SE", "NO" |
| localEtas | boolean | optional | Return local delivery terms | true/false | Different local terms for delivery promise |
| estimatedParcelType | boolean | optional | Return estimated parcel size | true/false | Calculated based on cart contents |
deliveryInstructions
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| notifyBy | string | optional | How to notify recipient | "ring_doorbell", "knock_on_door" | |
| doorCode | string | optional | Door or building access code | ||
| message | string | optional | Special delivery instructions | Free text message | |
| intercom | boolean | optional | Use intercom if available | true/false |
additionalServices
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| identification | object | optional | Identity verification requirements | ||
| leaveByDoor | string | optional | Allow leaving parcel by door | "allow", "disallow", "force" | |
| leaveWithNeighbour | string | optional | Allow leaving with neighbor | "allow", "disallow", "force" | |
| numberOfMissRetries | number | optional | Number of delivery retry attempts | Minimum: 1 | null = default |
additionalServices.identification
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| type | string | optional | Type of verification | "age_limit", "age_limit_at_handover", "specific_person", "any_person" | |
| ageLimit | number | optional | Minimum age required | Used with age_limit types | |
| ssn | string | optional | Required SSN for verification | ||
| name | string | optional | Required name for verification |
cart
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| checkoutId | string | optional | Checkout session ID | OneOf this, orderNumber, or availabilityToken | |
| orderNumber | string | required* | Your order number | OneOf this, checkoutId, or availabilityToken | Used to link with your system |
| totalValueInCents | number | optional | Total order value in cents | Used for insurance purposes | |
| totalWeightGram | number | optional | Total weight in grams | For logistics planning | |
| parcel | object | optional | Parcel dimensions and contents | Detailed parcel information |
cart.parcel
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| heightMm | number | optional | Parcel height in mm | ||
| widthMm | number | optional | Parcel width in mm | ||
| lengthMm | number | optional | Parcel length in mm | ||
| volumeDm3 | number | optional | Parcel volume in dm³ | ||
| estimatedSize | string | optional | Estimated size category | "small", "medium", "large" | |
| weightGram | number | optional | Parcel weight in grams | ||
| type | string | optional | Parcel type | "box", "envelope", "bag" | |
| products | array | optional | Array of products in parcel | Detailed product information |
cart.parcel.products[]
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | optional | Product name |
| quantity | number | optional | Quantity of this product |
| productId | string | optional | Your product identifier |
| details | object | optional | Detailed product information |
cart.parcel.products[].details
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
| productType | string | optional | Type of product | e.g., "Prescription" |
| imgUrl | string | optional | Product image URL | |
| category | string | optional | Product category | |
| brand | string | optional | Product brand | |
| description | string | optional | Product description | |
| price | object | optional | Price information | |
| temperature | object | optional | Temperature requirements |
cart.parcel.products[].details.price
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| priceInCents | number | optional | Price in cents | ||
| taxRateInCents | number | optional | Tax amount in cents | ||
| discountRateInCents | number | optional | Discount amount in cents | ||
| currency | string | optional | Currency code | ISO 4217 | e.g., "SEK" |
cart.parcel.products[].details.temperature
| Parameter | Type | Required | Description |
|---|---|---|---|
| min | number | optional | Minimum temperature in Celsius |
| max | number | optional | Maximum temperature in Celsius |
cart.parcel.products[]
| Parameter | Type | Required | Description |
|---|---|---|---|
| packages | array | optional | Physical package information |
cart.parcel.products[].packages[]
| Parameter | Type | Required | Description | Comment |
|---|---|---|---|---|
| widthMm | number | optional | Package width in mm | Note: Different from Post Packing (widthMm) |
| heightMm | number | optional | Package height in mm | Note: Different from Post Packing (heightMm) |
| lengthMm | number | optional | Package length in mm | Note: Different from Post Packing (lengthMm) |
| weightMm | number | optional | Package weight | Note: Different unit from Post Packing |
| volumeDm3 | number | optional | Package volume in mm³ | Note: Different from Post Packing (volumeDm3) |
| barcodes | array | optional | Barcode information |
cart.parcel.products[].packages[].barcodes[]
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| code | string | optional | Barcode value | ||
| type | string | optional | Barcode type | "ean13", etc. | Lowercase in Post Purchase |