Add same-day walking delivery to your POS, website, or app in under a day.
POS vendors integrate DeliverLah once and offer same-day delivery to all their merchants. You earn a kickback on every delivery your merchants make.
Getting started as a POS vendor partner:
These endpoints use your partner API key (dlp_ prefix):
/api/partner/merchantsList all merchants under your account with job stats and balances.
/api/partner/merchantsOnboard a new merchant. Provide name, email, phone. Returns API key and temp password.
/api/partner/statsDashboard stats: total merchants, jobs, platform fees, your kickback, monthly breakdown.
/api/partner/topupRequest a balance top-up for a merchant. Provide email and amount.
Merchants use the standard dlh_ merchant API (documented below) for creating jobs, tracking status, and cancellations.
For each merchant onboarded by a partner or signing up independently:
Every request needs your API key in the header:
Authorization: Bearer dlh_your_api_key_here
Base URL: https://www.deliverlah.com/api/v1
/api/v1/jobsCreates a job and deducts from your prepaid balance. The job goes live immediately — Droppers see it on the board and in Telegram within seconds.
{
"pickupName": "My Shop", // Your shop name
"pickupPhone": "+6591234567", // Contact number at pickup
"pickupAddress": "Blk 123 #01-01", // Full address
"pickupPostalCode": "520123", // 6-digit Singapore postal code
"dropoffName": "John Tan", // Customer name
"dropoffPhone": "+6598765432", // Customer phone
"dropoffAddress": "Blk 456 #05-05",// Customer address
"dropoffPostalCode": "460456", // Customer postal code
"parcelSize": "LIGHT", // LIGHT | MEDIUM | HEAVY
"note": "Ring doorbell", // Optional instructions
"pickupTime": "14:00", // Optional, HH:MM format
"priorityFee": 5.00 // Optional, S$0-300
}{
"id": "cmnxxxxx",
"jobNumber": "DL-260407-0001",
"status": "OPEN",
"paymentStatus": "SECURED",
"totalFee": 4.50,
"dropperEarns": 3.00,
"distanceKm": 1.23,
"balanceRemaining": 995.50
}/api/v1/status?id={jobId}Get real-time status of a job. Poll every 30–60 seconds to show progress in your UI. You can use either the job ID or job number.
GET /api/v1/status?id=cmnxxxxx — or — GET /api/v1/status?jobNumber=DL-260407-0001
{
"id": "cmnxxxxx",
"jobNumber": "DL-260407-0001",
"status": "PICKED_UP",
"pickupName": "My Shop",
"dropoffName": "John Tan",
"distanceKm": 1.23,
"totalFee": 4.50,
"proofPhotoUrl": null,
"createdAt": "2026-04-07T10:00:00Z",
"acceptedAt": "2026-04-07T10:02:15Z",
"pickedUpAt": "2026-04-07T10:15:30Z",
"deliveredAt": null,
"dropper": {
"name": "Ahmad",
"rating": 4.8,
"phone": "+6581234567"
},
"dropperLat": 1.3521,
"dropperLon": 103.8198
}/api/v1/jobsReturns your jobs, newest first. Filter by status and paginate.
GET /api/v1/jobs?status=OPEN&limit=20&offset=0
{
"jobs": [ ... ],
"total": 42,
"limit": 20,
"offset": 0
}/api/v1/cancelCancel before delivery. Prepaid balance is refunded instantly — no admin action needed.
{
"id": "cmnxxxxx"
// — or —
"jobNumber": "DL-260407-0001"
}{
"id": "cmnxxxxx",
"jobNumber": "DL-260407-0001",
"status": "CANCELLED",
"refundPending": false
}/api/v1/topupReturns your current balance. Show this in your UI so operators know when to top up.
GET /api/v1/topup
{
"balance": 995.50,
"apiEnabled": true,
"topupAmounts": [50, 100, 200, 500, 1000]
}OPEN — Waiting for a Dropper to accept (typically 1–10 minutes)
ACCEPTED — Dropper is heading to your pickup location
PICKED_UP — Dropper has the parcel
IN_TRANSIT — Dropper is walking to the customer
DELIVERED — Photo proof uploaded, pending confirmation
CONFIRMED — Complete. Dropper gets paid within 24 hours via FAST.
| Parcel Size | Weight | Fee | Dropper Earns |
|---|---|---|---|
| LIGHT | < 3 kg | S$4.50 | S$3.00 |
| MEDIUM | 3–5 kg | S$5.50 | S$4.00 |
| HEAVY | 5–8 kg | S$7.00 | S$5.50 |
Distance surcharge: +S$1.00 per km beyond 1 km (auto-calculated)
Priority fee: S$0–300, optional — 100% goes to Dropper for faster pickup
Merchant commissions: Zero. The delivery fee is the only cost.
Examples using your partner API key (dlp_):
1. Onboard a merchant
curl -X POST https://www.deliverlah.com/api/partner/merchants \
-H "Authorization: Bearer dlp_your_partner_key" \
-H "Content-Type: application/json" \
-d '{
"merchantName": "Kopi Corner",
"merchantEmail": "kopi@example.com",
"merchantPhone": "+6591234567"
}'
# Returns: { merchant: { apiKey: "dlh_xxx", tempPassword: "abc123" } }2. View your dashboard stats
curl https://www.deliverlah.com/api/partner/stats \ -H "Authorization: Bearer dlp_your_partner_key"
3. Top up a merchant
curl -X POST https://www.deliverlah.com/api/partner/topup \
-H "Authorization: Bearer dlp_your_partner_key" \
-H "Content-Type: application/json" \
-d '{
"merchantEmail": "kopi@example.com",
"amount": 100
}'Examples using a merchant API key (dlh_):
1. Create a job
curl -X POST https://www.deliverlah.com/api/v1/jobs \
-H "Authorization: Bearer dlh_your_key" \
-H "Content-Type: application/json" \
-d '{
"pickupName": "My Shop",
"pickupPhone": "+6591234567",
"pickupAddress": "Blk 123 #01-01",
"pickupPostalCode": "520123",
"dropoffName": "Customer",
"dropoffPhone": "+6598765432",
"dropoffAddress": "Blk 456 #05-05",
"dropoffPostalCode": "460456",
"parcelSize": "LIGHT"
}'2. Track status
curl https://www.deliverlah.com/api/v1/status?jobNumber=DL-260407-0001 \ -H "Authorization: Bearer dlh_your_key"
3. Cancel if needed
curl -X POST https://www.deliverlah.com/api/v1/cancel \
-H "Authorization: Bearer dlh_your_key" \
-H "Content-Type: application/json" \
-d '{"jobNumber": "DL-260407-0001"}'4. Check balance
curl https://www.deliverlah.com/api/v1/topup \ -H "Authorization: Bearer dlh_your_key"
| Code | Meaning | Action |
|---|---|---|
| 401 | Invalid API key | Check your Bearer token |
| 402 | Insufficient balance | Top up at deliverlah.com/business |
| 400 | Missing/invalid fields | Check required fields in request body |
| 429 | Rate limited | Max 100 jobs/hour. Wait and retry. |
| 500 | Server error | Retry after 5 seconds |
Job creation: 100 per hour per API key. Status polling: unlimited (recommend 30–60 second intervals). Need higher limits? Contact us.
Need help integrating?
We will work with your development team to get you live.