Receiving, Accepting, and Declining Bookings
Every sale starts as a request: an advertiser has chosen your channel, picked a slot, written the ad and already paid into escrow. Your job at this stage is one decision β yes or no, at the price on your rate card β made inside 24 hours, or before the ad's go-live if that comes sooner.
Each request carries an OFO- order id that stays with it through acceptance, posting, proof, payout and any later dispute. When two advertisers book similar slots in the same week, the OFO- is what tells them apart β quote it in any message to support or to the buyer. See Your Onflow Ads IDs.

Elite plan Β· Channel owner. The queue at
/telegram/dashboard/paid-promotion/bookings. Two panels sit above the tabs β your verification card and your Payouts ledger β and the pill in the corner is the one rule worth memorising.
Before you startβ
- Your account must be on the channel-owner side, with at least one LIVE listing.
- Your reliability must be at least 4.0 out of 10 to accept anything. Every account starts at 8.0.
- Your account must not be under an open fraud review. During one you can finish work already in flight but cannot take on new counterparties.
- Your withdrawable wallet balance must cover the good-faith deposit on high-value bookings β see below for the exact numbers.
The queueβ
Six tabs, each with a live count. The page opens on New, and inside New the requests are ordered by urgency, so the one closest to auto-declining sits first.
| Tab | What is in it |
|---|---|
| All | Everything, newest first |
| New | Requests awaiting your answer, each with a live countdown |
| In progress | Accepted, not yet posted β your delivery obligations |
| Delivered | Posted and proven; payouts scheduled or claimable |
| Completed | Paid out and finished |
| Cancelled | Declined, expired, refunded or cancelled bookings, plus a breakdown of your decline reasons |
Two panels sit above the tabs and follow you across every one: the Payouts ledger (see Escrow and getting paid) and a verification card when identity verification is needed or near (see Identity verification).
Every new request must be answered within 24 hours β or by the ad's go-live, whichever comes first. On a channel with a lead time under 24 hours (12h or same-day) the clock is the time to go-live, and the card says so with a Short notice line. Each card shows a live countdown and the header carries a standing reminder: "Unanswered bookings auto-decline Β· reliability β0.30". A request nobody answers auto-declines, refunds the advertiser in full, and docks your reliability by 0.30. Declining by hand costs nothing at all. Only silence costs.
While your account is under review (an open fraud concern, or a frozen wallet) or your reliability is below the marketplace floor, you cannot accept. A request that reaches your queue in that state is not left to run out its clock: the platform declines it for you at once, refunds the advertiser in full, and records no ghosting penalty. The advertiser sees "The channel owner is temporarily unable to accept bookings."
What a request shows youβ
- The advertiser, by the display name on their account β the name they set in Account β Full name, or, until they set one, the readable part of their address with the domain dropped (
john.doe@β¦reads asJohn Doe). You never see their address, masked or otherwise. When other owners have rated them, a gold β rating with its count sits beside the name. A track record before you commit. - The slot, the schedule and the channel β the format label, the scheduled date and time, and which of your channels it is for.
- The booking's
OFO-reference, on its own line. - The ad itself, rendered the way Telegram will render it: links look like links, the inline buttons are shown and named, and attached images and video are shown, not counted. This card is where you consent to a post going out in your channel, so it shows the real creative rather than a text snippet or the words "+ 2 images attached".
- Where every link actually goes. Every link in the creative reads as an
onflowads.com/rr/β¦short link β the advertiser's text links, the addresses and @handles typed into the text, and every button β and a short link does not name the site, the page or the channel it opens. The card resolves each one back to its real destination in a legend beneath the preview β the page, the Telegram address, or which channel a campaign invite link opens β so the question you are actually asking β where does this send my subscribers? β is on the screen before you accept. - "you receive $X" / "after N% fee" β your exact payout and the marketplace fee applied to this booking.
- A β³ countdown to auto-decline.
- On high-value bookings, a shield notice: "High-value booking β accepting stakes a refundable $X good-faith deposit from your wallet, returned on clean delivery."
Step by step β acceptingβ
-
Press Accept booking. Two things happen as one atomic step that either fully succeeds or does not happen at all.
-
The good-faith deposit is staked if this booking asks for one β the amount was already printed on the card.
-
The booking moves to In progress and the advertiser is notified ("Your placement was accepted").
-
Read the confirmation: "Accepted β we'll publish and pin it for you on [date] UTC. Nothing else to do." Delivery is automatic on every booking β the bot publishes at the window open and removes the post when the run ends. Where a deposit was taken the card adds: "A refundable $X good-faith deposit is held from your wallet and comes straight back when you deliver."
The word "pin" in that confirmation is staleThe message says "publish and pin" on every booking. A pin only actually happens where the buyer paid for the pin extra. On an ordinary booking the ad is published and nothing is pinned. What you owe either way is the format's opening window β see The quiet window you owe.
Auto-post is resolved per booking: your explicit choice if you made one, otherwise the listing's saved default, otherwise on. Accepting also snapshots your channel's live member count, which is the baseline any retention hold on the booking is later measured against.
The good-faith deposit, in numbersβ
| Rule | Shipped value |
|---|---|
| Deposit | 10% of the booking charge |
| Only on bookings of | $50.00 or more |
| Capped at | $20.00 |
All three are set by Onflow Ads and can change; the exact dollar figure is always printed on the card before you accept, and again in the confirmation.
- It is refundable, and it comes back as its own wallet line β never netted off your payout β when you deliver cleanly, and also when the advertiser cancels.
- It must come from real, withdrawable funds. Promotional and locked credit do not count. If you are short, the accept is refused with the exact shortfall named β "Accepting this booking asks for a $X refundable good-faith deposit in real (withdrawable) funds, and you're $Y short" β and the booking stays pending. You are never charged for an accept that did not happen.
- It is forfeited to the advertiser, never to Onflow Ads, when a failure is yours: you accepted and never posted, or the monitor flagged the placement. The injured party is the one whose campaign window was destroyed.
- A window missed because of a platform or Telegram failure returns the deposit and leaves your reliability untouched.
Keep enough withdrawable balance to cover a couple of deposits, especially if auto-accept is on. The automatic pass silently skips a booking whose deposit you cannot cover β the request stays in your queue with its clock running, and nothing tells you why.
Your rate is the rateβ
There is no counter-offer. Every booking arrives at the price on your rate card, already paid into escrow by the advertiser β the card shows exactly what you receive, and the only answers are Accept booking and Decline. To charge more, change your rates in the listing manager; the new price applies to the next booking.
Cancelling after you acceptedβ
Until the ad is actually posted, an accepted booking can still be cancelled β by you or by the advertiser:
- Press Cancel booking on the accepted card (it arms into "Tap again Β· full refund, no strike" and does nothing until you tap it a second time).
- The advertiser is refunded in full, your good-faith deposit comes back, and nobody's reliability changes. Nothing has run, so nothing has been lost that money cannot put back.
- Once the ad is live β the bot publishes it at the window open β the button is gone; a placement that has run cannot be un-spent.
A booking cancelled this way shows as Cancelled Β· Cancelled by the channel before posting on both sides.
Decliningβ
Press Decline and the card asks Why decline? with six one-tap reasons:
- Off-topic for my audience
- Slot already taken
- Content not a fit
- Timing doesn't work
- Below my rate
- Against channel policy
Pick one and the decline lands immediately. The advertiser is refunded in full on the spot and told the reason. Press cancel if you opened the reasons by mistake.
Declining a pending request never costs reliability. On the Cancelled tab, a "Why bookings were declined" strip groups your reasons with counts β a pile of "Below my rate" says raise nothing and wait; a pile of "Off-topic" says your category or audience description is steering the wrong buyers to you.
Bulk actionsβ
In the New tab, tick the checkbox on the cards you want and a sticky bar appears reading "N selected":
- Accept all β runs the same accept, one booking at a time. Every accept still stakes its own deposit and each is checked against the reliability floor.
- Decline all β asks for one shared reason, then declines each and refunds each advertiser.
- Clear β deselects everything.
When the run finishes you get a tally, including anything that could not be processed β typically an accept whose deposit your wallet could not cover. Bulk actions are the same money path as the single buttons; there are no shortcuts inside them.
What arrives in Telegramβ
With your Telegram linked, each pending placement arrives as its own message from @OnflowAdsBot:
π£ New booking request An advertiser wants to pay to run a post on your channel. Accept to take the job, or Decline to pass.
π₯ Channel: Β· β Ad slot: Β· π° You receive: Β· π Pinned: (only when they bought the pin) Β· π Go-live: Β· π Order: the
OFO-idβ³ This request declines by itself in 24 hours if nobody answers. β or, on a short-notice booking, β¦at go-live β in about N hoursβ¦, followed by a β° Short notice line explaining why there is no 24-hour window.
π Tap Get the post here to see the ad exactly as it will appear in your channel β photo, links and buttons included.
π¬ From the advertiser β their own note to you, if they wrote one.
It is one message per booking: the ad itself is never pasted into the card as an excerpt, and there is no second "you have a request" message about the same booking β the feed and email carry that, Telegram carries the card. On Plus and above the card wears the bot's premium look: animated emoji, and buttons coloured by what they do (blue looks, green decides). Free and Lite see the same words with plain emoji and plain buttons.
π¬ From the advertiserβ
A booking can carry a short note written to you β not part of the ad, and never published anywhere. The advertiser writes it in the booking composer, in the same editor as the ad, and it is what they would tell you if they were asking in person: what the product is, why it suits your audience, where a link goes.
It appears under the ad preview on the Telegram card, and again on the booking card in your queue, in its own blue block so it can never be mistaken for a line of the post you are being asked to publish.
- It is optional. Most bookings will not carry one, and its absence says nothing about the booking.
- It is the advertiser's claim, not ours. Nothing in it is verified. Judge the ad on the ad; read the note for context.
- It is one note per checkout. A buyer booking four channels at once writes it once, and all four owners read the same words.
- Up to 2,000 characters; the Telegram card shows the first 700.
π Pinnedβ
Where the buyer bought the pin, the card names it before you accept β "this post stays pinned for the whole campaign, from go-live until the run ends β we pin and unpin it for you, and $4.00 of your payout is for this". You are agreeing to leave it pinned, and nothing else: the platform applies and releases the pin on both delivery routes. See Prices and offers.
Two buttons sit under it:
| Button | What it does |
|---|---|
| π Get the post here | Sends you the complete placement β the media, the caption exactly as it will be published (attribution line included), the buttons with their real destinations, the format, the quantity, the channel and the schedule β as a message in the same chat. Nothing leaves Telegram and nothing is decided |
| β Review & respond | Opens your bookings queue at that exact booking β the page scrolls the row into view and pulses it for three seconds, so a busy queue lands you on the right card rather than at the top of the list |
Get the post here exists because an owner asked to publish something in their own channel should not have to leave Telegram to find out what. The decision stays on the website deliberately: accepting moves money, stakes a good-faith deposit and writes your reliability ledger, and those belong on one surface.
The button is answered only for the Telegram account linked to the owner of that booking β someone else pressing a forwarded copy gets nothing. Very occasionally it is not offered at all, in which case Review & respond still is.
A checkout that books several of your channels at once is capped at five messages per owner. Beyond that you get one line instead: "β¦and N more request(s) in the same order. Open your bookings queue to handle them together."
Reporting an advertiserβ
From the moment you accept β the point at which the creative is yours to look at β every booking card carries π© Report advertiser, and it keeps carrying it long after the ad has run. It is a proper ghost button beside the other controls, not the link it used to be: on a delivered booking it was a single word inside the grey hint sentence, in the same grey as the rest of the sentence.

