FusedShip Integration Guide


Overview

The FusedShip integration layer is for eCommerce and ERP/WMS platforms looking to connect with the MachShip API, and gain access to common features that these platforms require, without needing to extend your platform. This guide is for software vendors looking to integrate with our FusedShip middleware.

The FusedShip integration layer offers:

  • Flexible inbound and outbound languages and structures - so you don't have to modify your system extensively for compatibility
  • Packing rules logic - to covert products into package data prior to quoting
  • Pricing manipulation and grouping

Each platform that integrates via FusedShip is setup inside our integration layer, and a standardised integration is built with your platform.

Direct MachShip vs FusedShip Integration

Feature Direct MachShip API Integration Supported FusedShip Integration
Payload Structure Must conform to API spec Any payload/format accepted
Response Data Standardised, unmodifiable Customised per integration
Packaging Rules None Advanced, customisable
Carrier Restriction/Grouping Very limited Hide carriers/services, surcharges, cheapest price, etc.
Integration Setup Your responsibility Handled by FusedShip team

With a supported integration, your application connects to the FusedShip middleware, which manages all communication, customisation, and maintenance. Your team is only responsible for platform-specific bugs or configuration.

Benefits of Supported Integration

  • Flexible payloads and responses
  • Custom packaging and carrier logic
  • Setup, documentation, and demos provided by FusedShip team
  • Ongoing support and maintenance
  • No need to manage direct MachShip API changes

Fees

Fees are charged to new customers using the integration, based on complexity and support requirements.

Integration Types

FusedShip supports two main integration types. You may implement one or both:

  • Order/Shipment Syncing: Automated pushing of orders/shipments from your platform into MachShip.
  • Live Pricing: Display of live carrier prices in your checkout or sales process.

Order/Shipment Syncing

Requirements

You must provide endpoints or mechanisms for FusedShip to:

  1. Get Order/Shipment Data
    • Filter by status (e.g., unshipped, approved)
    • Filter by modified date/time
  2. Get Order/Shipment by ID
    • Retrieve a single order/shipment by reference and/or ID
  3. (Optional) Webhook for New Orders
    • Notify FusedShip of new orders/shipments, or status events
  4. Update Order/Shipment Data
    • Write back consignment info (ID, carrier, cost, tracking link)
    • Update order/shipment status (e.g., to "shipped")

Supported integration methods:

  • JSON or XML API (preferred: JSON)
  • Webhook (POST in JSON or XML)
  • Flat file (FTP/SFTP)
    • Note, for this method, the endpoints would not be required - we would need a standardised inbound and outbound file.

Data Requirements

Include as much of the following as possible in your payloads:

  • From Address / Warehouse ID: Address, suburb, postcode (phone/email optional), or warehouse ID
  • To Name, Contact & Address: Name, contact, address lines, suburb, postcode, email, phone
  • Order/Shipment References: Order No, So Number, Delivery Number, Shipment Reference etc
  • Shipping Method & Options: e.g., "express", "residential delivery", "tailgate", "signature required"
  • Items/Packages:
    • Item name, SKU, ordered qty
    • Weight and/or dimensions (length, width, height)
    • Item categories/tags (optional)
    • Parent/child item structure (if applicable)
    • Package details (if available)

Note: Field names are flexible; FusedShip will map your structure during integration.

Integration Process

  1. Provide FusedShip with:
    • Preferred integration method
    • Endpoint documentation and field details
    • Authentication details
    • Example payloads
  2. FusedShip builds the integration for a pilot customer
  3. Feedback and adjustments as needed
  4. Documentation and standardised pricing provided

Live Pricing

Requirements

  • POST requests to FusedShip endpoint (JSON preferred, XML supported)
  • Authentication via Integration ID and Token

Data Requirements

Include as much of the following as possible:

  • From Suburb, Postcode, Warehouse ID (address optional, improves accuracy)
  • To Suburb, Postcode (address optional)
  • Shipping Options: e.g., "residential", "authority to leave"
  • Items:
    • Name, SKU, quantity
    • Weight, dimensions (optional but recommended)
    • Categories/tags (optional)
    • Parent/child item structure (if applicable)

No standard field names required; FusedShip will map your structure.

Example Live Pricing Request:

POST https://sync.fusedship.com/live-pricing/your_platform
Headers:
    token: (fusedship token)
    integration_id: (fusedship integration id)

Body:

{
  "quote": {
    "warehouse": {
      "country": "AU",
      "postal_code": "3076",
      "province": "VIC",
      "city": "Epping",
      "address1": "123 main st",
      "address2": "",
      "name": "ABC123"
    },
    "shipping_address": {
      "country": "AU",
      "postal_code": "6720",
      "province": "WA",
      "city": "Wickham",
      "address": "123 main st",
      "address2": "",
      "name": "ABC123"
    },
    "shipping_options": {
      "authority_to_leave": true,
      "residential": false,
      "despatch_datetime_utc": "2024-05-27T13:59:59Z"
    },
    "items": [
      {
        "name": "Banana Bottle 200ml",
        "sku": "BCE345",
        "quantity": 5,
        "weight": 240,
        "price": 328,
        "categories": ["flavoured_drinks", "bottles"],
        "length": 100,
        "width": 20,
        "height": 10,
        "product_meta": {
            "oversize_item": true,
            "other_meta": "value"
        }
      }
    ]
  }
}

Example Live Pricing Response:

{
  "rates": [
    {
      "service_name": "Residential Shipping",
      "description": "Shipping with leading Australian carriers",
      "carrier_id": "513",
      "service_id": "3709",
      "questionIds": ["13","7"],
      "total_price_exc_tax": 28.08,
      "total_price": 28.08,
      "currency": "AUD",
      "eta": "2024-05-27T13:59:59Z"
    },
    {
      "service_name": "Business Shipping",
      "description": "Shipping with leading Australian carriers",
      "carrier_id": "513",
      "service_id": "3709",
      "questionIds": ["7"],
      "total_price_exc_tax": 18.08,
      "total_price": 18.08,
      "currency": "AUD",
      "eta": "2024-05-27T13:59:59Z"
    }
  ],
  "quoted_items": [
    {
      "name": "Box Name",
      "sku": "BOX-SKU-1",
      "quantity": 3,
      "width": 38,
      "length": 71,
      "height": 34,
      "itemType": "Carton",
      "weight": 8.35,
      "consignmentItemContents": [
        {
          "description": "Product In Box",
          "reference1": "PROD",
          "quantity": 1
        }
      ]
    }
  ]
}

Integration Process

  1. Provide FusedShip with example POST payload and desired response
  2. FusedShip provides a URL for posting data
  3. Integration is built and test credentials provided
  4. Documentation and standardised pricing provided

Authentication

  • Order Syncing (Webhook/API): Use Integration ID and Token (for webhook), or FTP/SFTP credentials (for flat file)
  • Live Pricing: Use Integration ID and Token in request headers

Error Handling

FusedShip returns clear error messages for invalid requests.

Example Error Response:

{
  "error": "Invalid from/to location"
}

Common Errors:

  • No prices found (no carriers available)
  • Invalid suburb/postcode

Further Reading & Support