Skip to content
LocQar
Developers

The LocQar API
for builders in Ghana.

REST endpoints, partner-key auth, and outbound webhooks. Integrate smart-locker delivery into your checkout, OMS, or courier app in an afternoon.

Already a partner? Sign in to the Business Portal

Quickstart

Make your first call in 60 seconds

No key yet? Everything under public endpoints is unauthenticated , you can try the API before you talk to us.

Base URL
https://api.locqar.com
Auth header
x-api-key: lq_live_…

Use lq_test_… keys for sandbox runs that don't hit production.

Get a key

Keys live inside a business account. Apply here; once it is approved, open the Business Portal and generate one on the API keys tab.

curl -X POST https://api.locqar.com/api/partner/shipments \
  -H 'x-api-key: lq_live_…' \
  -H 'Content-Type: application/json' \
  -d '{
    "recipientName": "Ama",
    "recipientPhone": "+233509876543",
    "reference": "#1001",
    "destinationLockerCode": "LQ-UG-01"
  }'
Official SDK

Build faster with TypeScript

The official Node.js SDK provides typed shipment, location, pricing and tracking methods, consistent API errors, timeouts, and secure webhook verification. Node.js 18 or newer is required.

npm install locqar

import { LocQar } from 'locqar';

const locqar = new LocQar({
  apiKey: process.env.LOCQAR_API_KEY,
});

const shipment = await locqar.shipments.create({
  recipientName: 'Ama Mensah',
  recipientPhone: '+233509876543',
  reference: 'ORDER-1001',
  destinationLockerCode: 'LQ-UG-01',
});

console.log(shipment.dropoffCode);
Sandbox ready

Use an lq_test_... key with the same client. Test shipments return synthetic references without creating orders or sending notifications.

Available resources

shipments, locations, pricing, and tracking mirror the live API.

Verify a webhook from its raw body
import { constructWebhookEvent } from 'locqar';

const event = constructWebhookEvent(
  rawRequestBody,
  request.headers['x-locqar-signature'],
  process.env.LOCQAR_WEBHOOK_SECRET,
);
No auth required

Public endpoints

These mirror what locqar.com exposes to anonymous users. Safe to call from a browser. Rate-limited per IP.

Tracking

Look up package status by waybill. No authentication is required. This is the same data shown on the public tracking page.

GET/api/public/track/:waybillStatus, station and ETA for a waybill or pickup code.
curl https://api.locqar.com/api/public/track/LQ-8294

Sellers

Verified-seller directory powering the Marketplace and Verify pages.

GET/api/public/sellersList all verified sellers (paginated).
curl https://api.locqar.com/api/public/sellers
GET/api/public/sellers/:codeFull profile for a single seller by their public code.
curl https://api.locqar.com/api/public/sellers/SHOP-001
POST/api/public/sellers/applySubmit a seller verification application.
curl -X POST https://api.locqar.com/api/public/sellers/apply \
  -H 'Content-Type: application/json' \
  -d '{"businessName":"Acme","phone":"+233241234567"}'

Agents

Dropbox-agent directory and rating submissions.

GET/api/public/agentsList active Dropbox Agents (filter by city via query).
curl https://api.locqar.com/api/public/agents?city=accra
GET/api/public/agents/verify?code=…Verify an agent code printed on a sealed parcel.
curl https://api.locqar.com/api/public/agents/verify?code=AG-1234
POST/api/public/agents/rateSubmit a 1-5 star rating for the agent who handled a ticket.
curl -X POST https://api.locqar.com/api/public/agents/rate \
  -H 'Content-Type: application/json' \
  -d '{"ticketReference":"TKT-9","rating":5}'

Pricing

Public product rate card used by LocQar order channels.

GET/api/public/pricingReturns the active rate card. Final prices can vary by product, duration and location.
curl https://api.locqar.com/api/public/pricing

Orders & dropoffs

Customer-facing flows for buy-with-escrow and dropoff PIN creation.

POST/api/public/ordersCreate a buy-with-escrow order against a verified seller.
curl -X POST https://api.locqar.com/api/public/orders \
  -H 'Content-Type: application/json' \
  -d '{"sellerCode":"SHOP-001","amountCents":15000}'
