> ## Documentation Index
> Fetch the complete documentation index at: https://learn.actionist.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Revenue and payouts

> How your 25% commission accrues, what the ledger shows, and how to set up a payout wallet without losing money to a typo.

<div className="mxp-hero xc-border">
  <div className="exp-eyebrow mxp-rise">GET PAID</div>

  <h2 className="mxp-hero-title mxp-rise" style={{animationDelay:'0.06s'}}>
    Every client payment, tracked to the cent. <span style={{background:'linear-gradient(90deg,#24A4FF,#9000FF,#E3008E)',WebkitBackgroundClip:'text',backgroundClip:'text',color:'transparent'}}>Paid out in USDC, on your terms.</span>
  </h2>

  <p className="mxp-hero-dek mxp-rise" style={{animationDelay:'0.13s'}}>
    Your flat-percentage cut on every Stripe payment from your clients. Pending balances are settled in monthly payout batches. This page covers how that commission accrues, what every ledger row and status actually means, and how to add a payout wallet without losing funds to a single mistyped character.
  </p>
</div>

<div className="w-full py-10">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">The mechanics</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">How commission works.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Five steps happen between a client's invoice and money in your wallet. Nothing here is manual on your side.
    </p>
  </div>

  <div className="mxp-pipe">
    <div className="mxp-pipe-node"><strong>Client pays</strong><span>A client's plan renews and Stripe processes that invoice on their workspace's billing.</span></div>

    <div className="mxp-pipe-link" />

    <div className="mxp-pipe-node"><strong>Ledger entry created</strong><span>Actionist writes a new row to your ledger for that payment. Nothing is aggregated or batched at this step.</span></div>

    <div className="mxp-pipe-link d2" />

    <div className="mxp-pipe-node"><strong>Commission snapshotted at 25%</strong><span>The programme's current rate is captured onto the row itself, not looked up again later.</span></div>

    <div className="mxp-pipe-link d3" />

    <div className="mxp-pipe-node"><strong>Balance goes Pending</strong><span>Your cut sits in Pending until the next payout batch runs.</span></div>

    <div className="mxp-pipe-link d4" />

    <div className="mxp-pipe-node"><strong>Settles in a monthly batch</strong><span>Pending rows move to Paid together, once a month, in USDC.</span></div>
  </div>

  <div className="exp-surface-grid" style={{marginTop:'22px'}}>
    <div className="exp-surface-tile"><strong>Flat, not tiered.</strong> 25% is a hardcoded literal in the client contract. There is no ladder that changes with volume, and the ledger's own column header spells it out: "Your cut (25%)".</div>
    <div className="exp-surface-tile"><strong>Snapshotted, not recalculated.</strong> Each row keeps the rate that applied when it was created. If the programme rate ever changes, your historical rows are unaffected.</div>
    <div className="exp-surface-tile"><strong>Reversals, never edits.</strong> A refunded or disputed client payment adds a new row pointing back at the original entry. The original row is never rewritten or deleted.</div>
  </div>

  <Info>
    **Worked example.** A client on the Pro plan renews for \$122.00 through Stripe. Actionist writes one ledger row for that invoice, snapshots the current 25% rate onto it, and calculates \$122.00 × 25% = **\$30.50**. That \$30.50 is your cut. It sits in Pending until the next monthly batch runs, then moves to Paid, untouched by anything that happens to the programme rate afterward.
  </Info>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'18px'}}>
    Stretched over a full cycle, that one row looks like this.
  </p>

  | Point in time                         | What's true of that \$30.50 row                                        |
  | ------------------------------------- | ---------------------------------------------------------------------- |
  | The day the invoice is paid           | Ledger row created, Status: Pending.                                   |
  | Every day after, until the next batch | Still Pending. Counted in your Pending balance tile.                   |
  | The day the monthly batch runs        | Status flips to Paid, and it's included in that batch's USDC transfer. |
  | After the batch                       | Counted in Paid to date. No longer part of your Pending balance.       |

  <p className="text-sm text-gray-500 dark:text-gray-400 max-w-3xl" style={{marginTop:'16px'}}>
    Multiply that one row by every client you onboard, and the four tiles in the next section are just this table, summed.
  </p>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Signature exhibit</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Your revenue at a glance.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Four tiles summarize the account. The ledger underneath is where every one of those numbers is actually earned, row by row.
    </p>
  </div>

  <div className="grid grid-cols-2 md:grid-cols-4 gap-4">
    <div className="actionist-metric-tile xrs-rev-tile">
      <div className="xrs-rev-tile-label">Lifetime commission</div>
      <div className="actionist-metric-number xrs-rev-tile-val">\$6,140.00</div>
      <div className="xrs-rev-tile-sub">142 transactions · 19 clients</div>
    </div>

    <div className="actionist-metric-tile xrs-rev-tile">
      <div className="xrs-rev-tile-label">Pending balance</div>
      <div className="actionist-metric-number xrs-rev-tile-val">\$860.00</div>
      <div className="xrs-rev-tile-sub">24 transactions · settles Oct 2026</div>
    </div>

    <div className="actionist-metric-tile xrs-rev-tile">
      <div className="xrs-rev-tile-label">Paid to date</div>
      <div className="actionist-metric-number xrs-rev-tile-val">\$5,280.00</div>
      <div className="xrs-rev-tile-sub">118 transactions · last paid Sep 2026</div>
    </div>

    <div className="actionist-metric-tile xrs-rev-tile">
      <div className="xrs-rev-tile-label">Next payout</div>
      <div className="actionist-metric-number xrs-rev-tile-val">\$860.00</div>
      <div className="xrs-rev-tile-sub">in 12 days · USDC on Base</div>
    </div>
  </div>

  <p className="text-sm text-gray-500 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    Each tile's subtitle follows its own pattern:
  </p>

  | Tile                | Subtitle pattern                               |
  | ------------------- | ---------------------------------------------- |
  | Lifetime commission | `{{count}} transactions · {{clients}} clients` |
  | Pending balance     | `{{count}} transactions · settles {{date}}`    |
  | Paid to date        | `{{count}} transactions · last paid {{date}}`  |
  | Next payout         | `in {{days}} days · {{network}}`               |

  <p className="text-sm text-gray-500 dark:text-gray-400 max-w-3xl" style={{marginTop:'10px'}}>
    If the backend has not computed a next payout date yet, the Next payout tile renders "—" instead of a countdown. See <a href="#payout-timing">Payout timing</a> below.
  </p>

  <div className="mxp-window" style={{marginTop:'26px'}}>
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">reseller/revenue · ledger</span>
    </div>

    <div className="mxp-window-body" style={{minHeight:'auto'}}>
      <div className="xrs-ledger-line s1">
        <span className="xrs-ledger-dot paid" />

        <span>Halo Studio LLC</span>
        <span style={{opacity:0.6}}>August invoice · Pro</span>
        <span className="xrs-ledger-amount">\$30.50</span>
      </div>

      <div className="xrs-ledger-line s2">
        <span className="xrs-ledger-dot paid" />

        <span>Acme Inc.</span>
        <span style={{opacity:0.6}}>August invoice</span>
        <span className="xrs-ledger-amount">\$18.75</span>
      </div>

      <div className="xrs-ledger-line s3">
        <span className="xrs-ledger-dot pend" />

        <span>Nova Robotics</span>
        <span style={{opacity:0.6}}>August invoice · Starter</span>
        <span className="xrs-ledger-amount">\$12.25</span>
      </div>

      <div className="xrs-ledger-line s4">
        <span className="xrs-ledger-dot pend" />

        <span>Bright Path Co.</span>
        <span style={{opacity:0.6}}>August invoice · Pro</span>
        <span className="xrs-ledger-amount">\$9.40</span>
      </div>
    </div>
  </div>

  <div style={{display:'flex',alignItems:'center',flexWrap:'wrap',gap:'18px',marginTop:'14px',fontSize:'12px',opacity:0.72}}>
    <span style={{display:'inline-flex',alignItems:'center',gap:'6px'}}><span className="xrs-ledger-dot paid" />Paid</span>
    <span style={{display:'inline-flex',alignItems:'center',gap:'6px'}}><span className="xrs-ledger-dot pend" />Pending</span>
    <span className="xrs-usdc-pill">USDC on Base</span>
  </div>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">The one status to flag</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">When a commission is blocked.</h2>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
    A row marked <strong>Pending (not payable)</strong> has been accrued correctly, but Actionist has blocked it from moving into a payout batch. The row does not show why. There is no toggle, no form, and no setting on your side that changes this.
  </p>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'12px'}}>
    Don't spend time re-checking your payout wallet or your client's plan looking for the cause. This is an <a href="/resellers/troubleshooting">Actionist Support</a> case. Contact <a href="mailto:partners@actionist.ai">[partners@actionist.ai](mailto:partners@actionist.ai)</a> and include:
  </p>

  <ul className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'8px',paddingLeft:'20px',lineHeight:'1.8'}}>
    <li>The client name shown in the Client column.</li>
    <li>The invoice month shown in the row's Description column.</li>
    <li>The amount shown in Your cut (25%), so support can find the exact row.</li>
  </ul>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'12px'}}>
    Support can see the reason behind the block even though you can't. There's no form on this page that will surface it for you, so don't go looking for one.
  </p>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'12px'}}>
    A block applies to that one row, tied to one client and one invoice. It doesn't touch commission from your other clients, and it doesn't affect your ability to add clients, run delegated sessions, or use anything else on your dashboard.
  </p>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Refunds and disputes</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Reversals.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      When a client's payment is refunded or disputed after your commission has already accrued, the ledger does not touch the original row.
    </p>
  </div>

  <div className="exp-surface-grid" style={{marginTop:'4px'}}>
    <div className="exp-surface-tile"><strong>A new row, not an edit.</strong> The refund or dispute produces a separate reversal row that points back at the original ledger entry. The original stays exactly as it was, with the same client, description, and amount it always had.</div>
    <div className="exp-surface-tile"><strong>Rates stay put.</strong> Because commission is snapshotted per row, a reversal that appears after a programme rate change still nets out against the rate the original row actually used, not today's rate.</div>
    <div className="exp-surface-tile"><strong>Nothing is deleted.</strong> Your ledger is a complete history. A reversed payment leaves a visible trail of two rows rather than one row that quietly disappears.</div>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'18px'}}>
    If a reversal lands after the original row has already been paid out, that's a support conversation. Reach out the same way you would for a blocked commission: <a href="mailto:partners@actionist.ai">[partners@actionist.ai](mailto:partners@actionist.ai)</a>.
  </p>

  <Info>
    **Worked example.** The Pro plan row from the earlier example earned you \$30.50 in commission on a \$122.00 client payment. Two weeks later, the client disputes that charge with their card issuer and Stripe refunds it. Actionist doesn't delete or edit your original \$30.50 row. It adds a second row that points back at the original, netting your commission on that invoice back to zero. Your ledger still shows both rows, so the history stays complete.
  </Info>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">When money moves</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Payout timing.</h2>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
    Pending balances settle in monthly payout batches. Everything sitting in Pending on the day a batch runs moves to Paid together, in USDC, to the wallet you have configured.
  </p>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'12px'}}>
    For the specific timing of your next batch, look at the <strong>Next payout</strong> tile on the Revenue page rather than assuming a fixed day. It counts down in days and names the payout network, for example "in 12 days · USDC on Base."
  </p>

  <Note>
    The date behind the Next payout tile is an estimate, not a guarantee. Treat it as a planning signal, and don't commit to a client on a specific payout date based on it. If the tile shows "—", no next-payout date has been computed yet, check back later rather than assuming something is wrong.
  </Note>

  <Tip>
    If a client asks when you're getting paid on their account, point to the fact that payouts run monthly rather than quoting a day from the Next payout tile. The tile is there for your own planning, not as a commitment you pass along.
  </Tip>

  <div className="xc-recipes">
    <div className="xc-recipe">
      <div className="xc-recipe-who"><i style={{background:'linear-gradient(135deg,#9000FF,#00DBFF)'}} />Omar · Agency owner</div>
      <div className="xc-recipe-flow">Checks the <em>Next payout</em> tile once a week rather than daily. The countdown only matters once it's down to a handful of days, so a weekly glance is enough to plan around.</div>
      <span className="xc-recipe-save">one habit, once a week</span>
    </div>

    <div className="xc-recipe">
      <div className="xc-recipe-who"><i style={{background:'linear-gradient(135deg,#E3008E,#FD840C)'}} />June · Solo consultant</div>
      <div className="xc-recipe-flow">Skims the ledger for any <em>Pending (not payable)</em> row right after each client's invoice date, since that's the earliest point a block would show up, and emails support the same day if one appears.</div>
      <span className="xc-recipe-save">checked right after invoicing</span>
    </div>
  </div>

  <p className="text-sm text-gray-500 dark:text-gray-400 max-w-3xl" style={{marginTop:'16px'}}>
    Your ledger and a client's own billing history are two different views of the same underlying payment. Yours shows commission, theirs shows their invoice. See <a href="/Folders/billing">Billing</a> for what a client sees on their side.
  </p>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Signature exhibit</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Setting up your payout wallet.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Payouts move on-chain, in USDC, and on-chain transfers cannot be undone. The flow is two separate steps on purpose: submit an address, then retype and confirm it before it goes live.
    </p>
  </div>

  <Steps>
    <Step title="Open the payout method card">
      On the Revenue page, the payout method card shows your current state. Click **Add wallet** if none is configured, or **Change wallet** to replace an active one. If support has disabled payouts on your account, this becomes a non-interactive **Disabled** button and the flow below does not apply, contact support instead.
    </Step>

    <Step title="Read the warning before you touch anything">
      The modal opens with an eyebrow reading "Irreversible · Add wallet" or "Irreversible · Change wallet" (or "Verify · Confirm wallet" if you're returning to confirm one already submitted), and a title to match: "Add your payout wallet", "Change your payout wallet", or "Confirm your payout wallet". The intro line is direct: "Crypto payouts are final and on-chain. Once a payout transaction is broadcast, Actionist cannot reverse it, recall it, or recover funds." Below that: "If the address is wrong by a single character, your funds are lost forever."
    </Step>

    <Step title="Pick the network">
      Choose from Base (USDC), Ethereum (USDC), Polygon (USDC), or Arbitrum (USDC). Base is the default, and it's the network Actionist recommends unless you have a specific reason to use another. The Token symbol field is read-only, it always reads USDC, and no control on the modal changes it.
    </Step>

    <Step title="Paste the address">
      Paste your full receiving address: 42 characters, starting with `0x`, followed by 40 hexadecimal characters. Help text tracks it as you go: "Paste your full receiving address (42 characters, starts with 0x)." before you start, "Format looks valid. Confirm below by retyping or pasting again." once it matches the pattern, or "That doesn't look like a valid Base address. Expected 0x followed by 40 hex characters." if it doesn't. The modal only checks the format, so a hardware wallet address or a multisig address works exactly like any other, as long as it's a valid address on the network you picked.
    </Step>

    <Step title="Check all three acknowledgements">
      You must check all three before submitting: that you verified this is a USDC address on the Base network and not another chain, that an incorrect address cannot be recovered and Actionist is not liable, and that you control this wallet and it is not a shared or guessed exchange address.
    </Step>

    <Step title="Submit the address">
      Click **Save wallet address** (or **Replace wallet address** if you're changing an existing one). A toast confirms "Wallet submitted. Awaiting confirmation." The payout method card now shows "Pending: `{{addr}}` (awaiting confirmation)" instead of an active wallet.
    </Step>

    <Step title="Retype it to confirm">
      Submitting doesn't finish the flow, it only stages the address. A second step asks you to retype the pending address exactly. This field doesn't give you live mismatch feedback as you type, it holds at "Re-paste to confirm, we compare character-by-character." and the **Confirm wallet** button stays disabled until what you typed matches character for character, at which point it resolves to "Addresses match." (or "Addresses do not match." if it doesn't).
    </Step>

    <Step title="Confirm">
      Click **Confirm wallet**. A toast confirms "Payout wallet confirmed." and the card switches to its active state: the first six characters of the address, an ellipsis, the last four characters, and "· receiving address on file" underneath, with "Confirmed `{{date}}`" as the secondary line.
    </Step>
  </Steps>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'8px'}}>
    **Changing an existing wallet** runs through the exact same eight steps, with "Change wallet" and "Change your payout wallet" in place of "Add wallet" and "Add your payout wallet". A confirmed wallet stays active until you complete both the submit step and the retype-and-confirm step for a replacement, there's no state where an old and new address are both live at once.
  </p>

  <div className="mxp-window xrs-mock-window">
    <div className="mxp-window-bar xrs-mock-titlebar">
      <span className="mxp-window-dot xrs-mock-dot red" />

      <span className="mxp-window-dot xrs-mock-dot yel" />

      <span className="mxp-window-dot xrs-mock-dot grn" />

      <span className="mxp-window-title">Add your payout wallet</span>
    </div>

    <div className="mxp-window-body xrs-mock-body" style={{minHeight:'auto'}}>
      <div style={{fontSize:'10.5px',fontWeight:700,letterSpacing:'0.07em',textTransform:'uppercase',color:'#f0a040',marginBottom:'6px'}}>Irreversible · Add wallet</div>
      <p style={{fontSize:'12.5px',opacity:0.75,margin:'0 0 12px',lineHeight:1.5}}>Crypto payouts are final and on-chain. Once a payout transaction is broadcast, Actionist cannot reverse it, recall it, or recover funds.</p>

      <ul className="xrs-wallet-warning-list">
        <li>Only use a USDC-compatible address on the Base network. Sending to the wrong chain destroys the payout.</li>
        <li>Do not use a centralized exchange deposit address unless it explicitly supports USDC on Base.</li>
        <li>Triple-check the first 6 and last 4 characters. Clipboard hijackers swap addresses silently.</li>
        <li>Actionist staff will never ask for your seed phrase or for a test payment.</li>
      </ul>

      <div className="xrs-mock-label">Network</div>
      <div className="xrs-mock-select">Base (USDC)<span className="xrs-mock-select-arrow" /></div>

      <div className="xrs-mock-label">Token symbol</div>
      <div className="xrs-mock-input readonly">USDC</div>

      <div className="xrs-mock-label">Receiving address</div>
      <div className="xrs-mock-input">0x7a3Fb92c...pasting</div>
      <div className="xrs-mock-hint" style={{color:'#4ec990',opacity:0.9}}>Format looks valid. Confirm below by retyping or pasting again.</div>

      <div className="xrs-mock-check-row"><span className="xrs-mock-checkbox" />I verified this is a USDC address on the Base network, not another chain.</div>
      <div className="xrs-mock-check-row"><span className="xrs-mock-checkbox" />I understand an incorrect address cannot be recovered and Actionist is not liable.</div>
      <div className="xrs-mock-check-row"><span className="xrs-mock-checkbox" />I control this wallet. It is not a shared or guessed exchange address.</div>

      <div className="xrs-mock-cta">Save wallet address</div>
    </div>
  </div>

  <Warning>
    Once you click Confirm wallet, the address is live and the next payout batch will send USDC to it on Base by default. Actionist cannot reverse a broadcast payout, recall it, or recover funds sent to the wrong address or the wrong chain. Retype it carefully, and check the first six and last four characters before you confirm.
  </Warning>

  <Danger>
    Actionist staff will never ask for your seed phrase, your private key, or a "test payment" to verify a wallet. Treat any message asking for one as a scam, and report it to <a href="mailto:partners@actionist.ai">[partners@actionist.ai](mailto:partners@actionist.ai)</a> without following its instructions.
  </Danger>

  <div className="xc-quote">
    <p>A payout confirmed is a payout sent. There's no undo button on-chain.</p>
    <span>why the flow makes you retype the address before it goes live</span>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Reading the card</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Payout method states.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The payout method card only ever shows one of these at a time. The button next to it changes with the state.
    </p>
  </div>

  | What the card shows                                        | What it means                                                                                  | What to do                                                                                                                                                 |
  | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | "No wallet on file. Add an address to receive payouts"     | You haven't configured a payout method yet. Your commission still accrues normally.            | Click **Add wallet** and complete the two-step flow above.                                                                                                 |
  | "Pending: `{{addr}}` (awaiting confirmation)"              | You submitted an address but haven't completed the retype-and-confirm step.                    | Click **Confirm wallet**, retype the address exactly, and confirm.                                                                                         |
  | "`{{head}}`…`{{tail}}` · receiving address on file"        | An address is confirmed and active. Payouts will go here.                                      | Nothing, unless you're replacing it. Click **Change wallet** to do that.                                                                                   |
  | "Payouts disabled by support."                             | Actionist support has disabled payouts on your account.                                        | Contact <a href="mailto:partners@actionist.ai">[partners@actionist.ai](mailto:partners@actionist.ai)</a>. The button reads a non-interactive **Disabled**. |
  | "Could not load your payout method."                       | The card failed to load.                                                                       | Click **Retry**.                                                                                                                                           |
  | "Payout details are temporarily unavailable. `{{reason}}`" | A backend condition is temporarily blocking your payout details, with a short reason attached. | Read the reason shown. If it's unclear or persists, contact support.                                                                                       |

  <p className="text-sm text-gray-500 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    The address itself always renders the same way: the first six characters, an ellipsis, then the last four. A secondary line underneath reads "Confirmed `{{date}}`" once active, or "Updated `{{date}}`" after a change. The network line above it reads "`{{token}}` on `{{network}}`", which defaults to "USDC on Base".
  </p>

  <div className="xc-ba" style={{marginTop:'20px'}}>
    <div className="xc-ba-col before">
      <div className="xc-ba-tag">No wallet configured</div>
      <div className="xc-ba-item">Commission still accrues normally, moving through Pending and eventually Paid.</div>
      <div className="xc-ba-item">The card reads "No wallet on file. Add an address to receive payouts".</div>
      <div className="xc-ba-item">Nothing moves in the next payout batch. There's nowhere for it to go yet.</div>
    </div>

    <div className="xc-ba-col after">
      <div className="xc-ba-tag">Wallet confirmed</div>
      <div className="xc-ba-item">The card shows the first six and last four characters of your address.</div>
      <div className="xc-ba-item">"· receiving address on file" and "Confirmed `{{date}}`" sit underneath it.</div>
      <div className="xc-ba-item">The next monthly batch pays your Pending balance to that address, in USDC.</div>
    </div>
  </div>

  <p className="text-sm text-gray-500 dark:text-gray-400 max-w-3xl" style={{marginTop:'16px'}}>
    None of this changes how commission accrues. Whether or not you've configured a wallet, every client payment still writes its own row, still gets its 25% snapshotted, and still moves through Pending toward Paid. A wallet only determines where the money goes once it's ready to move.
  </p>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">When something doesn't load</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">States and controls.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The Revenue page has three independent panels: your KPI tiles, your payout method, and your ledger. Each fails and empties separately.
    </p>
  </div>

  | Message                                  | Where it appears                                           | Next step                                                                                    |
  | ---------------------------------------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
  | "Could not load revenue totals."         | The four KPI tiles at the top of the page.                 | Click **Retry**. Your underlying commission data is unaffected, this is only a load failure. |
  | "Could not load your payout method."     | The payout method card.                                    | Click **Retry**. Your wallet configuration, if any, is unaffected.                           |
  | "Could not load the transaction ledger." | The ledger table.                                          | Click **Retry**.                                                                             |
  | "No transactions yet."                   | The ledger table, when it loads successfully but is empty. | Nothing to do. This is the normal state before your first client payment.                    |

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'16px'}}>
    Each of these is a genuine load failure, not a sign that your commission or your wallet has been reset. Work through it in order before contacting support:
  </p>

  <ol className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'8px',paddingLeft:'20px',lineHeight:'1.8'}}>
    <li>Click <strong>Retry</strong> on the panel that failed.</li>
    <li>If it fails again, reload the whole page.</li>
    <li>If it still fails, treat it the same way as a blocked commission and reach out to <a href="/resellers/troubleshooting">Actionist Support</a>.</li>
  </ol>

  <p className="text-sm text-gray-500 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    A failed load on one panel doesn't tell you anything about the other two. It's normal for your KPI tiles to load fine while the ledger is still spinning, or the other way around.
  </p>
