Post Packing Flow
The Post Packing flow confirms that the parcel is physically packed and ready for pickup. For Locker Light, you have two options at this stage:
- Option 1 — Use our label: Create the order using the special
sortCodefrom the availability response. We will return a label URL with the correct sort code already printed. - Option 2 — Use your own label: Before calling Post Packing, call the Resolve sortCode endpoint first. This returns the real
sortCoderepresenting the actual delivery locker. Use this on both your label and in the Post Packing request.
Create Order API (Post Packing)
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 parcel is packed and ready for pickup
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
Request Body
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| parcelPackingConfirmed | boolean | required | Confirm parcel is packed and ready for pickup | Can be set to false, and order can be updated unlimited amount of times. If omitted then we will default to packing confirmed if we have a post purchase order. | |
| 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_AREA |
| availabilityToken | string | required | Availability token from availability response | Can be optional if agreed with your Implementation Manager | |
| orderId | string | optional | Unique order reference for subsequent calls. This is returned in the post purchase response | ||
| parcelId | string | optional | Unique identifier/barcode for parcel | Auto-generated if omitted | |
| merchantBrandId | string | optional | Merchant brand identifier | This is a feature to use multiple brands without using multiple credentials. Needs to be configured if used. Talk to your Implementation Manager | |
| communicationName | string | optional | Communication name override | Note! This will only change the name in Instabee communication such as notifications, SMS or email. Will not change partner name in our partner portal nor change any specs on invoices | |
| recipient | object | required | Recipient information object | ||
| dispatch | object | optional | Dispatch readiness and warehouse | ||
| 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 |
sortCode
| Parameter | Type | Required | Description | Comment |
|---|---|---|---|---|
| sortCode | string | required | Temporary sort code received from the Availability API. Send at the top level of the request body — do not wrap in a deliveryOption object. | Must be sent exactly as received, do not truncate |
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 |
| collectionPointId | string | optional | Specific warehouse/pickup point | Configured by Instabee | |
| returnPointId | string | optional | Not yet implemented. Return address point ID | For failed deliveries |
additionalServices
| Parameter | Type | Required | Description |
|---|---|---|---|
| identification | object | optional | Identity verification requirements |
additionalServices.identification
| Parameter | Type | Required | Description | Constraints | Comment |
|---|---|---|---|---|---|
| type | string | optional | Type of verification | "age_limit", "age_limit_at_handover", "specific_person", "specific_person_at_handover" "any_person" | Age veritification and specific person is currently only live in Sweden. Any person verification is live in Sweden, Denmark, Norway |
| 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 |
type explanations
| Type | Description |
|---|---|
| age_limit | Verify the consumer age. This verification will be triggered when the parcel is created. Only live with Swedish BankID |
| age_limit_at_handover | Verify the consumer age when they pickup the parcel (at handover). Only live with Swedish BankID |
| specific_person | Verify the consumer identify by matching SSN sent on the order with the SSN from the verification. Only live with Swedish BankID |
| specific_person_at_handover | Verify the consumer identify by matching SSN sent on the order with the SSN from the verification when they pickup the parcel (at handover). Only live with Swedish BankID |
| any_person | Verify the consumer identify by matching doing a BankID or NemID verification. Currently live in Sweden, Denmark and Norway |
cart
| Parameter | Type | Required | Description | Comment |
|---|---|---|---|---|
| checkoutId | string | optional | Checkout session ID | Used as a link in Instabee system |
| orderNumber | string | required* | Your order number | Used as a link in Instabee system |
| totalValueInCents | number | optional | Total order value in cents | This helps us with claims process |
| totalWeightGram | number | optional | Total weight in grams | This helps us with claims process |
| 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 | If you do not have this data, do not send anything | |
| widthMm | number | optional | Parcel width in mm | If you do not have this data, do not send anything | |
| lengthMm | number | optional | Parcel length in mm | If you do not have this data, do not send anything | |
| volumeDm3 | number | optional | Parcel volume in dm³ | If you do not have this data, do not send anything | |
| estimatedSize | string | optional | Estimated size category | "small", "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 8. Temperature in Celsius |
| max | number | optional | Maximum 15. 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 | If you do not have this data, do not send anything |
| heightMm | number | optional | Package height in mm | If you do not have this data, do not send anything |
| lengthMm | number | optional | Package length in mm | If you do not have this data, do not send anything |
| weightMm | number | optional | Package weight | If you do not have this data, do not send anything |
| volumeDm3 | number | optional | Package volume in mm³ | If you do not have this data, do not send anything |
| barcodes | array | optional | Barcode information | If you do not have this data, do not send anything |
cart.parcel.products[].packages[].barcodes[]
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
| code | string | optional | Barcode value | |
| type | string | optional | Barcode type | "ean13", etc. |
Response
The API returns an updated parcel object with:
| Field | Type | Description |
|---|---|---|
| orderId | string | The Instabee order ID |
| parcelId | string | The parcel ID |
| state | string | Updated status ("FINALIZED" after packing confirmation) |
| links | object | Object with label and tracking links |
| attributes | object | Additional attributes including the resolved label code |
links (object)
| Field | Type | Description |
|---|---|---|
| label | string | URL to download the shipping label (contains the correct sort code) |
| 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 |
attributes (object)
| Field | Type | Description |
|---|---|---|
| labelCode | string | The resolved label code (e.g., "IN30") |
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 |
Exceeding these limitations may result in additional charges or delivery refusal.
Quick Links
- Post Purchase API - Initial prebooking before packing
- Availability API - Check delivery options and get tokens