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.
Requires a US Link account, Node 18 or later, and about three minutes.
receiver not yet configured. The recipe still works against any Stripe-operated MPP receiver, e.g. climate.stripe.dev.
- No.01
- No.02— sign in
Authenticate against your Link wallet. You’ll get a push to approve on your phone.
link-cli auth login - 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 - No.04— mint a $1 token
Create a Shared Payment Token for $1 to Dash. Replace
csmrpd_xxxwith your id from above. Tap approve on your phone — the CLI prints anlsrq_…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 - No.05— send it
The CLI does the 402 → credential dance with the Dash receiver. Replace
lsrq_xxxwith 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"}'
Recent successful payments to this receiver. Updates every five seconds.
— what just happened —Six pieces, one dollar.expand →collapse ↑
- 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 Requiredwith a challenge describing the price. The CLI re-issues the request withAuthorization: <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.