curl -X POST "$RUN_BASE_URL/business/order" \
-H "Authorization: Bearer $RUN_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"dropoff_address": "24 Allen Avenue, Ikeja, Lagos",
"dropoff_state": "Lagos",
"recipient_name": "Adewale Johnson",
"recipient_phone": "+2348022222222",
"item_name": "Shoes",
"weight": 2,
"quantity": 1,
"vehicle_type": "bike"
}
]'
const res = await fetch(`${process.env.RUN_BASE_URL}/business/order`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.RUN_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify([
{
dropoff_address: '24 Allen Avenue, Ikeja, Lagos',
dropoff_state: 'Lagos',
recipient_name: 'Adewale Johnson',
recipient_phone: '+2348022222222',
item_name: 'Shoes',
weight: 2,
quantity: 1,
vehicle_type: 'bike',
},
]),
});
const result = await res.json();
import os
import requests
res = requests.post(
f"{os.environ['RUN_BASE_URL']}/business/order",
headers={
"Authorization": f"Bearer {os.environ['RUN_API_KEY']}",
"Content-Type": "application/json",
},
json=[
{
"dropoff_address": "24 Allen Avenue, Ikeja, Lagos",
"dropoff_state": "Lagos",
"recipient_name": "Adewale Johnson",
"recipient_phone": "+2348022222222",
"item_name": "Shoes",
"weight": 2,
"quantity": 1,
"vehicle_type": "bike",
}
],
)
result = res.json()
<?php
$ch = curl_init(getenv('RUN_BASE_URL') . '/business/order');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('RUN_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
[
'dropoff_address' => '24 Allen Avenue, Ikeja, Lagos',
'dropoff_state' => 'Lagos',
'recipient_name' => 'Adewale Johnson',
'recipient_phone' => '+2348022222222',
'item_name' => 'Shoes',
'weight' => 2,
'quantity' => 1,
'vehicle_type' => 'bike',
],
]),
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
body := []byte(`[
{
"dropoff_address": "24 Allen Avenue, Ikeja, Lagos",
"dropoff_state": "Lagos",
"recipient_name": "Adewale Johnson",
"recipient_phone": "+2348022222222",
"item_name": "Shoes",
"weight": 2,
"quantity": 1,
"vehicle_type": "bike"
}
]`)
req, _ := http.NewRequest(
"POST",
os.Getenv("RUN_BASE_URL")+"/business/order",
bytes.NewReader(body),
)
req.Header.Set("Authorization", "Bearer "+os.Getenv("RUN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}
{
"status": "Success",
"description": "Order successfully created",
"currency": "NGN",
"charged_total": 5300,
"orders": [
{ "order_id": "RUN-A1B2C3D4", "price": 5300 }
]
}
{
"statusCode": 400,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "Insufficient wallet balance"
}
{
"statusCode": 400,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "One or more orders could not be placed"
}
{
"statusCode": 401,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "Invalid API key"
}
{
"statusCode": 403,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "Insufficient API key scope"
}
Place orders
Place one or more Local orders and debit the Business wallet.
POST
/
business
/
order
curl -X POST "$RUN_BASE_URL/business/order" \
-H "Authorization: Bearer $RUN_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"dropoff_address": "24 Allen Avenue, Ikeja, Lagos",
"dropoff_state": "Lagos",
"recipient_name": "Adewale Johnson",
"recipient_phone": "+2348022222222",
"item_name": "Shoes",
"weight": 2,
"quantity": 1,
"vehicle_type": "bike"
}
]'
const res = await fetch(`${process.env.RUN_BASE_URL}/business/order`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.RUN_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify([
{
dropoff_address: '24 Allen Avenue, Ikeja, Lagos',
dropoff_state: 'Lagos',
recipient_name: 'Adewale Johnson',
recipient_phone: '+2348022222222',
item_name: 'Shoes',
weight: 2,
quantity: 1,
vehicle_type: 'bike',
},
]),
});
const result = await res.json();
import os
import requests
res = requests.post(
f"{os.environ['RUN_BASE_URL']}/business/order",
headers={
"Authorization": f"Bearer {os.environ['RUN_API_KEY']}",
"Content-Type": "application/json",
},
json=[
{
"dropoff_address": "24 Allen Avenue, Ikeja, Lagos",
"dropoff_state": "Lagos",
"recipient_name": "Adewale Johnson",
"recipient_phone": "+2348022222222",
"item_name": "Shoes",
"weight": 2,
"quantity": 1,
"vehicle_type": "bike",
}
],
)
result = res.json()
<?php
$ch = curl_init(getenv('RUN_BASE_URL') . '/business/order');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('RUN_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
[
'dropoff_address' => '24 Allen Avenue, Ikeja, Lagos',
'dropoff_state' => 'Lagos',
'recipient_name' => 'Adewale Johnson',
'recipient_phone' => '+2348022222222',
'item_name' => 'Shoes',
'weight' => 2,
'quantity' => 1,
'vehicle_type' => 'bike',
],
]),
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
body := []byte(`[
{
"dropoff_address": "24 Allen Avenue, Ikeja, Lagos",
"dropoff_state": "Lagos",
"recipient_name": "Adewale Johnson",
"recipient_phone": "+2348022222222",
"item_name": "Shoes",
"weight": 2,
"quantity": 1,
"vehicle_type": "bike"
}
]`)
req, _ := http.NewRequest(
"POST",
os.Getenv("RUN_BASE_URL")+"/business/order",
bytes.NewReader(body),
)
req.Header.Set("Authorization", "Bearer "+os.Getenv("RUN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}
{
"status": "Success",
"description": "Order successfully created",
"currency": "NGN",
"charged_total": 5300,
"orders": [
{ "order_id": "RUN-A1B2C3D4", "price": 5300 }
]
}
{
"statusCode": 400,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "Insufficient wallet balance"
}
{
"statusCode": 400,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "One or more orders could not be placed"
}
{
"statusCode": 401,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "Invalid API key"
}
{
"statusCode": 403,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "Insufficient API key scope"
}
Place one or more Local orders. The body is a JSON array of 1–100 shipments. Run re-quotes, creates dispatches, and debits your Business wallet in one transaction.
Requires scope:
orders:write
Headers
string
required
Bearer API key (
Bearer <api_key>).string
required
Must be
application/json.Body
Each array item supports:string
required
Delivery destination (≥ 5 chars).
string
required
Delivery state.
string
required
Recipient name.
string
required
Recipient phone.
string
required
Item name.
number
required
Weight per unit in kg (0.1–100).
number
required
Quantity (≥ 1).
string
Defaults to business profile address.
string
Defaults to business profile state.
string
Defaults to business name.
string
Defaults to business phone.
string
Optional email.
string
Optional alternate phone.
string
Optional category.
string
Optional description.
number
Optional declared value.
boolean
Fragile flag.
string
bike, bus_van, or truck. Prefer this for rate-card pricing. See Rate cards.string
Option id from the catalog. Required for
bus_van / truck; omit for bike.number
Optional pickup latitude.
number
Optional pickup longitude.
number
Optional drop-off latitude.
number
Optional drop-off longitude. If all four lat/lng are set, geocode is skipped.
Response
string
"Success" on success.string
Human-readable result.
string
Currency code.
number
Total debited from the Business wallet.
array
Created orders with
order_id and price.Wallet balance. Fund your Business wallet from the dashboard before placing orders. Insufficient funds return
400.curl -X POST "$RUN_BASE_URL/business/order" \
-H "Authorization: Bearer $RUN_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"dropoff_address": "24 Allen Avenue, Ikeja, Lagos",
"dropoff_state": "Lagos",
"recipient_name": "Adewale Johnson",
"recipient_phone": "+2348022222222",
"item_name": "Shoes",
"weight": 2,
"quantity": 1,
"vehicle_type": "bike"
}
]'
const res = await fetch(`${process.env.RUN_BASE_URL}/business/order`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.RUN_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify([
{
dropoff_address: '24 Allen Avenue, Ikeja, Lagos',
dropoff_state: 'Lagos',
recipient_name: 'Adewale Johnson',
recipient_phone: '+2348022222222',
item_name: 'Shoes',
weight: 2,
quantity: 1,
vehicle_type: 'bike',
},
]),
});
const result = await res.json();
import os
import requests
res = requests.post(
f"{os.environ['RUN_BASE_URL']}/business/order",
headers={
"Authorization": f"Bearer {os.environ['RUN_API_KEY']}",
"Content-Type": "application/json",
},
json=[
{
"dropoff_address": "24 Allen Avenue, Ikeja, Lagos",
"dropoff_state": "Lagos",
"recipient_name": "Adewale Johnson",
"recipient_phone": "+2348022222222",
"item_name": "Shoes",
"weight": 2,
"quantity": 1,
"vehicle_type": "bike",
}
],
)
result = res.json()
<?php
$ch = curl_init(getenv('RUN_BASE_URL') . '/business/order');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('RUN_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
[
'dropoff_address' => '24 Allen Avenue, Ikeja, Lagos',
'dropoff_state' => 'Lagos',
'recipient_name' => 'Adewale Johnson',
'recipient_phone' => '+2348022222222',
'item_name' => 'Shoes',
'weight' => 2,
'quantity' => 1,
'vehicle_type' => 'bike',
],
]),
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
body := []byte(`[
{
"dropoff_address": "24 Allen Avenue, Ikeja, Lagos",
"dropoff_state": "Lagos",
"recipient_name": "Adewale Johnson",
"recipient_phone": "+2348022222222",
"item_name": "Shoes",
"weight": 2,
"quantity": 1,
"vehicle_type": "bike"
}
]`)
req, _ := http.NewRequest(
"POST",
os.Getenv("RUN_BASE_URL")+"/business/order",
bytes.NewReader(body),
)
req.Header.Set("Authorization", "Bearer "+os.Getenv("RUN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}
{
"status": "Success",
"description": "Order successfully created",
"currency": "NGN",
"charged_total": 5300,
"orders": [
{ "order_id": "RUN-A1B2C3D4", "price": 5300 }
]
}
{
"statusCode": 400,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "Insufficient wallet balance"
}
{
"statusCode": 400,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "One or more orders could not be placed"
}
{
"statusCode": 401,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "Invalid API key"
}
{
"statusCode": 403,
"timestamp": "2026-08-12T15:18:51.396Z",
"path": "/api/v2/business/orders",
"message": "Insufficient API key scope"
}
⌘I