New · Agency Panel

Stop running the back-office of every client account out of a spreadsheet.

Agency Panel is the operating layer for agencies who actually manage ad accounts: one inventory across every BM, spend caps you can edit without leaving the app, top-up & replacement requests that flow through approvals, and Stripe-Connect direct charges so client money never touches us.

Comes with every Agency & Scale plan. No add-on.

app.advino.app / account-hub
Auto-replacement queued
Atlas Apparel · 4 minutes ago

Account flipped to DISABLED. Advino auto-filed a replacement request and pre-picked Sable Skincare — the highest-Shield-score spare with the lowest spend load.

Linked portals affected1
Pre-pick Shield score94 / 100
Replacement spend headroom$16.9K
Wallet balance carried over$2,140
Approve replacement →

Seven moving parts. One operating layer.

Agency Panel is what you'd build for yourself after losing one too many days to spreadsheets, screenshots, and "can you top up the account please" emails. Now you don't have to.

01 / INVENTORY● live

One grid for every account you manage

Every ad account across every BM. Health status, spend cap, amount-spent, funding type, currency — refreshed every 15 minutes. Edit the cap inline. No more flipping between Business Suite tabs.

  • Live Meta `account_status` polled every 15 min
  • Inline spend-cap editor with Meta-side write-through
  • Per-account audit log: who changed what, when
  • Multi-currency, multi-timezone safe
02 / REQUESTS● live

Client requests with an approval workflow

Clients ask for top-ups and replacements from their portal. You approve or reject in one click. Everything is logged. State machine prevents double-spend, double-replacement, and accidental Meta calls.

  • Top-up, replacement, revoke, pixel-share
  • Pending → approved → executing → completed/failed
  • Append-only audit trail (JSONB payload, by actor)
  • Idempotent — re-running a completed request is a no-op
03 / AUTO-REPLACE● live

When Meta disables an account, Advino acts

The instant `account_status` flips to disabled or pending-risk-review, Agency Panel files a replacement request on behalf of every linked client portal, pre-picks the healthiest spare from your inventory (Shield-score ranked), and emails you to approve.

  • Triggered by the 15-min health poll, no manual scan
  • Spare ranking uses live Account Shield risk scores
  • Idempotent: re-disables don't spam duplicate requests
  • Action-needed email goes to the agency owner
04 / MARKUP● live

Per-client markup, applied automatically

Set a percentage or flat fee per client. Every top-up and every monthly statement applies it. No spreadsheet to maintain, no math to redo when a client renegotiates.

  • Per-portal `markup_pct` + `flat_fee_cents`
  • Applied at invoice issue, not at request time
  • Per-line breakdown on every PDF
  • Toggle off without deleting the rule
05 / INVOICES● live

PDF invoices on every top-up + monthly close

Each approved top-up issues a numbered invoice (INV-YYYY-NNNNN). On the 1st of every month a cron rolls every portal's activity into a single statement, generates a PDF, and emails it. Clients see it in their portal too.

  • ReportLab PDFs streamed on demand (no blob storage)
  • Sequential per-agency numbering
  • Mark-paid / void from the dashboard
  • Slug-authed client downloads via portal
06 / WALLETS● live

Prepaid balance, append-only ledger

Each client portal has a wallet. Stripe-Connect top-ups credit it; Meta spend-cap raises debit it; manual adjustments are explicit and audited. The ledger is the source of truth — every change writes a transaction row.

  • Append-only `wallet_transactions` with running balance
  • Currency-aware (matches the linked ad account)
  • Manual ± adjustment with note + audit row
  • Client sees balance in their portal
07 / STRIPE CONNECT● live

Direct charges — Advino never holds funds

Onboard your agency to Stripe Connect Express once. Clients pay you directly from their portal via Checkout. Markup is collected as `application_fee_amount` so it lands in your Stripe balance, net of card fees. No money-transmitter compliance burden for us — or you.

  • Express onboarding hosted by Stripe
  • `transfer_data.destination` = your Connect account
  • Markup as platform fee, surfaced on every line
  • Express dashboard link for KYC + payouts

What happens when a client tops up. End to end.

Five steps. Three of them you don't touch.

STEP 01

Client opens their portal

Slug-authed, no login. Shows live ad performance, wallet balance, recent requests, and invoices.

STEP 02

They request a top-up or pay directly

Two paths: "Request review" (you approve manually later) or "Pay now" (Stripe Connect Checkout, money lands in your account instantly).

STEP 03

Advino raises the Meta spend cap

