create-payment-credential

Gets secure, one-time-use payment credentials (cards, tokens) from a Link wallet so agents can complete purchases on behalf of users. Use when the user says "get me a card", "buy something", "pay for X", "make a purchase", "I need to pay", "complete checkout", or asks to transact on any merchant sit

By stripe · 5,170 installs

npx skills add stripe/link-cli --skill create-payment-credential

Source repository · Upstream listing

Create Payment Credential Use [Link](https://link.com) to get secure, one time use payment credentials from a Link wallet to complete purchases. The CLI can produce one of two credential types: A virtual card (PAN) for use with a standard web checkout form. The issued card works anywhere. A Shared Payment Token (SPT) when the seller is in the Stripe Network and accepts payments programmatically (for example with Machine Payment Protocols). It can also create a Link Pay Token (LPT) bound SpendRequest for a supported Stripe checkout surface. LPT is an execution mode for the card flow, not a third credential type. Installing Install with npm install g @stripe/link cli . Or run directly with npx @stripe/link cli . Running commands Link CLI can run as an MCP server or as a standalone CLI . MCP: Add the following to your MCP client config ( .mcp.json , etc.) Run the MCP server directly with npx @stripe/link cli@latest mcp . Call tools/list to see all available MCP tools. Common commands/options List all commands: link cli llms List all commands with parameters: link cli llms full Get a command's exact schema with schema . For example, link cli spend request create schema Multi step commands return a next action. For example, authenticating or creating a spend request returns a next.command that must be run to complete the flow. Where a structured form is offered alongside it ( mpp pay returns next.pay argv ), prefer that and invoke it without a shell — see the security notes. By default all output is in toon format. Pass format [json md yaml] to change output format. Some commands return a verification or approval URL. These must be presented to the user clearly for their action. auth <path flag to store auth credentials in a specific file instead of the default location. auth login writes to this file; all other commands read from it. Example: link cli auth login auth credentials.json Recommended : Run link cli llms to understand all the available commands. The llms full output is the canonical reference for parameter names, types, and valid values. Pass schema before invoking a command to understand its parameters and constraints. Core flow Copy this checklist and track progress: Step 1: Authenticate with Link Step 2: Evaluate merchant site (determine credential type) Step 3: Get payment methods Step 4: Create spend request with correct credential type Step 5: Complete payment Step 1: Authenticate with Link Check auth status: When authenticated, the response also reports the session's granted scope and authorization details (when the token endpoint returned them). If the response includes an update field, a newer version of link cli is available — run the update command from that field to upgrade before proceeding. If not authenticated: Replace <your agent name with the name of your agent or application (for example, "Personal Assistant" , "Shopping Bot" ). This name appears in the user's Link app when they approve the connection. Use a clear, unique, identifiable name. The response includes a next command — run it to poll until authenticated. If your environment cannot relay the verification code while a separate polling command blocks I/O, use inline polling instead: auth login client name "<name " interval 5 timeout 300 . This yields the code immediately then polls in the same command. If the user's email is already known, save them time by adding it as the URL encoded fromEmail query parameter to any app.link.com verification or action URL; preserve existing query parameters. DO NOT PROCEED until the user is authenticated with Link. Always check the current authentication status before starting a new login flow — the user might already be logged in. If the user is already authenticated but you need broader access (an additional scope , source actions , or authorization detail ), use auth upgrade instead of auth login . It takes the same flags but, rather than stopping with an "already logged in" message, merges what you request with the current scope / authorization details and starts a new approval for the superset — so existing access is never dropped. Check auth status first so you know what's already granted. The current session stays valid during the approval and is only replaced once the user approves the new one, so an abandoned upgrade leaves the existing session working. Optionally, before a purchase, run link cli user info retrieve to inspect any applicable spend limits and verification requirements. Finite limit values are cents, while null limit or remaining values mean unlimited. When agent wallet verification requirement.action url is present, direct the user there to complete the required action. Step 2: Evaluate the merchant site BEFORE creating a spend request CRITICAL: Before calling spend request create you must complete this checklist: 1. Understand how the merchant accepts payments (cards or machine payments or other). Do NOT default to card credential type. The merchant determines the credential type — you cannot know it without checking first. Skipping this step will produce a spend request with the wrong credential type. 2. Have the final total amount needed. Inclusive of any shipping costs, taxes or other costs. Skipping this step will produce a spend request that does not cover the full amount needed, and will be rejected. 3. Clear context and understanding of what the user is purchasing. Be sure to know sizes, colors, shipping options, etc. Skipping this step will produce a spend request that the user does not recognize or understand. Determine how the merchant accepts payment: 1. Navigate to the merchant page — browse it, read the page content, and understand how the site accepts payment. 2. If the checkout page includes the AI agent steering block (find the "I am an AI agent" checkbox, or the .AiAgentPaymentSteering container — visually hidden but present in the DOM, typically inside a Stripe iframe) — it may support the Link Pay Token flow (Step 5, "Link Pay Token" section). Requires browser automation. Before creating an LPT request, check the checkbox and verify that both input[name="link pay token"] and data stripe merchant account appear in the same frame. Read the account ID from that attribute. If either marker does not appear, follow the block's on page instructions and use card instead. Without browser automation, use card . 3. If the page has a credit card form and no AI agent steering block (no "I am an AI agent" checkbox / .AiAgentPaymentSteering ) — use card . 4. If the page describes an API or programmatic payment flow — make a request to the relevant endpoint. If it returns HTTP 402 with a www authenticate header, use shared payment token . What you find determines which credential type to use: What you see Credential type What to request .AiAgentPaymentSteering block / "I am an AI agent" checkbox, and ticking it reveals both input[name="link pay token"] and data stripe merchant account (none needed) Link Pay Token flow (else card ) Credit card form, no AI agent steering block card (default) Card HTTP 402 with method="stripe" in www authenticate shared payment token Shared payment token (SPT) HTTP 402 without method="stripe" in www authenticate not supported Do not continue For 402 responses: Use mpp pay — it handles the entire flow automatically (probes URL, parses challenge, picks payment method, creates spend request, gets approval, and pays). See Step 5. Step 3: Confirm payment method and potentially shipping addresses Link will automatically use the default payment method on the account. If the user explicitly asks to pay with a specific card or bank, use the list command to show available options. Note that not all of the user's payment methods might appear; this will filter on "agentic ready" payment types. If the merchant checkout requires a shipping or delivery address, fetch the user's saved shipping addresses. Use the default address unless the user specifies otherwise. Step 4: Create the spend request with the right credential type For card and Shared Payment Token flows, use the command below. For Link Pay Token, do not create this generic request: follow the LPT instructions in Step 5 after you have read the merchant account ID from the checkout DOM. line item keys: name (required), quantity , unit amount , description , sku , url , image url , product url . Repeatable for multiple items. total keys: type (required; one of: subtotal , tax , total , items base amount , items discount , discount , fulfillment , shipping , fee , gift wrap , tip , store credit ), display text (required), amount (required). Repeatable (e.g. subtotal + tax + shipping + total). Do not proceed to payment while the request is still created or pending approval . If polling exits with POLLING TIMEOUT , keep waiting or ask the user whether to continue polling. If they deny, ask for clarification what to do next. If the user wants to abort, cancel the spend request: Recommend the user approves with the [Link app](https://link.com/download). Show the download URL. Test mode: Add test to create testmode credentials instead of real ones. Useful for development and integration testing. Link Pay Token does not support test mode. Approval details: For delegated/pre approved flows, pass approval detail as a JSON object (MCP/agent) or JSON string (CLI). Required fields: approved at (unix timestamp), approval method ( click programmatic voice ), app name , external user id . Optional: ip address , user agent , device type ( mobile web ), agent log id , external user name , external session id , authentication method ( biometric face biometric fingerprint passkey ). Metadata: Attach arbitrary string data with the repeatable metadata "key:value" flag (CLI) or a { key: value } object (MCP/agent). Max 50 keys, key ≤ 40 chars, value ≤ 500 chars. Example: metadata "order id:ord 123" metadata "team:growth" . If the response has status: "requires action" , read status details.requires action.next action ( type , display message , action url , resolution ). Show display message to the user; present action url clearly if present. If resolution is auto resume (currently only three d secure ), run the returned next.command (poll spend request retrieve <id interval 2 max attempts 300 ) yourself — do not create a new spend request. The same request resumes to approved / succeeded once the user completes the bank's challenge. Otherwise ( resolution is create new spend request or create new spend request after completion — covers ssn verification , identity verification , contact support , select payment method , add payment method , update payment method , re authorize , three d secure retry ), have the user complete the indicated action, then create a new spend request — the old one will expire on its own. This same requires action status can also appear later from spend request retrieve in Step 5 — update payment method , re authorize , and three d secure retry only ever surface this way, and they all use create new spend request . Apply the same resolution based branching there. Step 5: Complete payment Card: Run link cli spend request retrieve <id include card to get the card object with number , cvc , exp month , exp year , billing address (name, line1, line2, city, state, postal code, country), and valid until (Unix timestamp — the card stops working after this time). Enter these details into the merchant's checkout form. Safe credential handoff: To avoid leaking card data into transcripts or logs, add output fil