We price it
Per-kilometre rates by state, optional city fees, interstate pairs, and export lanes live on our desk. Your checkout only displays what we return.
From our desk to your checkout · Partner API v1
We price the delivery, collect the parcel, and move it. You show our live fees, create the order after payment, and hand the customer a booking ID they can track with us.
We are iClose Logistics and Corporate Services. We run dispatch, interstate and international cargo, e-commerce last-mile, haulage, moving, and vehicle hire from Nigeria. This page is for the stores, marketplaces, and corporate accounts we have already approved to plug our desk into their checkout.
Show our delivery charges at checkout. After the customer pays, send the order to us. We lodge it with operations, and the customer follows the shipment the same way they would a booking made on our website.
We set every price from the iClose operations desk. Please do not invent, cache, or override fees. The amount our API returns for that request is the amount we will honour.
Per-kilometre rates by state, optional city fees, interstate pairs, and export lanes live on our desk. Your checkout only displays what we return.
Once the order is with us, our riders and lanes take over. Status updates go to you and to the customer, in Lagos time.
Keep your cart, payment, and customer account. We sit beside checkout as the delivery option, branded as iClose.
GET /v1/distance, then GET /v1/delivery-fees with that state and distance_km. Show the options we send back. The ₦/km is the rate we saved for that state.POST /v1/orders. We record it, email it, and put it on our operations desk and on your partner dashboard.A booking made on our website at book.php does not use a partner API key. We file it under the website channel, give it a booking ID first, and add a tracking number when operations assigns the job. Orders you create through this API receive both identifiers immediately.
Send your key on every private request. Our catalogue, service status, this page, and public tracking do not need one.
X-API-Key: YOUR_KEY
We also accept Authorization: Bearer YOUR_KEY, or ?api_key=YOUR_KEY for the checkout widget. If a key is inactive we return HTTP 403.
Need a key? Ask us for access. Once we approve you, credentials sit under API setup on the partner desk.
We quote only from rates our administration has saved. There are no named product codes to pick. Ask us for a fee, then show that fee.
Same-state deliveries are priced as driving kilometres × the ₦/km we saved for that state under Delivery prices. Optional city flat fees appear only if you send a city id or exact city name.
GET http://www.iclose.com.ng/api/v1/distance?pickup=12 Adeola Odeku, Victoria Island, Lagos&dropoff=Lekki Phase 1, Lagos
X-API-Key: YOUR_KEY
GET http://www.iclose.com.ng/api/v1/delivery-fees?service=ecommerce&state=ng-la&pickup=12 Adeola Odeku, Victoria Island, Lagos&dropoff=Lekki Phase 1, Lagos&distance_km=3.49&weight_kg=1.2
X-API-Key: YOUR_KEY
We multiply distance_km by the state’s rate (or the service default if that state has no row). Weight above the service maximum is added automatically. City-only checkout still works:
GET http://www.iclose.com.ng/api/v1/delivery-fees?service=ecommerce&destination=Wuse 2&weight_kg=1.2
GET http://www.iclose.com.ng/api/v1/delivery-fees?service=interstate&origin_state=Lagos&destination_state=FCT&weight_kg=8
GET http://www.iclose.com.ng/api/v1/delivery-fees?service=international&origin_country=Nigeria&destination_country=United Kingdom&weight_kg=2
POST /v1/delivery-fees accepts the same fields as JSON. Use GET /v1/locations to fill city and state lists from the places we actually serve.
Call this after the customer has paid. We need sender name, phone, and city; recipient name, phone, and city; and a parcel description. Include service and the rate_type the customer chose (per_km or city). For kilometre pricing also send state (or origin_state / destination_state) and distance_km.
POST http://www.iclose.com.ng/api/v1/orders
Content-Type: application/json
X-API-Key: YOUR_KEY
{
"service": "ecommerce",
"rate_type": "per_km",
"reference": "ORD-2001",
"state": "ng-la",
"origin_state": "ng-la",
"destination_state": "ng-la",
"distance_km": 3.49,
"sender": {
"name": "Demo Store",
"phone": "08031234567",
"email": "store@example.com",
"city": "Lagos",
"state": "ng-la",
"address": "12 Adeola Odeku, Victoria Island, Lagos"
},
"recipient": {
"name": "Titi Adebayo",
"phone": "08145551212",
"city": "Lagos",
"state": "ng-la",
"address": "Lekki Phase 1, Lagos"
},
"parcel": {
"weight_kg": 1.2,
"description": "Ankara wrap dress",
"value": 18000
}
}
We send back a booking_code (share it as you would a website booking ID) and a tracking_code (ready for our track page). Status starts at booked.
Haulage, vehicle rental, and moving are not priced at checkout. Send "confirm_later": true, or book them from the partner desk. We record the amount as “To be confirmed” and our desk will agree the fee with you.
You can cancel only while the status is still booked:
POST http://www.iclose.com.ng/api/v1/orders/{id}/cancel
X-API-Key: YOUR_KEY
{id} may be the shipment id, booking ID, or tracking number. After we confirm the job, ask for cancellation from the partner desk; the API will return HTTP 409.
No API key. Booking IDs and tracking numbers both work, exactly as they do on our public track page.
GET http://www.iclose.com.ng/api/v1/track/BK12AB34
Our operations team moves each order through these statuses. Every change emails the customer and the partner, with Lagos time on the subject line.
| Method | Path | Key | What it is for |
|---|---|---|---|
| GET | /v1 | No | Our catalogue and dashboard links |
| GET | /v1/status | No | Whether our service is up |
| GET | /v1/track/{code} | No | Public tracking |
| GET | /v1/account | Yes | Your services and checkout defaults |
| GET | /v1/services | Yes | Services enabled on your partner desk |
| GET | /v1/locations | Yes | Countries, states, and cities we serve |
| GET | /v1/places | Yes | Address suggestions as the customer types |
| GET / POST | /v1/distance | Yes | Kilometres from pickup to drop-off |
| GET / POST | /v1/delivery-fees | Yes | Checkout prices from our desk |
| POST | /v1/quotes | Yes | One priced option |
| POST | /v1/orders | Yes | Hand us a paid shipment |
| GET | /v1/orders | Yes | Your organisation’s orders with us |
| GET | /v1/orders/{id} | Yes | A single order |
| POST | /v1/orders/{id}/cancel | Yes | Cancel if we have not confirmed yet |
/v1/shipments is another name for /v1/orders. When we succeed the body looks like { "success": true, "message": "…", "data": … }. Failures return success: false with HTTP 401, 403, 404, 409, or 422.
On your cart, the customer picks a state, then types pickup and drop-off. Address suggestions appear as they type. After they pick a place, we measure the kilometres, show that distance, ask for the fee, and write the selected option into hidden fields. Listen for iclose:route (kilometres) and iclose:fee (price).
A close view of the widget itself:
Place this markup on your cart or checkout page:
<select id="customer_state" name="state"></select>
<input id="pickup_address" name="pickup" placeholder="Pickup address">
<input id="dropoff_address" name="dropoff" placeholder="Drop-off address">
<div id="iclose-delivery"></div>
<input type="hidden" name="iclose_lane" id="iclose_lane">
<input type="hidden" name="iclose_amount" id="iclose_amount">
<input type="hidden" name="distance_km" id="distance_km">
<script
src="http://www.iclose.com.ng/api/widget.js"
data-key="YOUR_KEY"
data-service="ecommerce"
data-target="#iclose-delivery"
data-state-input="#customer_state"
data-pickup-input="#pickup_address"
data-dropoff-input="#dropoff_address"
data-weight="1.2">
</script>
On localhost use the local widget file, not iclose.com.ng: ../api/widget.js with the test key. The widget fills Nigerian states itself. See the raw snippet or the demo checkout.
We are iClose Logistics and Corporate Services. Partner API v1.
Talk to us on
07055858658
or 08131564121
.
Base URL for this installation: http://www.iclose.com.ng/api