On approval (manual) or webhook (Stripe-paid), the request executes against Meta's Marketing API and the cap goes up immediately.

STEP 04

Invoice + wallet + audit row, automatic

Sequential invoice number, line items with markup broken out, wallet ledger updated, audit event written. PDF ready on demand.

STEP 05

Monthly statement on the 1st

Every portal gets a single rolled-up statement at 04:00 UTC, emailed to the client and visible in the dashboard.

You already do this work. Just badly.

Here's what most agencies look like today and what Agency Panel collapses it into.

Before

  • A Google Sheet with every client account, last updated by whoever remembered last week
  • Clients texting "can you add another $5k to the Halo account?" at 11pm
  • You logging into Business Suite, navigating six menus, raising the cap, taking a screenshot, replying to the text
  • An invoice template in Docs you copy + rename every month
  • Telling a client at 9am their account got disabled overnight and you have nothing for them
  • Asking your bookkeeper to invoice $5,275 instead of $5,000 because you forgot the markup

After

  • One inventory grid that polls Meta every 15 minutes
  • Clients submit top-ups in their portal — or pay directly via Stripe Connect
  • One click to approve; Advino pushes the spend cap up on Meta and writes the audit row
  • Invoice auto-issued with the per-client markup baked in, PDF on demand
  • Auto-replacement request waiting in your inbox with the best spare already picked
  • Per-portal markup rule applied automatically on every top-up + monthly statement

We thought about money & Meta TOS so you don't have to.

Two reasons agencies build the wrong version of this and get into trouble. Here's how Agency Panel avoids both.

01 / FUNDS● compliant

Advino never custodies client funds

Every top-up runs through Stripe Connect direct charges. The client pays your Stripe-Connect account, not ours. We take our markup as an application_fee_amount. This sidesteps US state money-transmitter rules and EU PSD2 obligations — the category of regulation that has sunk every "we'll hold client money in a wallet" startup.

  • KYC handled by Stripe, not us
  • Payouts hit your bank on Stripe's standard schedule
  • Refunds + disputes go through Stripe's tools
  • You retain the customer-of-record relationship
02 / META TOS● read this

You run accounts. We're the software.

Meta TOS prohibits reselling ad accounts unless you're an approved partner. Agency Panel positions you as the agency that uses software with your own BM — never as a reseller. We don't take custody of accounts, don't issue them, and don't ask Meta on your behalf. You stay the operator; we're the tooling.

  • All accounts stay in your BM, under your access
  • We use the official Meta Marketing API, read-only by default
  • Spend-cap raises are explicit, authenticated, audited
  • Appeal-ready audit log for every change Advino made

The questions you're actually asking.

Is Agency Panel a separate product I have to pay extra for?+

No. It's included in the Agency and Scale plans — the same subscription that covers Shield, True ROAS, Creative OS, and Stability. The Solo plan has read-only access to inventory; the workflow + invoicing + wallet pieces light up on Agency and above.

Do I need Stripe Connect to use it?+

Only if you want clients to pay you via the portal. Without Connect, the workflow still works — clients submit requests, you approve them, invoices are generated and emailed, and you collect payment however you do today (ACH, wire, your existing Stripe). Connect just removes the manual collection step.

What happens to a client's pending balance if their account gets disabled?+

The wallet is per-portal, not per-account. If an account is replaced under a portal, the wallet keeps its balance and the next top-up against the new account debits from it normally. If you revoke a portal entirely, the wallet sits at its last balance — your call on whether to refund manually.

Can I use this without Account Shield or True ROAS?+

Yes — Agency Panel is self-contained on the operational side. It does borrow Shield's risk scores for the auto-replacement spare-picking logic, so if you turn Shield off, replacements still file automatically but the pre-pick falls back to lowest-spend ranking only.

Does it work with Google Ads or TikTok?+

Not today. Meta only. We applied for Google Ads MCC API access and will add Google as the second platform once approved (typically 2–4 weeks). TikTok is on the roadmap behind Google. We deliberately didn't build a multi-platform abstraction with only one platform live — it would have been the wrong shape.

What if Meta rate-limits us during a top-up storm?+

The MetaAPIClient handles rate-limit signals (BUC and app-level) with exponential backoff. Top-up executions are queued, not parallelised — so even a 50-account burst won't tip us over the threshold. The 15-minute health-poll cron is offset from other crons to spread load.

Stop running operations from your inbox.

Agency Panel is live on every Agency & Scale plan. Free trial, no card, cancel inside the app.

Start your free trial →