Uber Direct gives you access to the couriers of the Uber network without going through an ordering marketplace: the customer orders in your own app, under your name, and Uber only provides the driver. You pay each trip at the price set by Uber, with no commission on your sales.
In XPRIO this is called a partner 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 Uber Direct account is yours. You create it with Uber, register your payment method there, and Uber 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 Uber trip is billed separately, depending on the city, the distance and the time of day. If your delivery fee is lower than the trip, you cover the difference; if it is higher, you keep it. Once your account is connected, XPRIO shows you the price of a typical trip from your store.
Online payment is mandatory. A partner courier collects nothing: no cash, no cheque, no card on delivery. The partner courier modes only become available once card payment online (Stripe) is set up in your app. Setting up your payment methods
Coverage depends on the city. Uber Direct works in large cities and their suburbs, not everywhere. XPRIO checks every address at checkout: an address outside the coverage is refused before the order is placed.
A cancellation may be charged by Uber once a courier has been assigned. XPRIO warns you before you confirm.
Allow about an hour for the whole setup: account creation, keys, connection, store settings. Uber may take a few days to validate a live account.
Step 1: create your Uber Direct account
Open merchants.uber.com in your browser and look for Uber Direct in the menu (or go straight to merchants.uber.com/uber-direct).
Click Get started and fill in the business form: legal name, address, tax ID, contact details, payment method. Uber checks this information and validates your account, usually within a few days.
Once validated, sign in at direct.uber.com. This is the Uber Direct dashboard, separate from the Uber Eats app.
Uber gives you two environments:
A test account, free, where deliveries are simulated by a fictional courier and never billed.
Your live account, where real couriers deliver and every trip is billed to you.
At the top of the dashboard, a blue banner reads "You are currently viewing a test account" when you are on the test account, with a Switch account button on the right to move between the two. Do your trials on the test account, then switch to the live account once everything works.
Step 2: get your keys
In the left menu of the Uber Direct dashboard, under Management, click Developer.
Stay on the API keys tab (the first tab, next to Webhooks).
You see the name of your application, then three values, each with a Copy button on the right:
Customer ID: a long string of letters and digits separated by hyphens (for example d5d7125d-53a8-…).
Client ID: a string of characters without regular hyphens (for example 3O9Zffr2-…).
Client secret: hidden by default. Click Show to reveal it, then Copy. Never share it.
These three values differ between the test account and the live account: take those of the environment you want to connect. The blue banner at the top reminds you which one you are on.
Step 3: connect Uber Direct to XPRIO
In XPRIO, left menu, open App Configuration then Partner couriers (New badge).
The page shows the three providers as cards. On the Uber Direct card, click Connect.
A Connect Uber Direct window opens. Under Environment, choose:
Test if you are pasting the keys of your Uber test account;
Production if you are pasting those of your live account.
Paste the three values from step 2 into Customer ID, Client ID and Client secret. The secret field is masked; the eye icon on the right lets you reveal it to check.
Leave Webhook signing key empty for now, we come back to it in step 4.
Click Save and test. XPRIO connects to Uber with your keys and requests a blank quote around your store. Three possible outcomes:
the window closes and the Uber Direct card shows Connected (test) or Connected (production): you are done;
a red message "Connection test failed" with the detail returned by Uber: most often a value copied with an extra space, or test keys pasted in Production mode (or the reverse). Fix and try again;
a message saying the address is not served: Uber Direct does not cover your store's area.
Once connected, the card also shows "Typical trip from your store (about 1.5 km)" with the real price returned by Uber, in the provider's currency. Use it as a benchmark to set your delivery fee.
Your keys are encrypted and never shown again in clear text. You will not have to enter them again: XPRIO renews its connection to Uber on its own. If you switch environment later (for example from Test to Production), the fields are cleared: those are different keys to paste.
Step 4: enable real-time notifications (recommended)
Without this step, XPRIO refreshes the status of each trip every 20 seconds: it works. With it, Uber notifies XPRIO instantly on every change (courier assigned, position, order picked up, delivered), and the Uber Direct card shows "Real-time notifications active".
In XPRIO, reopen the Uber Direct connection window (Edit button on the card). Below the key fields, find Notification URL to declare with the provider and click Copy.
In the Uber Direct dashboard, Developer menu, click the Webhooks tab. Under Endpoints, click + Create a webhook.
A Create an endpoint panel opens on the right. Paste the URL into Webhook URL.
Under Select event types, tick event.delivery_status and event.courier_update. Leave event.refund_request unticked.
Click Save. Your webhook appears in the list with its URL and events.
On the right of the row, click the ⋮ menu, then the option that shows the signing key. Copy it.
Back in XPRIO, Uber Direct window, paste it into Webhook signing key and click Save and test.
From the first trip, the Uber Direct card moves from "No real-time notification" to "Real-time notifications active", with the date of the last notification received.
Step 5: choose the mode for each store
In XPRIO, Stores menu, open the store (Edit button), then the Delivery and Services tab.
Check that the Delivery service is enabled.
Find the Who delivers your orders section, just above the driver options. Three cards to choose from:
My drivers: nothing changes, your XPRIO Pro drivers deliver.
My drivers + partner courier as backup: your drivers stay first. On every delivery order paid online, Live offers a Call a partner courier button as long as no driver is assigned. Ideal for a busy Friday night or an absence.
Partner courier only: every delivery order is automatically handed to the courier. The customer only sees online payment.
If the last two cards are greyed out with the message "Online payment required", first enable Stripe under App Configuration, Payment Methods.
As soon as you pick a partner mode, the following settings appear:
Provider: the list of connected providers covering the store's country. Choose Uber Direct. If the list is empty, the Connect a provider link takes you back to step 3.
In backup mode: the box Automatically call a partner courier if no driver takes the order, with a delay of 5 to 30 minutes after the order is ready. Tick it if nobody always watches Live.
In partner courier only mode: When to request the courier. The recommended choice is When preparation starts: the courier arrives as the order gets ready. On acceptance brings the courier earlier, with a risk of billed waiting time; When the order is ready avoids any waiting but the order sits 10 to 15 minutes.
In partner courier only mode: Delivery fee charged to the customer. My fixed fees keeps your usual zones and rates. The courier price (+ margin) charges the customer the Uber quote calculated for each address, plus a margin of your choice, fixed or as a percentage. In backup mode the customer always pays your fixed fees, since at the time of the order nobody knows yet who will deliver.
Pickup instructions for the courier: a free sentence, for example "car park entrance, ask at the counter".
Pass the customer tip on to the courier: otherwise the tip stays with the store, as with your own drivers.
Save the store. The mode applies immediately to new orders.
In Live
On a delivery order, the courier block of the card shows:
before the call: the 🛵 Call a partner courier button (backup mode only);
after the call: the Partner courier label, the provider name, then Courier requested while Uber assigns someone;
from the assignment: the courier's first name, phone number (masked by Uber, valid for the duration of the trip), stage (Courier on the way, Courier at the store, Picked up, At the customer, Delivered) and estimated arrival time.
When you click Call a partner courier, a confirmation window shows the provider, the delivery address, the delivery cost for you, the planned pickup time and the estimated delivery time. Click Request the courier to confirm.
When the courier picks up the order, it moves to Out for delivery on its own, and to Delivered on handover: nothing to do on your side. You can cancel the courier from the block as long as the order has not been picked up; XPRIO reminds you that cancellation fees may apply.
If Uber cannot find a courier or cancels the trip, you receive a notification on the XPRIO Pro app, a sound and a message in Live. The order stays open and you can request a new courier or assign one of your drivers. The same applies if the courier brings back an order that could not be handed over: it shows as Returned to store, to be handled (new delivery or refund).
On the customer side
In your app, the customer sees a Partner courier contact card with the courier's first name, vehicle, a call button and a tracking link. On the tracking map, the courier moves in real time like one of your drivers. If your store requires a handover code at delivery, the Uber courier asks the customer for it, just like your drivers.
On a store in "partner courier only" mode, the cart only shows card payment, with the note "Delivery by a partner courier: online payment only". An address outside Uber's coverage is flagged "Address not served by our partner courier" before the order is placed.
Frequently asked questions
Can I test without a real order? Yes, with the Uber test account (step 1) connected in the Test environment: trips are simulated by a fictional courier, nothing is billed, and you see the whole cycle in Live within a few minutes.
Why does the quote differ from the actual trip? The quote is valid for 15 minutes. If the courier is called later, Uber recalculates at that moment. XPRIO never re-charges the customer: the difference is yours.
What happens if my Uber account has a problem? The Uber Direct card turns to Error with Uber's message, and Live refuses to call a courier until it is fixed. Your own drivers keep working normally.
Can I disconnect Uber Direct? Yes, Disconnect button on the card, provided no store is still in a partner courier mode. Switch them back to "My drivers" first.
Related articles