Bot type
Quote, document check and deposit before the customer arrives
A Telegram car rental bot quotes availability by dates and category, collects the licence and passport up front, takes a deposit, and confirms the booking. It moves the paperwork off the counter. It does not assess driver risk, and it cannot verify a licence is valid.
Car rental booking bots: price, timeline and limits
- Fixed price
- $4,600 USD
- Delivery
- 21 calendar days from kickoff
- Authorisation holds
- Not available through Telegram Payments — the provider places them
- File download
- 20 MB per file
- Licence validation
- A bot cannot verify a licence is valid or unrevoked
- Telegram Stars
- Digital goods only — unusable for vehicle rental
As of 2025-10-01, Telegram Bot API 13.4
The problem this solves
The cost centre in short-term vehicle rental is not the booking. It is the twenty minutes at the counter when a customer arrives without an international permit, or with a licence that does not qualify them for the category they booked, or unwilling to accept the deposit hold they were never told about. Every one of those is discoverable before they travel to you.
The second cost centre is the quote itself. Rental pricing depends on dates, category, mileage allowance, insurance excess and season, which makes a phone quote a conversation and a web form an abandoned page. Operators end up quoting a headline daily rate that is not what anyone pays, and then having the real conversation at pickup, which is where the disappointment happens.
Doing both in a chat works because the quote can be assembled incrementally and the document check can be a photograph rather than an appointment. A customer answers four questions, gets a real total including the deposit hold, uploads two documents, and pays. Whatever is wrong is wrong before they get in a taxi to your office, which is the entire point.
How the build runs
Four questions produce a real number
Dates, category, mileage expectation, excess preference. The total quoted includes the deposit hold, because that is the figure that causes arguments when it appears for the first time at the counter.
inline-keyboardAvailability is checked against the actual fleet
Not against a category count that assumes every vehicle returns on time. Overbooking a category is recoverable; overbooking a specific vehicle a customer was promised is not.
webhookDocuments are collected before payment, not after
Licence and passport as photographs, checked for legibility and for the fields your process needs. A customer who cannot produce a qualifying licence finds out now rather than at the counter.
file-transferThe deposit and rental are taken through a real provider
Telegram Payments routes to a provider you hold a merchant account with. Which providers a UAE entity can use is settled during scoping, because the answer differs by licence and category.
payments-apiConfirmation carries the terms in full
Mileage cap, excess, fuel policy, late return charge. Stated once, in writing, in the chat the customer will still have at pickup. Disputes at return are almost always about something nobody wrote down.
commandsExtension happens in the same conversation
A reminder before return offers extension with the price attached. An extension a customer can accept in one tap is revenue; one that requires a phone call during working hours is a late return.
inline-keyboard
What Telegram will and will not let you do
Telegram Payments hands off to a payment provider; it does not hold funds or place authorisation holds itself.
Whether you can place a deposit hold rather than a charge depends entirely on your provider and merchant category. This is confirmed before the build, because a rental flow without a hold is a different product.
A bot downloads files up to 20 MB.
Licence and passport photographs from a phone are well inside this. A customer sending a multi-page scanned PDF from a laptop can exceed it, and the bot says so rather than failing quietly.
Telegram compresses images sent as photos rather than as documents.
A compressed licence photograph can lose the detail your process depends on. Documents are requested as files where legibility is legally relevant.
A bot cannot verify that a driving licence is valid or unrevoked.
It confirms a document was supplied and is readable. Eligibility remains a human decision at the counter, and a process that assumes otherwise has moved liability without moving capability.
Telegram Stars cannot be used for physical goods or services.
Vehicle rental is settled through a conventional payment provider. Any proposal routing rental payments through Stars is a policy breach that puts the bot at risk.
When not to build this
- You rent by the month to corporate accounts. The counter friction this removes barely exists, and contract terms are negotiated rather than quoted.
- Your fleet system cannot expose availability. Quoting against a stale spreadsheet produces confirmed bookings for vehicles that are out, which is worse than a slow phone quote.
- Your deposit process depends on physically inspecting a card. A chat flow cannot replicate that, and pretending it can shifts risk onto the counter staff.
- You have fewer than about fifteen vehicles. The booking volume does not justify the build and a WhatsApp thread with a good template will cover it.
What it runs on
| Component | Version | Why |
|---|---|---|
| grammY | 1.45 | Bot framework, with the quote flow held as server-side conversation state. |
| Cloudflare Workers | current | Runtime, including the pricing engine. |
| Cloudflare D1 | current | Bookings, fleet availability, document state and deposit records. |
| Cloudflare R2 | current | Licence and passport images under your retention policy. |
| TypeScript | 5.9 | Strict mode. Rental pricing has enough dimensions to justify it on its own. |
Questions people ask before committing
Can it place a deposit hold rather than charging the card?
That depends on your payment provider and merchant category, not on Telegram. It is confirmed during scoping because a rental flow that charges instead of holding is a materially different customer experience and a different refund burden.
What happens if the customer's licence does not qualify them?
They find out before paying and before travelling to you. The bot checks the document is present and readable against the fields your process needs; the eligibility decision itself stays with a person, because it is a judgement.
Does it stop customers arguing about the deposit at the counter?
It removes the most common cause, which is the deposit being mentioned for the first time at pickup. The figure appears in the quote, in the confirmation, and in the reminder. Disputes fall; they do not disappear.
Can it handle extensions?
Yes, and it is where the revenue is. A reminder before the return time offers an extension with the price attached and takes payment in the same thread, which converts far better than expecting a customer to call during office hours.
Does it connect to our fleet management system?
Where the system exposes availability, yes, and that is strongly preferable. Quoting against data that does not reflect which vehicles are actually out produces confirmed bookings you cannot honour.
How long are customer documents kept?
Under whatever retention policy you set, in your own storage rather than in Telegram. The customer keeps their own copy in their chat history and that cannot be remotely deleted, which your privacy notice needs to state plainly.