Reselling to Your Clients
Reselling lets your clients buy a plan from you on your own domain. They pay you directly, through your own Stripe account, at the prices you set. Their workspace is created the moment they pay, and their AI is topped up from one credit pool that you control.
Reselling builds on White Label: you need a brand and at least one Live domain before clients can sign up. Like white label, reselling is part of the Agency and Agency Unlimited plans.
Connect your Stripe account
Open Settings and scroll to Reselling.
- In your Stripe dashboard, open Developers, then API keys, and copy your secret key. It starts with
sk_live_. A restricted key (rk_live_) works too. - Paste it into Stripe secret key and press Connect.
That is all the Stripe setup there is. When you connect, SDRPilot adds the payment notifications to your Stripe account for you, so every sign up, renewal and cancellation reaches your workspace. You never create a webhook by hand. The key is stored encrypted and is never shown again.
The pill next to Stripe tells you where you stand:
| Pill | Meaning |
|---|---|
| Connected | Stripe tells us about every sign up, renewal and cancellation on your account. |
| Needs attention | Something is off, for example the notifications were switched off on your Stripe account or Stripe no longer accepts your key. The reason is shown under the pill. |
| Not connected | Paste your secret key to start selling plans. |
Check connection checks the setup on your Stripe account and fixes it when it can. The same check also runs on its own once a day. A Test mode label means you connected a test key: checkout then takes test cards only.
Two more settings sit on the card:
- Default currency: USD, EUR or GBP, used for new plans.
- Automatic tax: lets Stripe add sales tax or VAT at checkout. Turn on Stripe Tax in your Stripe account first.
To change Stripe accounts, paste the new key under Replace secret key. Your plans are set up again on the new account. Disconnect Stripe stops new sign ups until you connect again; your plans are kept.
Create your client plans
Under Client plans, press Add plan and fill in:
| Field | What it does |
|---|---|
| Plan name | What your clients see when they sign up. |
| Monthly price | Charged every month on your Stripe account. At least 1.00. |
| LinkedIn accounts | How many LinkedIn accounts the client can connect. |
| Credits per month | The balance the client is kept topped up to from your credit pool. Leave it at 0 for 300 per LinkedIn account. |
| Free trial | Days before the first charge. A card is still required. 0 means no trial. |
Press Create plan. The plan and its price are created on your Stripe account straight away. You can have up to 20 plans.
In the plans table:
- The On sale switch takes a plan off your pricing page without deleting it.
- The pencil edits a plan. A new price applies to new sign ups; clients already on the plan keep the price they signed up at.
- The bin removes a plan. When clients are still on it, it is switched off instead, and those clients keep paying for it.
- An amber ! next to a plan name means it is not set up on your Stripe account yet. Edit and save it to fix that.
The sign-up link and your pricing page
Every plan has a Sign-up link in the table. Copy it and send it to a client, or put it on your own website. The link opens a checkout for that plan on your domain.
Your domain also gets a pricing page at /pricing, for example app.youragency.com/pricing. It lists every plan that is on sale, with its monthly price, how many LinkedIn accounts it includes and the trial, and a Start free trial or Start button. Everything on it carries your brand.
The sign-up link and the pricing page only work on your own domains, so add a domain and get it to Live before you share them.
What your client goes through
- The client presses Start (or opens your sign-up link) and pays on a Stripe checkout page for your account. A card is always required, trial or not.
- They come back to your domain to a page that says Setting up your account, which takes a few seconds.
- They choose a password and are signed in on your domain, ready to connect their LinkedIn account.
They also get an email from your brand saying their account is ready, with a link to choose their password, in case they closed the page. The new workspace appears on your Clients page with everything a workspace you added by hand has.
If the buyer’s email already belongs to another workspace, or you have reached your client limit, no workspace is created and nothing changes on any existing workspace. A free trial started this way is cancelled on your Stripe account straight away; a payment that did go through stays on your Stripe account, so refund it or follow up with the client there. The buyer is told to sign in and choose a plan from Settings, Billing instead.
Clients you added yourself can buy a plan in the app
A client workspace without a subscription of its own (one you added by hand, or one whose subscription has ended) sees the plans you have on sale in its Billing card. The client picks one and pays on a checkout for your Stripe account, signed in as themselves, and the plan attaches to their own workspace. This is the only way an existing workspace gets a plan: the public sign-up link and pricing page always start a new workspace.
What the client sees in Billing
A client who bought a plan from you has a Billing card at the top of Settings. It shows the plan name, how many LinkedIn accounts it includes and the status:
| Status | Meaning |
|---|---|
| Trial until a date | The free trial is running. |
| Active, renews a date | Paid up. |
| Cancels on a date | The client cancelled. The workspace keeps working until that date. |
| Payment failed | The last payment did not go through. |
| Ended | The subscription is over. |
| Paused | The subscription is paused on your Stripe account. |
Manage opens the billing page of your Stripe account, where the client changes their card, downloads invoices or cancels. Clients still never see your own plan, your billing or the price of credits.
Renewals, failed payments and cancelling
Your Stripe account decides; the workspace follows it.
- Renewal: each paid invoice keeps the workspace running and tops the client up from your pool.
- Failed payment: the workspace pauses. Its agent stops sending and replying, nothing is deleted, and the client sees a banner saying the workspace is paused. When the payment goes through, it switches back on by itself.
- Cancelling: the workspace keeps working until the end of the period the client paid for, then pauses and the Billing status shows Ended. The client can still sign in and read everything.
- Changing plan: when you move a client to another plan’s price in Stripe, the workspace follows, including how many LinkedIn accounts it may connect.
The credit pool
Your clients’ AI runs on credits, and every reselling client is topped up from one pool: yours. Open Clients to see it.
| Tile | What it shows |
|---|---|
| In your pool | The credits you have to hand out. |
| Allocated | What your active clients are kept topped up to, added up. |
| Unallocated | The pool minus what is allocated. It turns amber with Limits exceed your pool when your clients’ limits add up to more than you have. |
Your pool is filled each billing period of your own plan, with 300 credits for every LinkedIn account your plan includes. Your own workspace keeps its credits as before; the pool comes on top.
To add credits yourself, type an amount under Add credits on the same card (100 to 10,000, in steps of 100). The total shows below the field before you pay; each credit costs €0.10. Click Buy credits, pay once, and the credits land in your pool. Your card is saved for auto-recharge.
Turn on Auto-recharge to never run dry: set the pool level that triggers it and how many credits to add, then click Save. When the pool drops below that level, your saved card is charged for those credits at the same price. If the charge fails (no saved card, or the card is declined), the card shows why and tries again after 24 hours or as soon as you save again.
You also see your pool at the bottom of the sidebar as Credit pool. Click it to open Clients.
How clients are topped up
Each client is kept at the Credits per month of its plan (300 per LinkedIn account when that is 0). The top up happens when the workspace is created, when a renewal is paid, and once a day when the client uses the app. A paused client is not topped up. Each client row says Kept at that number of credits.
The client sees its own balance at the bottom of the sidebar as Credits left.
Caps per client
Press Cap on a client’s row to set the most credits that client is ever topped up to. Leave it empty for no cap. A cap lower than what the client holds now gives the difference back to your pool straight away, and the row says (capped).
Top up fills a client up to its limit from your pool right now, instead of waiting for the next automatic top up.
When the pool is empty
You are never charged for credits you do not have, and nothing is handed out on credit:
- Top ups stop. The In your pool tile turns red with Pool empty, and the sidebar says the pool is empty.
- You get an email about it, at most once a day.
- Each client keeps working on the credits it already holds. When a client reaches zero, its LinkedIn accounts pause and it sees “No credits left. Your LinkedIn accounts pause until your provider adds more.”
- As soon as your pool has credits again, clients are topped up and pick up where they stopped.
Usage per client
The Usage card on the Clients page shows what each client workspace did in a period you pick. Choose 7 days, 30 days, 90 days, This month or Last month, or set your own start and end in the two date fields. It opens on the last 30 days. Dates are whole days in UTC, and a range can be up to a year.
Each client gets one row:
| Column | What it shows |
|---|---|
| Client | The client’s name and email. |
| Plan | The plan it bought from you, or Added by you when you added it yourself, with its status: Active, Trial, Payment due, Cancelled or Paused. |
| Accounts | The LinkedIn accounts it has signed in, out of how many it may connect. |
| Agents | The agents switched on right now. |
| Credits left | Its balance right now. |
| Connects | Connection requests sent in the period. |
| Messages | Messages sent on LinkedIn in the period. |
| Replies | Conversations where the person replied for the first time in the period. |
| Profile views | Profiles of possible leads its LinkedIn accounts visited in the period. |
| Credits used | Credits that went from your pool to this client in the period, minus what came back. |
| Last active | The last time one of its LinkedIn accounts did something, or Not yet. |
A Total row at the bottom adds up connects, messages, replies, profile views and credits used across all your clients.
Download CSV saves the same period as a spreadsheet with one row per client per month. When the period starts or ends partway through a month, that month counts only the days inside the period.
API keys and MCP for your clients
Every client workspace, added by hand or bought through your plans, gets the API and the AI assistant connection for itself, under your brand: it creates keys in Settings → API, and each key reaches only that client’s workspace, never yours or another client’s. The MCP address and help docs it sees are yours, see Help docs host and MCP host. Switch API access off for a client on the Clients page and its keys stop working within a minute; switch it on again and they work again.
Switch into a client’s workspace
The top left of the sidebar shows the workspace you are working in. As an agency with clients, click it to open the workspace menu: Your workspace first, then Clients, each with a coloured dot for Active, Paused or No LinkedIn account yet. With more than 10 clients a Find a client box appears. Manage clients at the bottom opens the Clients page.
Pick a client and the same tab becomes that client’s workspace, signed in as them. While you are there, the top left reads Client of your workspace name and a banner says Viewing the client. Press Back to your workspace, in the banner or in the menu, to return. Your clients never see the menu: a client signed in on its own sees only its own workspace and has no way into yours.
Open on the Clients page still opens a client in a new tab, for when you want both side by side.
If you also resell through DM Champ
When you sell LinkedIn outreach from your DM Champ agency account, your DM Champ sub-accounts can use it too. Once such a client has opened its workspace at least once, it is listed in your workspace menu after your own clients, and you switch into it the same way. Pausing, inviting and credits for those clients stay in DM Champ, on your Sub Accounts page, and they pay with their DM Champ credits, not from this pool.