Offer Review & Deal Negotiation Deployed
For: Casino Operators
Implements: UC-4.1 UC-4.2 UC-4.3 UC-4.4 — spec →
When streamers send you an offer to join a campaign — or when you invite a streamer and they accept — a negotiation opens automatically. You and the streamer align on five deal terms before funds are locked.
From offer to deal
The old one-click approval flow is replaced by a structured negotiation:
Offer created ──► Accepted ──► Negotiation opens ──► Terms agreed ──► Deal funded
(by streamer (by you or (both parties (you lock
or by you) the streamer) approve all terms) HTLC funds)The Offers Panel
Select any funded or active campaign and open the Offers tab. Each offer card shows:
- Streamer info — username, Trust Score, platform badges, follower count
- Initiated by — whether the streamer applied to your campaign, or you invited them
- Starting terms — the five deal values the offer was submitted with
- Offer status — see statuses below
Offer statuses
| Status | What it means |
|---|---|
| Pending | Waiting for the receiving party to respond |
| Accepted | Offer accepted; negotiation is open |
| Declined | Receiving party said no |
| Withdrawn | Initiating party cancelled the offer |
| Expired | Operator-initiated offers expire after 7 days if not answered |
Responding to a streamer's offer
When a streamer applies to your campaign they send an Offer including their proposed starting terms (duration, number of streams, minimum viewers, minimum duration per stream, and payment per stream).
- Open the Offers panel and click the offer.
- Review the streamer's proposed starting terms against your campaign minimums.
- Click Accept to enter negotiation, or Decline to reject the offer.
Minimum term floors
Starting terms in any offer are automatically validated against your campaign's minimum term settings. An offer with values below your floors is rejected at submission — you only see offers that clear your floors.
Sending an offer to a streamer
You can invite specific streamers directly from the streamer directory (/streamers).
- Open a streamer's profile and click Send Offer.
- Select the campaign this offer is for.
- Set your proposed starting terms (pre-filled from the campaign's minimum terms).
- Add an optional message and set an expiry date (default: 7 days).
- Submit — the streamer receives a notification and has until the expiry to respond.
If the streamer accepts, a negotiation opens with your proposed terms as the starting point.
Negotiation
Once an offer is accepted on either side, a negotiation opens automatically. Both parties can propose and approve values for each of the five deal terms:
| Term | What it controls |
|---|---|
timeframe_days | How long the campaign window runs |
deliveries | Number of qualifying streams to deliver |
min_viewers | Minimum average concurrent viewers per stream |
min_duration | Minimum length of each qualifying stream (hours) |
payment_per_stream | USDC paid per confirmed stream |
How turns work
- The party who sent the offer goes first (their proposed values are pre-approved on their side).
- The other party can approve individual terms they agree with, or propose a new value.
- Proposing a new value resets approval on that term — the other party must re-approve the updated figure.
- Once all five terms have both parties' approval, the negotiation transitions to Agreed.
Cancelling a negotiation
Either party can cancel a negotiation at any time. This does not remove the offer record — a new offer can be created to restart discussions.
Funding the deal
When the negotiation reaches Agreed, the terms are locked and you can fund the deal.
- Open the agreed negotiation and click Fund Deal.
- Set the on-chain parameters: escrow ID, network, and your funding wallet address.
- Confirm the HTLC allocation in MetaMask — this locks the total payment amount on-chain.
- The Deal row is created with an immutable snapshot of the agreed terms.
- The streamer's delivery panel becomes active.
Agreed terms are immutable
Once a deal is funded, the five agreed term values are frozen. They cannot be changed regardless of any downstream status updates.
KYC required before payout
Streamer KYC must be approved before you can confirm a stream submission and trigger a payout. Submissions can be reviewed freely, but the confirm action is blocked until KYC passes.
Common issues
- Offer rejected at submission — Starting terms are below the campaign floor; the streamer needs to adjust their proposal.
- Not enough balance — Your available escrow is lower than
payment_per_stream × deliveries. Top up your escrow deposit first. - Wallet not connected — Connect MetaMask to proceed with on-chain deal funding.
- Offer expired — Operator-sent offers expire after 7 days. Create a new offer to re-engage the streamer.