—  live demo  —

Send $1 to Dash.

Open your terminal and run five commands. An AI agent in your Link wallet mints a one-time payment token, your phone vibrates, you tap approve, and a real dollar lands on Dash’s Stripe account — via the Machine Payment Protocol’s 402 challenge dance, no card form involved.

Eligibility

Requires a US Link account, Node 18 or later, and about three minutes.

Mode

receiver not yet configured. The recipe still works against any Stripe-operated MPP receiver, e.g. climate.stripe.dev.

—  the recipe  —
  1. No.
    01
    install

    Install Stripe’s link-cli globally.

    npm i -g @stripe/link-cli
  2. No.
    02
    sign in

    Authenticate against your Link wallet. You’ll get a push to approve on your phone.

    link-cli auth login
  3. No.
    03
    find your card

    List the payment methods on your wallet and copy the csmrpd_… id of the one you want to spend from.

    link-cli payment-methods list
  4. No.
    04
    mint a $1 token

    Create a Shared Payment Token for $1 to Dash. Replace csmrpd_xxx with your id from above. Tap approve on your phone — the CLI prints an lsrq_… id.

    link-cli spend-request create \
      --payment-method-id csmrpd_xxx \
      --credential-type shared_payment_token \
      --network-id profile_test_<DASH> \
      --amount 100 \
      --currency usd \
      --context "$1 testmode demo payment to Dash Studios via Machine Payment Protocol — see /pay-dash for context. This is a demonstration of agent-initiated payments using Stripe Link." \
      --line-item "name:$1 to Dash,unit_amount:100,quantity:1" \
      --total "type:total,display_text:Total,amount:100" \
      --test \
      --request-approval
  5. No.
    05
    send it

    The CLI does the 402 → credential dance with the Dash receiver. Replace lsrq_xxx with your spend-request id from step 04.

    link-cli mpp pay https://dash-labs-amsrjnema-scott-schindlers-projects.vercel.app/api/pay-dash/receiver \
      --spend-request-id lsrq_xxx \
      --method POST \
      --data '{"note":"hello dash"}'
—  live receipts  —

Recent successful payments to this receiver. Updates every five seconds.

loading recent payments…
—  what just happened  —
Six pieces, one dollar.
expand →
  • Link wallet. Your card sits inside Stripe’s Link accelerator. Your real card details never leave it.
  • OAuth Device Flow. Step 02 is RFC 8628 — CLI gets a code, you authorize in the browser, CLI polls until you approve.
  • Spend Request. Step 04 asks Link to authorize one specific dollar to one specific merchant network — with line items, context, and an explicit push-approval gate.
  • Shared Payment Token. On approval, Link mints a one-time-use token (an spt_…) bound to this dollar on this network. It can’t be replayed elsewhere.
  • HTTP 402 + WWW-Authenticate. Step 05 first hits the receiver with no credential. The receiver responds 402 Payment Required with a challenge describing the price. The CLI re-issues the request with Authorization: <credential> carrying the SPT.
  • Stripe agentic charge. The receiver redeems the SPT via payment_method_data[shared_payment_granted_token] on a confirmed PaymentIntent. The same dollar can’t be charged twice — the challenge id is the idempotency key.

The full flow is built on stripe/link-cli and the mppx package — both MIT, both readable in an afternoon.