# InFlow CLI > Agentic MPP / x402 payments from your machine. A wallet for your agents to onboard and pay. > Agent setup: https://inflowcli.ai/skill.md > Payments playbook: https://inflowcli.ai/skills/agentic-payments.md > Source: https://github.com/inflowpayai/inflow-cli # inflow ## inflow auth Authentication commands ### inflow auth login Authenticate with InFlow #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| | `--clientName` | `string` | `InFlow` | Agent or app name shown to the user during device authorization. | | `--interval` | `number` | `0` | Inline poll cadence in seconds. 0 returns immediately with the verification URL and a follow-up command hint; positive values poll until the device flow terminates. | | `--maxAttempts` | `number` | `0` | Hard cap on poll attempts. 0 means unlimited (bounded only by --timeout). | | `--timeout` | `number` | `300` | Polling deadline in seconds. | ### inflow auth logout Log out from InFlow ### inflow auth status Check authentication status #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| | `--interval` | `number` | `0` | Poll cadence in seconds. 0 returns the current snapshot; positive values yield on every change until terminal. | | `--maxAttempts` | `number` | `0` | Hard cap on poll attempts. 0 means unlimited (bounded only by --timeout). | | `--timeout` | `number` | `300` | Polling deadline in seconds. | | `--probe` | `boolean` | `false` | Validate the local access token by calling GET /v1/users/self. | ## inflow balances Balance commands ### inflow balances list List the authenticated user's balances #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| ## inflow deposit-addresses Deposit-address commands ### inflow deposit-addresses list List the authenticated user's configured deposit addresses #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| ## inflow inspect ### inflow inspect Detect a URL's payment protocol(s) and show MPP and x402 challenges together. Read-only probe - no auth, no payment. Read `detected` to choose a pay rail (MPP wins when both are present). #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `url` | `string` | yes | The resource URL to probe for MPP and/or x402 payment challenges. No payment is made. | #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| | `--method` | `string` | `GET` | HTTP method for the probe request. | | `--data` | `string` | | Request body for the probe. JSON or raw text. Content-Type defaults to application/json when --data is set unless a --header overrides it. | | `--header` | `array` | | Repeatable. "Name: Value" format. | #### Examples ```sh # Probe a URL and show every MPP and x402 challenge it advertises. inflow inspect https://api.foo.dev/dataset.csv # Probe a POST-only paywalled endpoint. inflow inspect https://api.foo.dev/widgets --method POST --data {"sku":"widget-1"} ``` ## inflow mpp MPP payment commands (pay, inspect, status, cancel, decode, supported). ### inflow mpp cancel Best-effort cancel of an MPP approval. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `approvalId` | `string` | yes | The approval id returned by `mpp pay` (on the pending frame). | ### inflow mpp decode Decode a raw WWW-Authenticate: Payment header, or a base64url credential / receipt. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `value` | `string` | yes | A raw `WWW-Authenticate: Payment` header value, or a base64url `Authorization: Payment` credential / `Payment-Receipt`. The kind is auto-detected. | ### inflow mpp inspect Show the seller's MPP challenge(s) for a URL. Read-only probe - no auth, no payment. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `url` | `string` | yes | The MPP-protected resource URL to probe. No payment is made. | #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| | `--paymentMethod` | `string` | | Only show challenges with this payment method (e.g. "inflow"). | | `--intent` | `string` | | Only show challenges with this intent (e.g. "charge"). | | `--currency` | `string` | | Only show challenges in this currency (e.g. "USDC"). | | `--rail` | `string` | | Only show challenges on this settlement rail (e.g. "balance", "instrument"). | | `--method` | `string` | `GET` | HTTP method for the probe request. | | `--data` | `string` | | Request body for the probe. JSON or raw text. Content-Type defaults to application/json when --data is set unless a --header overrides it. | | `--header` | `array` | | Repeatable. "Name: Value" format. | ### inflow mpp pay Pay an MPP-protected resource and return the seller response. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `url` | `string` | yes | The MPP-protected resource URL to pay for. | #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| | `--paymentMethod` | `string` | | Only consider challenges with this payment method (e.g. "inflow"). | | `--intent` | `string` | | Only consider challenges with this intent (e.g. "charge"). | | `--currency` | `string` | | Only consider challenges in this currency (e.g. "USDC"). | | `--rail` | `string` | | Only consider challenges on this settlement rail (e.g. "balance", "instrument"). | | `--method` | `string` | `GET` | HTTP method for the seller request. | | `--data` | `string` | | Request body. JSON or raw text. Content-Type defaults to application/json when --data is set unless a --header overrides it. | | `--header` | `array` | | Repeatable. "Name: Value" format. | | `--interval` | `number` | `0` | Inline poll cadence in seconds while a transaction is pending. 0 returns the transaction id and a follow-up command hint without blocking. | | `--maxAttempts` | `number` | `0` | Hard cap on poll attempts when --interval > 0. 0 means unlimited. | | `--timeout` | `number` | `900` | Polling deadline in seconds. Default 900s (matches the server-side approval expiry). | | `--instrumentId` | `string` | | Funding instrument id (UUID) for an instrument-rail challenge. The buyer does not choose the rail - it is derived from the seller challenge; this is the only buyer-supplied payment option. | | `--showBody` | `boolean` | `true` | Include the seller response body in the result. Default true so AI assistants paying for content receive the deliverable. Pass --no-show-body to suppress (e.g. for binary downloads paired with --output-file). | | `--outputFile` | `string` | | Write the seller response body bytes to this file path (overwrites silently). When set, the result frame includes `output_saved_to: ` instead of `body` / `body_base64`. Natural choice for binary content (PDFs, images, downloads). | | `--credentialFile` | `string` | | Write the base64url `Authorization: Payment` credential to this file path (mode 0o600, overwrites silently). When set, the result frame includes `credential_saved_to: ` instead of `credential`. Use to keep one-time payment credentials out of chat transcripts and logs. | ### inflow mpp status Poll the buyer-side state of an in-flight MPP transaction. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `transactionId` | `string` | yes | The transaction id returned by `mpp pay`. | #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| | `--interval` | `number` | `0` | Poll cadence in seconds. 0 returns the current snapshot; positive values yield on every change until ready or terminal. | | `--maxAttempts` | `number` | `0` | Hard cap on poll attempts. 0 means unlimited. | | `--timeout` | `number` | `900` | Polling deadline in seconds. | | `--credentialFile` | `string` | | Write the base64url `Authorization: Payment` credential to this file path (mode 0o600, overwrites silently). When set, the ready frame includes `credential_saved_to: ` instead of `credential`. Use to keep one-time payment credentials out of chat transcripts and logs. | ### inflow mpp supported List the methods the buyer can pay with - by intent, settlement rail, and currency. ## inflow user User profile commands ### inflow user get Retrieve the current authenticated user #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| ## inflow x402 x402 payment commands (pay, inspect, status, cancel, decode, supported). ### inflow x402 cancel Best-effort cancel of an x402 approval. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `approvalId` | `string` | yes | The approval id returned by `x402 pay`. | ### inflow x402 decode Decode a raw PAYMENT-REQUIRED header value. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `header` | `string` | yes | Raw PAYMENT-REQUIRED header value (base64). | ### inflow x402 inspect Show the seller's PAYMENT-REQUIRED accepts for a URL. Read-only probe - no auth, no payment. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `url` | `string` | yes | The x402-protected resource URL to probe. No payment is made. | #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| | `--scheme` | `string` | | Only show `accepts[]` entries with this scheme (e.g. "exact", "balance"). | | `--network` | `string` | | Only show entries on this network (e.g. "eip155:84532"). | | `--asset` | `string` | | Only show entries with this on-chain asset id (ERC-20 address or SVM mint). | | `--assetName` | `string` | | Only show entries whose `extra.assetName` symbol matches (e.g. "USDC"). | | `--method` | `string` | `GET` | HTTP method for the probe request. | | `--data` | `string` | | Request body for the probe. JSON or raw text. Content-Type defaults to application/json when --data is set unless a --header overrides it. | | `--header` | `array` | | Repeatable. "Name: Value" format. | ### inflow x402 pay Pay an x402-protected resource and return the seller response. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `url` | `string` | yes | The x402-protected resource URL to pay for. | #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| | `--scheme` | `string` | | Only consider `accepts[]` entries with this scheme (e.g. "exact", "balance"). | | `--network` | `string` | | Only consider entries on this network (e.g. "eip155:84532"). | | `--asset` | `string` | | Only consider entries with this on-chain asset id (ERC-20 address or SVM mint). | | `--assetName` | `string` | | Only consider entries whose `extra.assetName` symbol matches (e.g. "USDC"). | | `--method` | `string` | `GET` | HTTP method for the seller request. | | `--data` | `string` | | Request body. JSON or raw text. Content-Type defaults to application/json when --data is set unless a --header overrides it. | | `--header` | `array` | | Repeatable. "Name: Value" format. | | `--interval` | `number` | `0` | Inline poll cadence in seconds while awaiting approval. 0 returns the approval URL and a follow-up command hint without blocking. | | `--maxAttempts` | `number` | `0` | Hard cap on poll attempts when --interval > 0. 0 means unlimited. | | `--timeout` | `number` | `900` | Polling deadline in seconds. Default 900s (matches x402-buyer). | | `--paymentId` | `string` | | Caller-supplied payment identifier. 16-128 chars, ^[a-zA-Z0-9_-]+$. Forwarded to the server as remotePaymentId. | | `--showBody` | `boolean` | `true` | Include the seller response body in the result. Default true so AI assistants paying for content receive the deliverable. Pass --no-show-body to suppress (e.g. for binary downloads paired with --output-file). | | `--outputFile` | `string` | | Write the seller response body bytes to this file path (overwrites silently). When set, the result frame includes `output_saved_to: ` instead of `body` / `body_base64`. Natural choice for binary content (PDFs, images, downloads). | | `--payloadFile` | `string` | | Write the signed `encoded_payload` bytes to this file path (mode 0o600, overwrites silently). When set, the result frame includes `payload_saved_to: ` instead of `encoded_payload`. Use to keep one-time payment credentials out of chat transcripts and logs. | ### inflow x402 status Poll the signing state of an in-flight x402 transaction. #### Arguments | Name | Type | Required | Description | |------|------|----------|-------------| | `transactionId` | `string` | yes | The transaction id returned by `x402 pay`. | #### Options | Flag | Type | Default | Description | |------|------|---------|-------------| | `--interval` | `number` | `0` | Poll cadence in seconds. 0 returns the current snapshot; positive values yield on every change until signed or terminal. | | `--maxAttempts` | `number` | `0` | Hard cap on poll attempts. 0 means unlimited. | | `--timeout` | `number` | `900` | Polling deadline in seconds. | | `--payloadFile` | `string` | | Write the signed `encoded_payload` bytes to this file path (mode 0o600, overwrites silently). When set, status frames include `payload_saved_to: ` instead of `encoded_payload`. Use to keep one-time payment credentials out of chat transcripts and logs. | ### inflow x402 supported List the buyer-side capability cache (scheme x network).