Elite plan Β· Channel owner β a booking already accepted. Two things to notice: the advertiser is named by their display name, never a masked email address, and π© Report advertiser is a button shaped like the controls beside it.
It opens a case a person reads, with your own reason list β the creative is not the one you approved, a link leads somewhere it should not, the ad breaks your channel's rules or the platform's, false or misleading claims, pressure to break a rule, impersonation β plus the shared ones every member gets. You can attach up to six screenshots, and the advertiser never sees them.
The form says this above the reasons, because these are the two faster doors:
- A booking you simply do not want β Decline it. Declining by hand is free and costs you no reliability.
- An accepted booking you want out of before it posts β Cancel it. The advertiser is refunded in full and nobody's reliability moves.
Report is for when something is wrong, not merely unwanted. And it does not unpublish anything by itself β if the ad is already live and must come down now, say so in the first line.
Full detail, including the advertiser's mirror of this list, is on Reporting a campaign.
Rating advertisersβ
Once an ad has actually run β delivered or completed β the booking card offers Rate this advertiser: 1 to 5 stars, once per booking, with an optional note. The card then reads "β You rated this advertiser" and cannot be changed. The aggregate of every owner's ratings is what shows as the gold star pill on that advertiser's future requests, the same courtesy their reviews give your channel.
If something goes wrongβ
| What you see | What it means | What to do |
|---|---|---|
| "Your reliability is X/10 β you need at least 4/10 to accept bookings." | Your score is below the accept floor | Finish work already in flight; clean completions and the recovery schedule bring it back. See Delivery monitoring |
| "Top up your wallet to stake the good-faith deposit." | Your withdrawable balance cannot cover the deposit | Top up, or wait for a pending payout to clear, then accept. Promotional credit does not count |
| "That request can't be accepted β it may have changed." | The booking is no longer pending β cancelled, expired or already answered | Reload the queue |
| A refusal citing an open review | You are under an active fraud review | You can still deliver accepted work; you cannot take new bookings until it is decided. See Disputes |
| "We couldn't reach your queue just now" | A load failure, not a data loss | Press Retry. Nothing auto-declines without the timers you can see |
| A booking never appeared at all | It was stopped by one of your own rules | A blackout day, or a start time inside your lead time. See Managing your availability |
Selecting several at onceβ
Tick the checkbox on any pending cards and an action sheet slides up from the bottom of the screen β "N selected Β· Accept all Β· Decline all Β· Clear". It floats over the page rather than sitting in the middle of it, so the cards you are reading stay readable, and it leaves as soon as the selection is cleared.
When the advertiser cancelsβ
- Cancelled while still pending β the request disappears. Nothing is owed either way and nothing touches your score.
- Cancelled after you accepted, before the ad was posted β the advertiser is refunded in full, your good-faith deposit comes back, and neither side's reliability moves. You can do the same from your side; see Cancelling after you accepted.
- Cancelled after the ad went live β refused. A placement that has run cannot be un-spent.
The activity feedβ
The Activity pill opens /telegram/dashboard/paid-promotion/activity β a running list of up to 40 recent Paid Promotions events, newest first. The header counts them ("5 unread Β· 12 recent", or "You're all caught up Β· 12 recent") and two buttons sit beside it: Notification settings, which controls whether events reach you in-app, by email or in Telegram, and Mark all read.
Four kinds of row, each with its own icon: π£ booking, π° payout, β feedback and β οΈ dispute. Unread rows carry a dot; clicking one marks it read and follows its link. Empty, it reads "You're all caught up β Booking requests, payouts and feedback will show up here as they happen."

