diff --git a/skills/managed-pentesting-with-strix/SKILL.md b/skills/managed-pentesting-with-strix/SKILL.md index 4195111a..2b46ec06 100644 --- a/skills/managed-pentesting-with-strix/SKILL.md +++ b/skills/managed-pentesting-with-strix/SKILL.md @@ -71,9 +71,9 @@ strix cloud billing topup --credits 20 --yes # --yes skips the confirmation pr strix cloud billing topup --credits 20 --no-pay # print the 402 challenge without paying ``` -Card payments need a payer-side Stripe payment method. Pass it with `--payment-method pm_...` or set `MPPX_STRIPE_PAYMENT_METHOD`, together with the payer key in `MPPX_STRIPE_SECRET_KEY`. A funded `mppx` account (`npx mppx account create`) works for stablecoin payments without those variables. +The default payment path is the Stripe agent wallet. Tell the user to set it up one time at [link.com/agents](https://link.com/agents). After setup, the user approves each payment in the Link app, and no keys or variables are necessary. -If no wallet is available, print the challenge with `--no-pay` and ask the user to top up in the dashboard instead. +If the user does not want a wallet, create a hosted checkout link with `strix cloud billing subscribe --plan strix_top_up` and give the link to the user. The user pays in the browser. Automatic top-ups (admin): `strix cloud billing auto-topup` shows the setting. Enable it with: diff --git a/strix/interface/cloud/runner.py b/strix/interface/cloud/runner.py index 7f7300c2..c4f461e3 100644 --- a/strix/interface/cloud/runner.py +++ b/strix/interface/cloud/runner.py @@ -225,8 +225,8 @@ def _build_parser(group: str, verb_label: str, cmd: Cmd) -> argparse.ArgumentPar default=None, metavar="PM_ID", help=( - "Stripe payment method for the card payment, for example pm_card_visa " - "in test mode. Defaults to MPPX_STRIPE_PAYMENT_METHOD." + "Stripe payment method for the card payment. " + "Defaults to MPPX_STRIPE_PAYMENT_METHOD." ), ) return parser @@ -380,9 +380,10 @@ def _topup( command += ["-M", f"paymentMethod={payment_method}"] elif not os.environ.get("MPPX_ACCOUNT") and not os.environ.get("MPPX_STRIPE_SECRET_KEY"): console.print( - "[dim]Tip: card payments need a wallet. Pass --payment-method, or set " - "MPPX_STRIPE_SECRET_KEY and MPPX_STRIPE_PAYMENT_METHOD, or create an " - "mppx account first with `npx mppx account create`.[/]" + "[dim]Tip: payments need a wallet. Set up a Stripe agent wallet at " + "https://link.com/agents, and the user approves each payment in the Link app. " + "If the user does not want a wallet, run " + "`strix cloud billing subscribe --plan strix_top_up` for a hosted checkout link.[/]" ) result = subprocess.run(command, check=False) # noqa: S603 return http.EXIT_OK if result.returncode == 0 else http.EXIT_PAYMENT