Shop Delivery
ON THIS PAGE
If you want to provide your own delivery charge quotes to customers, Shop checkout can receive a live delivery charge through a dedicated quote API endpoint.
Configuration
These fields are set in your Configuration settings, under Control → Supplier → Configuration.
| Field | Default | Description |
|---|---|---|
delivery_charge_method | Delivery costs on request | - My calculation (via API) - OpenSolar calculation - Delivery costs on request |
delivery_endpoint_url | null | Your delivery quote URL. Must be HTTPS. Cleared when any other method is selected. |
In order to provide live delivery quotes to customers, select "My Calculation (via API)" and enter your endpoint URL in the delivery_endpoint_url field.
When a customer creates a basket and navigates to checkout, OpenSolar sends a POST to your delivery_endpoint_url in order to present them with a charge.
Fields Sent
| Field | Type | Description |
|---|---|---|
total_price | string | Total price including tax. |
items | array | List of items in the order. |
items: total_price | string | Line item total price. |
shipping_info | object | Shipping and delivery details. |
delivery_date | string | Chosen date of delivery in DD/MM/YYYY format. |
delivery_time | string | Chosen time of delivery in ISO time format. |
selected_supplier_location | string | The key for the selected stock location for delivery. |
Request
{
"total_price": "3877.50",
"items": [
{
"product_code": "AIKO-A455-MAH54Mb/2S",
"quantity": 12,
"total_price": "2226.00"
}
],
"shipping_info": {
"delivery_method": "delivery",
"delivery_date": "31/07/2025",
"delivery_time": "09:30:00+10:00",
"address": {
"address": "123 Solar Drive",
"locality": "Sydney",
"state": "NSW",
"zip": "2000",
"country_name": "Australia",
"selected_supplier_location": "sydney"
}
}
}
Your endpoint should then respond with one or more shipping options to be surfaced to the customer. In cases where no shipping options are available, you can return an empty array and OpenSolar will inform the customer that shipping will be arranged separately once the order is placed.
Response
{
"currency": "GBP",
"shipping_options": [
{
"carrier_name": "DHL Express",
"carrier_service": "Standard shipping",
"shipping_cost": 88.50,
"eta_utc": "2026-09-17T02:30:00Z",
"notes": "Signature required."
}
]
}
| Field | Required | Description |
|---|---|---|
currency | Yes | Currency of the shipping costs. |
shipping_options | Yes | At least one shipping option. |
carrier_name | Yes | Carrier name. |
carrier_service | Yes | Service name. |
shipping_cost | Yes | Delivery cost, 0 or more. |
eta_utc | No | Estimated arrival time in UTC. |
notes | No | Text note. |