Skip to main content
Send payment_method: "cash" and the courier collects from your customer at the door. Most orders in Mexico are still paid this way, so this is a first-class path rather than a fallback: it needs no card processing, no onboarding and no checkout of your own.

What the courier collects

The value of the goods, plus whatever share of the delivery fee you decided the customer pays. Nothing else, and never the share you pay. Never a tip either: tip_cents is refused on a cash order, because a courier at the door is tipped in the same hand that is already passing them money, and a declared tip would change this total and count against the cash limit below. See quote and create. It is on the quote and on the delivery, as payment.cash_to_collect_cents:
That number is fixed when the delivery is created. It does not move afterwards, so it is safe to print on a receipt or read out over the phone. null and 0 are different answers here. On a non-cash order the field is null, because there is nothing to collect at all and a 0 would read as a free order. A cash order whose door total really is zero reports 0. That happens when the order value is 0 and you absorb the whole delivery fee: the order is still cash, and what the courier takes is nothing. Its fee_cents also matches what a prepaid order for the same trip would cost, because cash that is never handled costs nothing extra to handle, and the courier is sent with no collection to make.

The limit

A courier can be asked to collect at most MX$1,000.00, which is 100000 cents, in cash_to_collect_cents. That is the total including the customer’s fee share, not just the order value. Over it, both the quote and the create are refused with 422 cash_over_cap. There are two ways past it:
  • Take the order by card instead, which has no such ceiling.
  • Raise business_fee_share so more of the fee comes off your balance and less is collected at the door. This helps only when the fee is what pushed the total over.
A ceiling moves money the other waybusiness_fee_cap_cents raises the door total instead of lowering it. Whatever the ceiling stops you absorbing goes to the customer’s share, so capping what you pay increases cash_to_collect_cents by exactly the cents it refused.An order that clears the limit on a percentage alone can be refused with cash_over_cap once a ceiling is applied to the same split. If you set ceilings and take cash, check the quote’s cash_to_collect_cents rather than reasoning from the percentage.
Check the total, not the orderAn order at MX$980 with a MX$80 fee the customer pays comes to MX$1,060 at the door and is refused. If you validate against the cap yourself before quoting, validate the total.

What the customer sees

Cash orders are always handed over in person. Whatever handoff you send, the courier meets the customer at the door: nobody leaves an order that has to be paid for.

What happens to the money

The customer pays the courier, the cash makes its way back through Listo, and your balance is credited with the order value when the delivery is marked delivered. The delivery fee never arrives on your balance, because it was never yours: the customer’s share was collected for Listo, and your share was already debited when the delivery was created. So the net effect of a delivered cash order is:
which is exactly what you would have kept if you had taken the payment yourself and paid for delivery. That credit is held at first. It counts in balance_cents immediately, so you can spend it on the next delivery straight away, and it joins available_cents once the cash has actually been settled to Listo, on a weekly cycle. See balance and withdrawals. If a delivery ends returned, the credit is reversed: the courier brought the order back and there is no cash to account for.

payment.status stays unpaid

It is worth being clear about this, because it looks like a bug and is not. On a cash order, payment.status stays unpaid and paid_at stays null for the whole life of the delivery, including after it is delivered. That field describes money moving through Listo, and cash never does: it goes from your customer’s hand to the courier’s. delivered_at is the signal that the cash was collected. A cash delivery with a delivered_at is a cash delivery that was paid for. Do not wait for payment.status to change, because it never will.

When it is not the right choice

  • The total is over MX$1,000. Take card.
  • You already took payment yourself. Use prepaid; there is nothing left to collect and no reason to make the courier handle money.