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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Five steps. Three of them you don't touch.
Slug-authed, no login. Shows live ad performance, wallet balance, recent requests, and invoices.
Two paths: "Request review" (you approve manually later) or "Pay now" (Stripe Connect Checkout, money lands in your account instantly).
On approval (manual) or webhook (Stripe-paid), the request executes against Meta's Marketing API and the cap goes up immediately.
Sequential invoice number, line items with markup broken out, wallet ledger updated, audit event written. PDF ready on demand.
Every portal gets a single rolled-up statement at 04:00 UTC, emailed to the client and visible in the dashboard.
Here's what most agencies look like today and what Agency Panel collapses it into.
Two reasons agencies build the wrong version of this and get into trouble. Here's how Agency Panel avoids both.
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.
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.
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.
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.
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.
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.
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.
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.
Agency Panel is live on every Agency & Scale plan. Free trial, no card, cancel inside the app.
Start your free trial →