Delivery at checkout, no fleet
Offer fast delivery at the point of sale without hiring drivers or running a team of your own.
Offload the logistics: you sell and collect the product's price normally, through your own method. courrier handles only the delivery — the customer picks this freight at checkout, authorizes pickup and pays the protected freight. No cost and no responsibility for the store after pickup.
POST /v1/store/deliveries HTTP/1.1
Host: api.courrier.app
Content-Type: application/json
Authorization: Courrier-HMAC-SHA256 key_id=store_4f3a9c
x-courrier-timestamp: 1718900000
x-courrier-signature: 9f86d081884c7d659a2feaa0c55ad015
{
"currency": "BRL",
"items": [
{ "name": "Running shoes", "quantity": 1, "unitAmount": 29900 }
],
"buyer": {
"name": "Ana Souza",
"phone": "+5511998877665",
"country": "BR",
"state": "SP"
},
"pickup": {
"address": "Rua Augusta, 1200",
"city": "Sao Paulo",
"state": "SP"
}
}# sign the HMAC-SHA256 with your secret over:
signature = HMAC_SHA256(secret, `${ts}.${METHOD}.${url}.${rawBody}`)
Why integrate
courrier handles last-mile delivery for your store, with protected payment and rated couriers assigned by the system.
Offer fast delivery at the point of sale without hiring drivers or running a team of your own.
The product's sale and payment are yours, through your own method — courrier doesn't touch them. Here only the freight is protected, in escrow until confirmation.
You ship the product separately; courrier handles freight, assignment and tracking. Your responsibility ends at pickup.
The system assigns a verified, rated courier to every trip — no need for you to choose.
Your store's role
Full transparency: your store pays nothing and your part ends at pickup. See exactly how far your responsibility goes.
Responsibility timeline
Order
sale closed at your checkout
Customer authorizes pickup
the customer releases pickup to the carrier
End of the store's responsibilityOn the way
transport under the courier's responsibility
Delivered
the customer confirms receipt
From here on it's just visibility: you follow along via API if you want, rate the courier and receive feedback — with no new obligation.
There's no monthly fee and no charge for the store. The commission comes out of the freight agreed between buyer and courier — your store pays nothing.
The one responsible for the delivery is the courier (the carrier). It's not your store and it's not courrier — it's whoever does the transport.
Your store's customer is the one who picks this kind of freight and who authorizes handing the product over to the carrier (the pickup).
Once the pickup is authorized, the store has done its part and has no further tie to the delivery.
So you can still follow along, the system exposes the delivery status via API until it's delivered. You can show this in your own system or not — it's just visibility.
Even with no tie, the store can rate the courier's behavior at pickup (a score) and receive feedback on how the delivery went.
Integration
One HMAC-signed server-to-server call and status webhooks. No mandatory SDK, no heavy dependency.
In the store dashboard you create the account and generate a key pair (key_id + secret). The secret never travels — it only signs requests on your server.
You've already collected the product's price through your own method. When the sale closes, your server makes a signed POST (HMAC-SHA256) to /v1/store/deliveries with items, buyer and pickup address — just to arrange the delivery.
courrier sends signed webhooks on every order status change. Your responsibility ends at pickup — the rest is just visibility.
POST /v1/store/deliveries HTTP/1.1
Host: api.courrier.app
Content-Type: application/json
Authorization: Courrier-HMAC-SHA256 key_id=store_4f3a9c
x-courrier-timestamp: 1718900000
x-courrier-signature: 9f86d081884c7d659a2feaa0c55ad015
{
"currency": "BRL",
"items": [
{ "name": "Running shoes", "quantity": 1, "unitAmount": 29900 }
],
"buyer": {
"name": "Ana Souza",
"phone": "+5511998877665",
"country": "BR",
"state": "SP"
},
"pickup": {
"address": "Rua Augusta, 1200",
"city": "Sao Paulo",
"state": "SP"
}
}# sign the HMAC-SHA256 with your secret over:
signature = HMAC_SHA256(secret, `${ts}.${METHOD}.${url}.${rawBody}`)
Each status change (assigned, in escrow, on the way, delivered, released) fires a signed webhook. Failed? courrier resends automatically with backoff.
Protection built in
Protection isn't a marketing promise — it's in the protocol. Freight sits in a 2-of-3 vault that no one can withdraw alone.
The amount goes to a vault that requires 2 of 3 signatures (you, the courier and courrier) — no one withdraws alone. It's only released when you confirm the delivery.
Cost for the store
courrier charges the store nothing: no fee, no commission, no subscription. You sell and collect the product's price normally, through your own method — you just outsource the delivery.
$0
cost for the store
no fee, commission or subscription
100%
of the product is yours
you sell and collect through your own method
100%
of freight protected
in escrow until confirmation
The commission (10% of the freight) is charged to the courier, on the delivery amount — never to the store or the product.
Create your store account, generate an API key and run your first checkout in minutes. Creating an account is free.
HMAC-signed checkout · Status webhooks · Payment via PIX/DePix launching soon