Skip to content

Outbound API

Manage outbound shipments and inventory transfers between warehouses. The Outbound API tracks items leaving your warehouse as part of transfer processes, automatically completing when the destination warehouse confirms receipt via inbound operations.

Authentication

All API requests require authentication using Bearer token in the Authorization header and X-Tenant-Id header for tenant identification:

Authorization: Bearer YOUR_API_KEY
X-Tenant-Id: YOUR_TENANT_ID

1. List Outbound Shipments

Retrieve a paginated list of all outbound shipments.

Endpoint

GET /api/partner/v1/outbound

Query Parameters

ParameterTypeRequiredDescription
pageintegerNoPage number (default: 1)
per_pageintegerNoItems per page (default: 20, max: 100)
statusstringNoFilter by status: preparing, shipped, in_transit, completed, cancelled
source_warehouse_idstringNoFilter by source warehouse ID
destination_warehouse_idstringNoFilter by destination warehouse ID
transfer_idstringNoFilter by transfer request ID
date_fromstringNoFilter by date from (ISO 8601)
date_tostringNoFilter by date to (ISO 8601)

Response

Success Response (200 OK)

json
{
  "status": "ok",
  "data": {
    "outbound": [
      {
        "id": "out_123456789",
        "transfer_id": "trf_987654321",
        "reference_number": "TRF-OUT-2024-001",
        "status": "shipped",
        "source_warehouse": {
          "id": "wh_001",
          "name": "Jakarta Warehouse"
        },
        "destination_warehouse": {
          "id": "wh_002",
          "name": "Surabaya Warehouse"
        },
        "expected_departure": "2024-01-15T09:00:00Z",
        "actual_departure": "2024-01-15T09:15:00Z",
        "total_items": 1,
        "total_quantity": 50,
        "shipped_quantity": 50,
        "pending_quantity": 0,
        "courier": "JNE",
        "tracking_number": "TRK987654321",
        "priority": "normal",
        "created_at": "2024-01-10T08:00:00Z"
      }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 20,
      "total": 1,
      "total_pages": 1
    }
  },
  "errors": null,
  "request_id": "req_123456789"
}

Example Request

bash
curl -X GET "https://sandbox-api.bebaskirim.com/api/partner/v1/outbound?page=1&per_page=20&status=shipped" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Tenant-Id: YOUR_TENANT_ID"

2. Get Outbound Shipment Details

Retrieve detailed information about a specific outbound shipment.

Endpoint

GET /api/partner/v1/outbound/{id}

Path Parameters

ParameterTypeRequiredDescription
idstringYesOutbound shipment ID

Response

Success Response (200 OK)

json
{
  "status": "ok",
  "data": {
    "outbound": {
      "id": "out_123456789",
      "transfer_id": "trf_987654321",
      "reference_number": "TRF-OUT-2024-001",
      "status": "completed",
      "source_warehouse": {
        "id": "wh_001",
        "name": "Jakarta Warehouse",
        "address": "Jl. Warehouse No. 123, Jakarta"
      },
      "destination_warehouse": {
        "id": "wh_002",
        "name": "Surabaya Warehouse",
        "address": "Jl. Surabaya No. 456, Surabaya"
      },
      "expected_departure": "2024-01-15T09:00:00Z",
      "actual_departure": "2024-01-15T09:15:00Z",
      "expected_arrival": "2024-01-16T14:00:00Z",
      "actual_arrival": "2024-01-16T13:45:00Z",
      "items": [
        {
          "id": "item_001",
          "sku": "SKU-001",
          "name": "Product A",
          "quantity": 50,
          "unit": "pcs",
          "unit_price": 50000,
          "shipped_quantity": 50,
          "received_quantity": 50,
          "pending_quantity": 0
        }
      ],
      "courier": "JNE",
      "tracking_number": "TRK987654321",
      "priority": "normal",
      "notes": "Transfer for restocking",
      "inbound_reference": "INB-2024-002",
      "created_at": "2024-01-10T08:00:00Z",
      "updated_at": "2024-01-16T13:45:00Z",
      "completed_at": "2024-01-16T13:45:00Z"
    }
  },
  "errors": null,
  "request_id": "req_123456789"
}

Example Request

bash
curl -X GET https://sandbox-api.bebaskirim.com/api/partner/v1/outbound/out_123456789 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Tenant-Id: YOUR_TENANT_ID"

Status Definitions

StatusDescriptionNext Status
preparingOutbound shipment created, items being preparedshipped
shippedItems have left source warehousein_transit
in_transitItems are in transit to destinationcompleted
completedItems received at destination warehouse-
cancelledOutbound shipment cancelled-

Transfer Lifecycle

The outbound shipment is part of a complete transfer process:

  1. Transfer Request Created → Transfer API
  2. Outbound Shipment Created → Outbound API (current)
  3. Items In Transit → Automatic status update
  4. Inbound Created → Inbound API (destination warehouse)
  5. Items Received → Inbound receive process
  6. Outbound Completed → Automatic completion when inbound is received

Rate Limits

  • Create Outbound: 100 requests per minute
  • List Outbound: 200 requests per minute
  • Get Details: 200 requests per minute
  • Update Outbound: 100 requests per minute
  • Mark as Shipped: 200 requests per minute
  • Cancel Outbound: 50 requests per minute
  • Track Transfer: 100 requests per minute

Best Practices

Transfer Planning

  • Always link outbound shipments to transfer requests using transfer_id
  • Plan departure times based on courier pickup schedules
  • Use priority levels for urgent transfers

Inventory Accuracy

  • Double-check item quantities before marking as shipped
  • Use barcode scanning to prevent shipping errors
  • Update tracking information immediately when available

Communication

  • Include clear notes for destination warehouse staff
  • Use tracking numbers to provide visibility to stakeholders
  • Set up webhooks for real-time status updates

Integration with Inbound Process

  • Monitor outbound status to predict inbound arrival
  • Use the tracking endpoint to provide end-to-end visibility
  • Coordinate with destination warehouse for smooth handoffs

Error Handling

  • Handle transfer conflicts gracefully (e.g., insufficient inventory)
  • Implement retry logic for network issues
  • Log all status changes for audit purposes