</div>

<hr className="xc-divider" />

<div className="w-full py-10">
  <div className="actionist-cta-panel xc-border">
    <div className="relative z-10 flex flex-col items-center gap-5 max-w-2xl mx-auto">
      <span className="actionist-eyebrow">25% flat, every client</span>

      <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-white leading-tight">
        Get your wallet set up once. Get paid every month after.
      </h2>

      <p className="text-base md:text-lg text-white/85">
        Add a payout wallet, keep an eye on the ledger, and let the monthly batch do the rest.
      </p>

      <div className="flex flex-wrap items-center justify-center gap-3 pt-2">
        <a className="actionist-cta-btn-primary" href="https://app.actionist.ai" target="_blank" rel="noreferrer">
          Open the Dashboard

          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
            <path d="M5 12h14" />

            <path d="m12 5 7 7-7 7" />
          </svg>
        </a>

        <a className="actionist-cta-btn-secondary" href="https://actionist.ai/partners/" target="_blank" rel="noreferrer">
          Signup as a Partner
        </a>
      </div>
    </div>
  </div>
</div>

<div className="w-full pt-2 pb-6">
  <p className="actionist-trust-line">
    25% flat commission, snapshotted per row, never recalculated after the fact.<br />
    Reversals are new rows, not edits · payouts settle monthly in USDC · nobody at Actionist will ever ask for your seed phrase.
  </p>
</div>

<div className="w-full pb-16 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Keep going</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Next steps.</h2>
  </div>

  <Columns cols={4}>
    <Card title="Managing clients" icon="users" href="/resellers/clients">
      Where these ledger rows come from: the clients whose invoices generate your commission.
    </Card>

    <Card title="Troubleshooting" icon="life-buoy" href="/resellers/troubleshooting">
      What to check before opening a support case, and what's a support case from the start.
    </Card>

    <Card title="Frequently asked questions" icon="circle-question-mark" href="/resellers/faq">
      Billing, access, and payout questions answered plainly.
    </Card>

    <Card title="Billing" icon="credit-card" href="/Folders/billing">
      How billing works on the client side of the workspace you're earning commission from.
    </Card>
  </Columns>
</div>
