Post Packing Flow
The Post Packing flow confirms that the parcel is physically packed and ready for home delivery pickup. Call this once the parcel is prepared in your warehouse. It follows the Post Purchase call and triggers the final delivery planning with Instabee.
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 after:
- A parcel has been registered with the Post Purchase API
- The order has been physically packed and prepared for shipping
- The final dimensions and weight are known (if different from initial estimates)
Integration Levels
Merchants can send information in different steps depending on their workflow:
- Bare Minimum: If everything was sent in Post Purchase, just confirm packing
- Minimum: Basic confirmation with essential parcel details
- Maximum: Complete order details with final dimensions and product information
Key Benefits
- Pickup Scheduling: Triggers pickup scheduling and route optimization
- Label Generation: Provides shipping labels for the packed parcels
- Final Confirmation: Confirms actual dimensions and weight for accurate delivery
- Status Updates: Updates tracking status for customers
Integration Workflow
- Post Purchase: Initial prebooking reserves delivery capacity
- Physical Packing: Pack the order in your warehouse
- Post Packing: Confirm packing with this API (final dimensions, weight)
- Label Download: Download shipping labels from the response
- Pickup: Prepare parcels for scheduled pickup
Next Steps
- Complete Parameter Reference: See the Create Order API page for all available parameters
- Initial Setup: Start with the Post Purchase API for the prebooking
- Integration Guide: Check the Authentication section for API setup
Quick Links
- Post Purchase API - Initial prebooking before packing
- Availability API - Check delivery options and get tokens
Create Order API (Post Packing)
The Post Packing API is used to update a parcel's status after it has been physically packed and is ready for pickup and delivery. This is the final confirmation step after the initial Post Purchase prebooking.
Post Purchase vs Post Packing: The Post Purchase flow is like a prebooking that reserves delivery capacity. The Post Packing flow is the final confirmation after physical packing, providing actual dimensions and confirming the parcel is ready for pickup.
This endpoint should be called after:
- A parcel has been registered with the Post Purchase API
- The order has been physically packed and prepared for shipping
- The final dimensions and weight are known
Merchants can send information in different steps - some may provide all details in Post Purchase, others may provide minimal information initially and complete details in Post Packing.
Request Body
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| parcelPackingConfrimed | boolean | optional* | 1. Set to true if only the post packing call is made. 2. If you want to make more edits then actively set to false. 3. The post packing call will automatically set this param to true if nothing is sent. | true or false | |
| 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 and LOCKER_RETURN | |
| recipient | object | required | Recipient information object | ||
| isLabelless | boolean | optional | For LOCKER_RETURN only. Indicates if the return is labelless (consumer does not attach a label) | ||
| associatedParcelId | string | optional | For LOCKER_RETURN only. The outbound parcel ID. If provided, the return order is created only after the outbound is delivered. If omitted, treated as a standalone return order. | ||
| 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 |
|---|---|---|---|---|
| sort_code | string | required | Sort code for the locker | Identifies specific locker or specific home delivery time |
| 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 |
Response
The API returns an updated parcel object with:
| Field | Type | Description |
|---|---|---|
| parcelId | string | The Instabee parcel ID |
| status | string | Updated status (e.g., "PENDING_PACKING" or "FINALIZED") |
| links | object | And object with tracking and label links |
links (object)
| Field | Type | Description |
|---|---|---|
| label | string | URL to download the shipping label |
| tracking | string | URL to track the parcel |
label URL parameters
The label URL supports optional query parameters to customize the output:
| Param | Type | Default | Options | Description |
|---|---|---|---|---|
| fileFormat | string | pdf | png, zpl, pdf | Output file format |
| base64 | boolean | false | true, false | Return label as base64-encoded string |
| template | string | a6 | a6, a7 | Label paper size |
| dpi | integer | 96 | Resolution in dots per inch | |
| debug | boolean | false | true, false | Enable debug mode |
Best Practices
- Accurate Measurements: Always provide accurate dimensions and weight
- Prompt Confirmation: Confirm packing as soon as possible after physical packing
- Error Handling: Implement proper error handling for failed confirmations
- Label Management: Download and store shipping labels immediately
- Status Tracking: Monitor the parcel status via the Instabee API or dashboard
Size Limitations
Each delivery method has maximum size and weight limitations:
| Delivery Type | Max Length (cm) | Max Width (cm) | Max Height (cm) | Max Weight (kg) |
|---|---|---|---|---|
| Locker - Small | 39 | 39 | 59 | 20 |
| Home Delivery | 120 | X | X (max total 300cm girth) | 20 |
Exceeding these limitations may result in additional charges or delivery refusal.