GET/api/public/orders/:referenceRead order state by reference.
curl https://api.locqar.com/api/public/orders/ORD-123
POST/api/public/dropoff/drop-off-pinGenerate a drop-off PIN for the sender (Customer-app uses this).
curl -X POST https://api.locqar.com/api/public/dropoff/drop-off-pin \
  -H 'Content-Type: application/json' \
  -d '{"phone":"+233241234567"}'
Auth required

Partner endpoints

Send x-api-key on every request. Every call is automatically scoped to your business. Tier shown is the minimum subscription that unlocks the route.

POST/api/partner/shipmentsStarter+Register one shipment, get back a drop-off PIN for your courier.
curl -X POST https://api.locqar.com/api/partner/shipments \
  -H 'x-api-key: lq_live_…' \
  -H 'Content-Type: application/json' \
  -d '{"recipientPhone":"+233509876543","reference":"#1001"}'
GET/api/partner/shipmentsStarter+List all shipments for the partner this key belongs to.
curl https://api.locqar.com/api/partner/shipments -H 'x-api-key: lq_live_…'
POST/api/partner/shipments/bulkGrowth+Register up to 500 shipments in one call. Returns per-row PINs and errors.
curl -X POST https://api.locqar.com/api/partner/shipments/bulk \
  -H 'x-api-key: lq_live_…' \
  -H 'Content-Type: application/json' \
  -d '{"rows":[{"recipientPhone":"+233...","reference":"#1001"}]}'
GET/api/partner/shipments/:refStarter+Live status for one shipment (locker, pickup-code state, COD).
curl https://api.locqar.com/api/partner/shipments/REF-1001 -H 'x-api-key: lq_live_…'
POST/api/partner/shipments/:ref/resend-pickup-smsGrowth+Re-fire the pickup SMS to the recipient (rate-limited per shipment).
curl -X POST https://api.locqar.com/api/partner/shipments/REF-1001/resend-pickup-sms \
  -H 'x-api-key: lq_live_…'
GET/api/partner/lockersStarter+Locker directory for your checkout selector (filter by city or region).
curl 'https://api.locqar.com/api/partner/lockers?city=accra' -H 'x-api-key: lq_live_…'
GET/api/partner/quoteStarter+Price quote (incl. COD fees) before committing a shipment.
curl 'https://api.locqar.com/api/partner/quote?hours=72' -H 'x-api-key: lq_live_…'
Outbound events

Webhooks

Subscribe in the Business Portal → Webhooks. Every delivery is signed with an HMAC-SHA256 in X-LocQar-Signature. A 5xx or a timeout is retried , three attempts in all, spaced 5s then 30s. A 4xx is treated as a rejection and never retried. After that the delivery is marked failed, and you replay it yourself from the delivery log in the portal.

Dropoff lifecycle
  • dropoff.created
  • dropoff.deposited
  • dropoff.sealed
  • dropoff.swept
  • dropoff.delivered
  • dropoff.picked_up
  • dropoff.cancelled
Returns
  • return.authorised
  • return.deposited
  • return.delivered
Relay (cross-location)
  • relay.collected
  • relay.arrived_at_sorting
  • relay.out_for_delivery
  • relay.delivered
  • relay.incident
Payments (COD)
  • payment.initiated
  • payment.paid
  • payment.failed
  • payment.refunded
Reputation
  • agent.rated
Sample payload
POST https://your-app.example.com/locqar-hook
X-LocQar-Signature: sha256=8f3e…
Content-Type: application/json

{
  "event": "dropoff.picked_up",
  "occurredAt": "2026-05-24T10:14:33.512Z",
  "data": {
    "reference": "REF-1001",
    "waybill": "LQ-8294",
    "pickupTerminal": "accra-mall",
    "recipientPhone": "+233509876543",
    "pickedUpAt": "2026-05-24T10:14:30.000Z"
  }
}
Ready to ship?

Apply for a business account. Once it is approved you can generate a sandbox key in the portal and build the whole integration against it before a single real parcel moves. Not sure it fits what you are building? Ask us first , a person answers.

Or email business@locqar.com.