Elite plan Β· Channel owner. The feed is a log, not a workspace β every row links back to the booking it is about. Read the auto-post failure row first: those are the ones with a deadline.
Statuses at a glanceβ
| Card state | What it means |
|---|---|
| Countdown pill with Accept booking / Decline | Pending β yours to answer, clock running |
| "β Accepted β scheduled" | Onflow Ads publishes it for you at the window open, removes it when the booked duration ends β and pins it for the whole run if the buyer paid for the pin extra |
| "Delivered β funds release on β¦" | Proof accepted; the release date was fixed at delivery |
| "Delivery verified β the hold has cleared." with Claim $X payout | The money is claimable |
| "Get it now Β· $X" with an early-release fee line | Instant payout is open on this booking |
| "Paid out β Β· $X" | Completed and credited to your wallet |
| A red pill β "Declined Β· [reason]" / "Cancelled" / "Refunded" | Closed. "The advertiser was refunded instantly and told why." |
A channel owner can accept the booking OFO-β¦ or decline the booking because β¦ in the chat; the assistant shows the booking it found and waits for CONFIRM before acting. Cancel my booking withdraws one you accepted that has not been published. What the assistant can do for you has the full list and the confirmation rule.
Relatedβ
- Posting the ad β an accepted booking is a promise with a date on it.
- Escrow and getting paid β the Payouts panel, the release dates and instant payout.
- Managing your availability β auto-accept, and the gates that filter requests before they reach you.
- The listing manager β auto-accept, reviews and every other per-channel control.
- Reporting a campaign β the owner's reason list, the rules panel, and what filing does.