Orders & reports

Deliver with a Stuart courier

Connect your Stuart account to XPRIO so a courier delivers your orders when you have no driver or at peak times. Available in France, the UK and Poland.

Stuart gives you access to its independent couriers without going through an ordering marketplace: the customer orders in your own app, under your name, and Stuart only provides the driver. You pay Stuart’s rate for each trip, with no commission on your sales.

In XPRIO this is called a on-demand courier. You connect it once for your business, then decide, store by store, whether it delivers all your orders or only backs up your own drivers.

What to know before you start

  • The Stuart account is yours. You create it with Stuart, and Stuart bills you for each trip. XPRIO takes nothing.
  • The customer pays your delivery fee, the one set on your store, collected with the order. The cost of the Stuart trip is billed separately, depending on the distance, the package size and the time of day. If your fee is lower than the trip, you cover the difference; if it is higher, you keep it. Once connected, XPRIO shows you the price of a typical trip, tax included.
  • Online payment is mandatory. An on-demand courier collects nothing. The on-demand courier modes only become available once online card payment (Stripe) is set up in your app. Setting up your payment methods
  • Countries covered: France, the United Kingdom and Poland, in the major cities where Stuart operates (129 cities in 2025). XPRIO only offers Stuart for stores in these countries and checks every address at checkout.
  • A bank card must be registered with Stuart before the first trip, including on the test account. Without a card, Stuart refuses to create the delivery.
  • No handover code with Stuart: the proof of delivery is Stuart’s own (signature or photo).
  • A cancellation may be charged once a courier has been assigned. XPRIO warns you before you confirm.

Step 1: open your Stuart accounts

Stuart provides two dashboards, each with its own sign-up:

  • Test account at dashboard.sandbox.stuart.com: simulated trips, nothing billed, available immediately. This is where you will run your tests.
  • Live account at dashboard.stuart.com: request it on stuart.com (Become a client button or equivalent). Stuart calls you back to verify your business, then opens your access.

In both cases, once signed in:

  1. Click your avatar at the top right, then My account.
  2. In the left menu, click Billing and register a bank card. On the test account, any test card works (except American Express), for example 4242 4242 4242 4242 with a future expiry date and a three-digit code. On the live account, use your real card or billing details, depending on your contract.

Step 2: get your keys

  1. Under My account, left menu, click API.
  2. If the page shows No API credentials, click Generate now.
  3. The API credentials section shows three rows, each with a copy icon:
    • Client ID: a long string of characters.
    • API secret key: another long string (this is the “Client secret”). Never share it.
    • Stuart account ID: a six-digit number. You will not need it in XPRIO.

The values shown on screen are truncated: always use the copy icon, never select them with the mouse. The test account and the live account each have their own keys.

Step 3: connect Stuart to XPRIO

  1. In XPRIO, left menu, open App Configuration then On-demand couriers.
  2. On the Stuart card, click Connect.
  3. Under Environment, choose Test for the test account keys, Production for the live account keys.
  4. Paste the Client ID into Client ID and the API secret key into Client secret. The eye icon lets you reveal the secret to check.
  5. Leave Webhook authentication key empty for now (step 4).
  6. Click Save and test. XPRIO connects to Stuart, checks that your store’s address is served and requests a test quote. If the card shows Connected (test) or Connected (production), you are done. Otherwise, a red message shows Stuart’s response: incomplete keys, or a store outside Stuart’s zones.

Once connected, the card shows “Typical trip from your store (about 1.5 km)” with the real price, tax included, returned by Stuart.

Without this step, XPRIO refreshes the status of each trip every 20 seconds, which works fine. With it, Stuart notifies XPRIO instantly on every change (courier assigned, position, order picked up, delivered).

  1. In XPRIO, reopen the Stuart window (Edit on the card). Copy the Notification URL to declare with the provider.
  2. Still in this window, make up a long key (for example 20 characters without spaces), paste it into Webhook authentication key, then Save and test.
  3. In the Stuart dashboard, My account, API: below the credentials section, the Webhooks section reads No Webhooks. Click + Add a new endpoint.
  4. Paste the URL into Webhook URL. In Authentication header, type exactly Authentication-Key (without this name, Stuart does not send the key and XPRIO rejects the events). In Authentication key, paste the same key as in XPRIO. Tick all V2 events (job, delivery, driver). Save.

The Stuart card in XPRIO shows “Real-time notifications active” from the first trip.

Step 5: choose the mode for each store

  1. In XPRIO, Stores menu, open the store (Edit), then the Delivery and Services tab.

  2. Check that the Delivery service is enabled.

  3. In the Who delivers your orders section, choose:

    • My drivers: nothing changes.
    • My drivers + on-demand courier as backup: your drivers stay first; a Call an on-demand courier button appears on every delivery order paid online as long as no driver is assigned. Optional: Automatically call an on-demand courier if no driver takes the order, with a delay of 5 to 30 minutes after “ready”.
    • On-demand courier only: every delivery order is automatically handed to the Stuart courier, at the moment you choose (When to request the courier). The customer only sees online payment.

    If the partner cards are greyed out with “Online payment required”, first enable Stripe under App Configuration, Payment Methods.

  4. Choose Stuart under Provider.

  5. In “on-demand courier only” mode, choose the delivery fee charged to the customer: My fixed fees or The courier price (+ margin). In backup mode the customer always pays your fixed fees.

  6. If needed, add pickup instructions for the courier and decide whether the customer’s tip is passed on to the courier. Save.

In Live and on the customer side

On the order, the On-demand courier block shows, once a courier is assigned, the Stuart courier’s name, phone number, stage (Courier on the way, Courier at the store, Picked up, At the customer, Delivered) and estimated arrival time. Before requesting, the confirmation window shows you the delivery cost, tax included.

The order moves to Out for delivery when the courier picks it up and to Delivered on handover, without any action. You can cancel the courier as long as the order has not been picked up. If Stuart cancels or the order is returned, you receive a notification, a sound and a message in Live, and you can request a new courier or assign one of your drivers.

In your app, the customer sees a On-demand courier contact card with the courier’s first name, a call button, a tracking link, and the live position on the map. On a store in “on-demand courier only” mode, the cart only shows card payment.

Frequently asked questions

Can I test without a real trip? Yes, with the test account connected in the Test environment. In the test dashboard, the Ideal scenario tab lets you move a simulated trip forward step by step and watch the result in Live.

Is Stuart rejecting the trip with a payment error? No card is registered under Billing for this account, or it has expired. Add one and try again.

Can't find your answer?

Replies in writing 7 days a week: within 2 hours on weekdays, the same day at weekends.

Write to us