Hire a nearby peer shipper for any parcel, even one sold outside Snuggoo (your own store, Instagram, WhatsApp). Your delivery fee sits in escrow, the shipper posts the item's value as an insurance deposit, and a one-time delivery code settles the handoff.
Have a delivery id (it looks like DLV-…)? Enter it to see where the parcel is. This shows the stage and route only, never names, phone numbers, or addresses.
Add Pickup and Receiver contact details, add item details, the declared item value, and the shipping fee you'll pay. The fee is frozen from your Snuggoo wallet the moment you post.
Shippers covering your route are alerted. To accept, a shipper must freeze the FULL declared item value from their own wallet as an insurance deposit.
The shipper collects the parcel and uploads pickup proof (a photo or a short clip) before the job moves in transit.
You share the 6-digit delivery code with the Receiver. The shipper enters it at handoff: they get the shipping fee plus their insurance deposit refunded, instantly. No code? You confirm from your delivery page instead.
| Protection | What it means |
|---|---|
| Escrowed fee | Your delivery fee is held by Snuggoo at posting. The shipper is paid only when the delivery settles. Cancel while the job is still open and the fee returns in full. |
| Insurance deposit | The shipper freezes the parcel's declared value before they can touch it. If the delivery fails, the deposit is forfeited to you and your fee is refunded, so a lost parcel is covered up to the value you declared. |
| Delivery code | A 6-digit code only you (the poster) can see. Hand it to the recipient; the shipper can settle only by entering it at handoff. A wrong code changes nothing. |
| Pickup proof | Photo or video proof is required at pickup, so there's a record of the parcel's condition when it left your hands. |
Anyone with a Snuggoo account can earn by delivering. Opt in under Settings → P2P shipping, pick the routes you cover, and you'll be alerted when a matching package is posted. Accepting freezes the declared value from your wallet as the insurance deposit; it thaws the moment the delivery settles, together with your fee.
Selling on your own website or another marketplace? Create deliveries programmatically and track them from your system. The API is the same delivery product: escrowed fee, insurance deposit, delivery code, pickup proof.
You need a Snuggoo API key with the deliveries.create permission (create one under Settings → Developer on snuggoo.com). Keys support IP allowlists and per-currency spend caps, so a leaked key has a bounded blast radius. Full API reference: developers.snuggoo.com.
Create a delivery. Body: pickup + dropoff contact blocks ({ name, phone, country, state, city, address }), a parcel ({ description, weight? }), the declared value, your fee, and useDeliveryCode (on by default; pass false to opt out). Returns the delivery plus the deliveryCode; the code also stays readable on every later GET, for your system only, never the shipper.
Track a delivery: stage (open → pickup → in-transit → delivered → completed), the shipper once accepted, pickup proof, and the event timeline.
Confirm receipt: pays the shipper's fee and thaws their deposit. Only needed when the delivery code wasn't used at handoff.
Cancel while still open (no shipper yet). The escrowed fee refunds in full.
# 1. Create a delivery (fee is escrowed from your wallet) curl -X POST https://api.snuggoo.com/v1/deliveries \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -d '{ "pickup": { "name": "Ada Store", "phone": "+2348010000001", "country": "ng", "state": "Lagos", "city": "Ikeja", "address": "Warehouse 4" }, "dropoff": { "name": "Chidi Okafor", "phone": "+2348010000002", "country": "ng", "state": "Lagos", "city": "Lekki", "address": "Block 12, Admiralty Way" }, "parcel": { "description": "Sneakers, boxed", "weight": "1.2kg" }, "value": 45000, "fee": 2500 }' # → { "ok": true, "delivery": { "id": "DLV-…", "stage": "open", … }, "deliveryCode": "482913" } # Give the deliveryCode to your buyer; the shipper enters it at handoff. # 2. Track it curl https://api.snuggoo.com/v1/deliveries/DLV-… \ -H "Authorization: Bearer sk_live_…"
Instead of polling, set a webhookUrl on your API key (Settings → Developer). You'll receive a webhookSecret once; store it. Snuggoo then pushes signed events as your deliveries move:
| Event | Fired when |
|---|---|
delivery.accepted | A shipper accepted and froze the insurance deposit. |
delivery.picked_up | Pickup proof uploaded; parcel is in transit. |
delivery.delivered | Shipper marked delivered without a code; your confirmation is awaited. |
delivery.completed | Settled: fee paid, deposit thawed (code entered or you confirmed). |
delivery.failed | Delivery failed: deposit forfeited to you, fee refunded. |
delivery.cancelled | You cancelled an open delivery; fee refunded. |
Each POST carries X-Snuggoo-Signature: t=<unixSecs>,v1=<hex>, an HMAC-SHA256 of <t>.<rawBody> with your webhook secret. Verify before trusting:
// Node.js const crypto = require('crypto'); function verifySnuggoo(rawBody, sigHeader, secret) { const parts = Object.fromEntries(sigHeader.split(',').map(p => p.split('='))); const expected = crypto.createHmac('sha256', secret) .update(parts.t + '.' + rawBody).digest('hex'); return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1 || '')); }
2xx quickly. Snuggoo retries twice on network errors and 5xx; a 4xx is treated as a rejection and not retried. Events are best-effort: keep GET /v1/deliveries/:id as your source of truth.You (the poster) pay the delivery fee. The shipper earns it at settlement. Snuggoo holds both the fee and the shipper's deposit in escrow while the job runs.
Your local Snuggoo wallet currency. The fee, the deposit, and every refund move in that one currency.
The shipper marks the job failed (or you dispute it): their deposit, equal to the value you declared, is forfeited to you, and your fee is refunded.
Deliveries roll out market by market. When the module isn't enabled yet for the platform, the API answers 403 module_disabled and the Deliveries page on snuggoo.com says so.