{
  "schemaVersion": "1.0",
  "item": {
    "slug": "rapay",
    "name": "Ra Pay",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/greendlt224/rapay",
    "canonicalUrl": "https://clawhub.ai/greendlt224/rapay",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/rapay",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=rapay",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "openclaw-skill-transfer/manifest.yaml",
      "manifest.yaml",
      "README.md",
      "SKILL.md",
      "openclaw-skill-transfer/README.md",
      "openclaw-skill-transfer/SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/rapay"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/rapay",
    "agentPageUrl": "https://openagent3.xyz/skills/rapay/agent",
    "manifestUrl": "https://openagent3.xyz/skills/rapay/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/rapay/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Ra Pay — AI-Native Fiat Payments",
        "body": "Ra Pay is the first CLI-native payment platform built for AI agents. It lets you send compliant fiat USD payments using simple CLI commands. Every payment goes through Stripe's regulated infrastructure with full compliance screening.\n\nThis skill teaches you how to use the Ra Pay CLI to send business payments on behalf of your user.\n\nNeed to pay or get paid by another agent? If the other party doesn't have Ra Pay, see the Transaction Protocol and shareable onboarding scripts at the bottom of this file — they let you onboard the other agent without them needing this skill."
      },
      {
        "title": "Installation",
        "body": "npm install -g @rapay/cli\n\nVerify installation:\n\nra --version\n\nExpected output: ra-cli 1.5.0 or later."
      },
      {
        "title": "One-Time Setup",
        "body": "Before sending payments, the user must complete account setup. The steps depend on whether they want to send, receive, or both."
      },
      {
        "title": "Setup Paths",
        "body": "GoalRequired CommandWhat It DoesSend paymentsra add-cardSaves a credit card via Stripe Checkout (no bank account needed)Receive paymentsra link-bankConnects a bank account via Stripe Connect (for payouts)Bothra add-card + ra link-bankFull sender + receiver setup"
      },
      {
        "title": "To Send: Add a Credit Card",
        "body": "ra add-card\n\nThis opens a Stripe Checkout page in the browser where the user securely saves a credit card. Once complete, the card is stored with Stripe (not locally) and payments can be sent immediately. No bank account or Stripe Connect onboarding is needed to send."
      },
      {
        "title": "To Receive: Link a Bank Account",
        "body": "ra link-bank\n\nThis opens a Stripe-hosted flow in the browser where the user connects their bank account via Stripe Connect. Once complete, the CLI stores the session locally. This is required to receive payments — senders do not need this step.\n\nTo reconnect an existing verified account:\n\nra link-bank --account acct_XXXXXXXXX"
      },
      {
        "title": "Accept Terms of Service",
        "body": "ra accept-tos\n\nThe user must accept Ra Pay's Terms of Service before sending any payments.\n\nCheck TOS status at any time:\n\nra tos-status"
      },
      {
        "title": "Verify Account",
        "body": "ra whoami\n\nConfirm the account shows as linked and verified before proceeding with payments."
      },
      {
        "title": "Sending Payments",
        "body": "Ra Pay uses a two-step confirmation flow for every payment. This is mandatory — never skip the preview step."
      },
      {
        "title": "Step 1: Preview the Payment",
        "body": "ra send <AMOUNT> USD to <RECIPIENT_ID> --for \"<BUSINESS_PURPOSE>\" --json\n\nExample:\n\nra send 150 USD to acct_1A2B3C4D5E --for \"Logo design work - Invoice #427\" --json\n\nThis returns a fee breakdown without executing the payment:\n\n{\n  \"status\": \"preview\",\n  \"amount\": 150.00,\n  \"currency\": \"USD\",\n  \"recipient\": \"acct_1A2B3C4D5E\",\n  \"fee\": 3.00,\n  \"recipient_receives\": 147.00,\n  \"business_purpose\": \"Logo design work - Invoice #427\"\n}"
      },
      {
        "title": "Step 2: Show the Preview and Get User Approval",
        "body": "You MUST show the fee breakdown to the user and ask for explicit confirmation before proceeding. Never auto-confirm a payment.\n\nPresent the details clearly:\n\nAmount charged: $150.00\nRa Pay fee (2%): $3.00\nRecipient receives: $147.00\nRecipient: acct_1A2B3C4D5E\nPurpose: Logo design work - Invoice #427"
      },
      {
        "title": "Step 3: Execute the Payment",
        "body": "Only after the user explicitly confirms, add the --confirm flag:\n\nra send 150 USD to acct_1A2B3C4D5E --for \"Logo design work - Invoice #427\" --json --confirm\n\nThe --confirm flag executes the payment. Without it, you always get a preview."
      },
      {
        "title": "Amount Rules",
        "body": "Minimum payment: $1.00\nCurrency: USD only\nRecipients must be valid Stripe connected accounts (format: acct_ followed by alphanumeric characters)"
      },
      {
        "title": "Business Purpose Requirements",
        "body": "Ra Pay is a business-to-business payment platform. Every payment requires a --for flag with a legitimate business purpose (10–200 characters)."
      },
      {
        "title": "Valid Business Purposes",
        "body": "Good examples:\n\n\"Freelance development work - Invoice #123\"\n\"API consulting services - March 2026\"\n\"Logo design work\"\n\"Website hosting fees - Q1 2026\"\n\"Content writing - 5 blog posts\"\n\nBusiness purposes should be specific and describe real goods or services rendered."
      },
      {
        "title": "Blocked Patterns — Do NOT Use These",
        "body": "Ra Pay will reject payments with purposes that match these categories:\n\nPeer-to-peer language — Ra Pay is not for personal transfers:\n\nfriend, family, roommate, splitting bills, payback, loan, personal reimbursement\n\nGift language:\n\ngift, birthday, holiday\n\nMoney laundering red flags:\n\ngift cards, prepaid cards, cryptocurrency purchase, wire transfer\n\nVague or unspecific purposes:\n\n\"for services\" (too vague — specify what services)\n\"payment\" (not a purpose)\n\"transfer\" (not a purpose)\n\nGibberish or test strings:\n\nRepetitive characters (e.g., \"aaaaaaaaaa\")\nRandom letters (e.g., \"asdfghjkl\")\nRepeated words (e.g., \"test test test\")"
      },
      {
        "title": "If a Purpose Is Rejected",
        "body": "Tell the user: \"Ra Pay is for business transactions only. Please provide a specific business purpose describing the goods or services involved.\"\n\nHelp them rewrite their purpose to be specific and business-related."
      },
      {
        "title": "Add or Update Payment Card",
        "body": "ra add-card\n\nOpens Stripe Checkout in the browser to save or update a credit card for sending payments. The card is stored securely with Stripe, not locally.\n\nTo remove a saved card, use ra dashboard to open the Stripe Dashboard where the user can manage or delete their payment methods."
      },
      {
        "title": "Check Balance",
        "body": "ra balance --json\n\nReturns current balance, pending amounts, and payout schedule."
      },
      {
        "title": "View Transaction History",
        "body": "ra history --json\n\nReturns recent payments with timestamps and status. To show more transactions:\n\nra history --limit 50 --json\n\nThe --limit flag accepts values from 1 to 100 (default: 20 in CLI, 10 in MCP)."
      },
      {
        "title": "Account Info",
        "body": "ra whoami\n\nShows user ID, Stripe account status, verification status, and account tier."
      },
      {
        "title": "Manage Refunds",
        "body": "ra refund\n\nOpens the Stripe Dashboard in the browser for processing refunds. Refunds must be handled through the Stripe interface for security."
      },
      {
        "title": "Manage Disputes",
        "body": "ra dispute\n\nOpens the Stripe Disputes page. Remind the user: disputes must be responded to within the given timeframe or they auto-resolve against the user."
      },
      {
        "title": "Open Stripe Dashboard",
        "body": "ra dashboard\n\nOpens the full Stripe account dashboard in the browser. Use this for managing payment methods (including removing saved cards), viewing detailed transaction records, and account settings."
      },
      {
        "title": "Unlink Account",
        "body": "ra unlink\n\nDisconnects the Stripe account and clears the local session."
      },
      {
        "title": "Using the --json Flag",
        "body": "Always use --json when calling Ra Pay commands. This returns structured JSON output that you can parse reliably instead of human-formatted text.\n\nCommands that support --json:\n\nra send ... --json\nra balance --json\nra history --json"
      },
      {
        "title": "Error Handling",
        "body": "\"Not linked\" — The user hasn't set up a payment method. To send, run ra add-card. To receive, run ra link-bank.\n\"TOS not accepted\" — The user needs to run ra accept-tos.\n\"Invalid business purpose\" — The purpose was rejected by compliance screening. Help the user write a specific, business-related purpose.\n\"Invalid recipient\" — The recipient ID must match the format acct_ followed by alphanumeric characters.\n\"Minimum amount\" — Payment must be at least $1.00.\n\"CLI version outdated\" — The user needs to update: npm install -g @rapay/cli"
      },
      {
        "title": "Important Rules",
        "body": "Never auto-confirm payments. Always show the fee preview and get explicit user approval.\nNever fabricate recipient IDs. Only use real acct_ IDs provided by the user.\nNever bypass business purpose validation. If a purpose is rejected, help the user write a valid one.\nAlways use --json for structured output.\nRa Pay credentials stay local. Never ask users to share API keys, session tokens, or account IDs with you. Everything runs on their machine."
      },
      {
        "title": "Transaction Protocol — Coordinating Payments Between Agents",
        "body": "When your user wants to pay another user whose agent you can communicate with, follow this protocol. It handles the common case where the other agent has never heard of Ra Pay."
      },
      {
        "title": "Step 1: Check Your Own Setup",
        "body": "Run ra whoami to confirm your user has a linked account and payment method. If not, walk them through the setup steps above before proceeding."
      },
      {
        "title": "Step 2: Ask the Other Agent for Their Recipient ID",
        "body": "Message the seller/recipient agent and ask: \"Does your user have a Ra Pay account? If so, what is their Stripe connected account ID? It starts with acct_.\""
      },
      {
        "title": "Step 3: If They Don't Have Ra Pay",
        "body": "If the other agent doesn't know what Ra Pay is or their user isn't set up, send them the Seller Onboarding Script below. Copy the entire block and send it to the other agent as a message."
      },
      {
        "title": "Step 4: Preview the Payment",
        "body": "Once you have the recipient's acct_ ID:\n\nra send <AMOUNT> USD to <RECIPIENT_ACCT_ID> --for \"<BUSINESS_PURPOSE>\" --json"
      },
      {
        "title": "Step 5: Get Your User's Approval",
        "body": "Show your user the full fee breakdown from the preview. Do not proceed without explicit approval."
      },
      {
        "title": "Step 6: Execute the Payment",
        "body": "ra send <AMOUNT> USD to <RECIPIENT_ACCT_ID> --for \"<BUSINESS_PURPOSE>\" --json --confirm"
      },
      {
        "title": "Step 7: Confirm to the Other Agent",
        "body": "Send the other agent the payment confirmation JSON so they can inform their user that the payment has been received."
      },
      {
        "title": "Shareable Script — Send This to a Seller Agent",
        "body": "When a seller agent doesn't have Ra Pay set up, copy everything inside the fence below and send it to them as a message. It is self-contained — they do not need the Ra Pay skill installed.\n\nINCOMING PAYMENT NOTIFICATION\n\nA buyer wants to pay your user via Ra Pay (rapay.ai), a CLI-based business\npayment platform that processes payments through Stripe.\n\nTo receive this payment, your user needs to complete a short one-time setup.\nPlease walk them through the following steps:\n\nSTEP 1 — Install the Ra Pay CLI:\n  npm install -g @rapay/cli\n\nSTEP 2 — Connect a bank account to receive payouts:\n  ra link-bank\n  (This opens a Stripe-hosted page in the browser. Your user connects their\n  bank account through Stripe — no sensitive info is entered in the terminal.)\n\nSTEP 3 — Accept the Terms of Service:\n  ra accept-tos\n\nSTEP 4 — Get the account ID:\n  ra whoami\n  Look for the Stripe connected account ID — it starts with \"acct_\".\n\nOnce setup is complete, send back the acct_ ID so the buyer can complete\nthe payment. The funds will be deposited to your user's bank account via\nStripe's standard payout schedule.\n\nYour user can verify their account status at any time with: ra whoami\nYour user can check their balance with: ra balance --json\nYour user can view received payments with: ra history --json"
      },
      {
        "title": "Shareable Script — Send This to a Buyer Agent",
        "body": "When a buyer agent needs to pay your user but doesn't have Ra Pay set up, copy everything inside the fence below and send it to them as a message. Replace YOUR_ACCT_ID_HERE with your user's actual acct_ ID before sending.\n\nPAYMENT SETUP INSTRUCTIONS\n\nYour user can pay via Ra Pay (rapay.ai), a CLI-based business payment platform\nthat processes payments through Stripe.\n\nTo send a payment, your user needs to complete a short one-time setup:\n\nSTEP 1 — Install the Ra Pay CLI:\n  npm install -g @rapay/cli\n\nSTEP 2 — Add a credit card for sending payments:\n  ra add-card\n  (This opens a Stripe Checkout page in the browser. The card is stored\n  securely with Stripe — no card details are entered in the terminal.)\n\nSTEP 3 — Accept the Terms of Service:\n  ra accept-tos\n\nSTEP 4 — Send the payment:\n  ra send [AMOUNT] USD to YOUR_ACCT_ID_HERE --for \"[BUSINESS PURPOSE]\" --json\n\n  This will show a fee preview. Show it to your user for approval.\n  Once approved, add --confirm to execute:\n\n  ra send [AMOUNT] USD to YOUR_ACCT_ID_HERE --for \"[BUSINESS PURPOSE]\" --json --confirm\n\nIMPORTANT: Always preview the payment first and get your user's explicit\napproval before adding --confirm. Never auto-confirm payments.\n\nRa Pay charges a 2% fee on each transaction. The fee is shown in the preview."
      }
    ],
    "body": "Ra Pay — AI-Native Fiat Payments\n\nRa Pay is the first CLI-native payment platform built for AI agents. It lets you send compliant fiat USD payments using simple CLI commands. Every payment goes through Stripe's regulated infrastructure with full compliance screening.\n\nThis skill teaches you how to use the Ra Pay CLI to send business payments on behalf of your user.\n\nNeed to pay or get paid by another agent? If the other party doesn't have Ra Pay, see the Transaction Protocol and shareable onboarding scripts at the bottom of this file — they let you onboard the other agent without them needing this skill.\n\nInstallation\nnpm install -g @rapay/cli\n\n\nVerify installation:\n\nra --version\n\n\nExpected output: ra-cli 1.5.0 or later.\n\nOne-Time Setup\n\nBefore sending payments, the user must complete account setup. The steps depend on whether they want to send, receive, or both.\n\nSetup Paths\nGoal\tRequired Command\tWhat It Does\nSend payments\tra add-card\tSaves a credit card via Stripe Checkout (no bank account needed)\nReceive payments\tra link-bank\tConnects a bank account via Stripe Connect (for payouts)\nBoth\tra add-card + ra link-bank\tFull sender + receiver setup\nTo Send: Add a Credit Card\nra add-card\n\n\nThis opens a Stripe Checkout page in the browser where the user securely saves a credit card. Once complete, the card is stored with Stripe (not locally) and payments can be sent immediately. No bank account or Stripe Connect onboarding is needed to send.\n\nTo Receive: Link a Bank Account\nra link-bank\n\n\nThis opens a Stripe-hosted flow in the browser where the user connects their bank account via Stripe Connect. Once complete, the CLI stores the session locally. This is required to receive payments — senders do not need this step.\n\nTo reconnect an existing verified account:\n\nra link-bank --account acct_XXXXXXXXX\n\nAccept Terms of Service\nra accept-tos\n\n\nThe user must accept Ra Pay's Terms of Service before sending any payments.\n\nCheck TOS status at any time:\n\nra tos-status\n\nVerify Account\nra whoami\n\n\nConfirm the account shows as linked and verified before proceeding with payments.\n\nSending Payments\n\nRa Pay uses a two-step confirmation flow for every payment. This is mandatory — never skip the preview step.\n\nStep 1: Preview the Payment\nra send <AMOUNT> USD to <RECIPIENT_ID> --for \"<BUSINESS_PURPOSE>\" --json\n\n\nExample:\n\nra send 150 USD to acct_1A2B3C4D5E --for \"Logo design work - Invoice #427\" --json\n\n\nThis returns a fee breakdown without executing the payment:\n\n{\n  \"status\": \"preview\",\n  \"amount\": 150.00,\n  \"currency\": \"USD\",\n  \"recipient\": \"acct_1A2B3C4D5E\",\n  \"fee\": 3.00,\n  \"recipient_receives\": 147.00,\n  \"business_purpose\": \"Logo design work - Invoice #427\"\n}\n\nStep 2: Show the Preview and Get User Approval\n\nYou MUST show the fee breakdown to the user and ask for explicit confirmation before proceeding. Never auto-confirm a payment.\n\nPresent the details clearly:\n\nAmount charged: $150.00\nRa Pay fee (2%): $3.00\nRecipient receives: $147.00\nRecipient: acct_1A2B3C4D5E\nPurpose: Logo design work - Invoice #427\nStep 3: Execute the Payment\n\nOnly after the user explicitly confirms, add the --confirm flag:\n\nra send 150 USD to acct_1A2B3C4D5E --for \"Logo design work - Invoice #427\" --json --confirm\n\n\nThe --confirm flag executes the payment. Without it, you always get a preview.\n\nAmount Rules\nMinimum payment: $1.00\nCurrency: USD only\nRecipients must be valid Stripe connected accounts (format: acct_ followed by alphanumeric characters)\nBusiness Purpose Requirements\n\nRa Pay is a business-to-business payment platform. Every payment requires a --for flag with a legitimate business purpose (10–200 characters).\n\nValid Business Purposes\n\nGood examples:\n\n\"Freelance development work - Invoice #123\"\n\"API consulting services - March 2026\"\n\"Logo design work\"\n\"Website hosting fees - Q1 2026\"\n\"Content writing - 5 blog posts\"\n\nBusiness purposes should be specific and describe real goods or services rendered.\n\nBlocked Patterns — Do NOT Use These\n\nRa Pay will reject payments with purposes that match these categories:\n\nPeer-to-peer language — Ra Pay is not for personal transfers:\n\nfriend, family, roommate, splitting bills, payback, loan, personal reimbursement\n\nGift language:\n\ngift, birthday, holiday\n\nMoney laundering red flags:\n\ngift cards, prepaid cards, cryptocurrency purchase, wire transfer\n\nVague or unspecific purposes:\n\n\"for services\" (too vague — specify what services)\n\"payment\" (not a purpose)\n\"transfer\" (not a purpose)\n\nGibberish or test strings:\n\nRepetitive characters (e.g., \"aaaaaaaaaa\")\nRandom letters (e.g., \"asdfghjkl\")\nRepeated words (e.g., \"test test test\")\nIf a Purpose Is Rejected\n\nTell the user: \"Ra Pay is for business transactions only. Please provide a specific business purpose describing the goods or services involved.\"\n\nHelp them rewrite their purpose to be specific and business-related.\n\nOther Commands\nAdd or Update Payment Card\nra add-card\n\n\nOpens Stripe Checkout in the browser to save or update a credit card for sending payments. The card is stored securely with Stripe, not locally.\n\nTo remove a saved card, use ra dashboard to open the Stripe Dashboard where the user can manage or delete their payment methods.\n\nCheck Balance\nra balance --json\n\n\nReturns current balance, pending amounts, and payout schedule.\n\nView Transaction History\nra history --json\n\n\nReturns recent payments with timestamps and status. To show more transactions:\n\nra history --limit 50 --json\n\n\nThe --limit flag accepts values from 1 to 100 (default: 20 in CLI, 10 in MCP).\n\nAccount Info\nra whoami\n\n\nShows user ID, Stripe account status, verification status, and account tier.\n\nManage Refunds\nra refund\n\n\nOpens the Stripe Dashboard in the browser for processing refunds. Refunds must be handled through the Stripe interface for security.\n\nManage Disputes\nra dispute\n\n\nOpens the Stripe Disputes page. Remind the user: disputes must be responded to within the given timeframe or they auto-resolve against the user.\n\nOpen Stripe Dashboard\nra dashboard\n\n\nOpens the full Stripe account dashboard in the browser. Use this for managing payment methods (including removing saved cards), viewing detailed transaction records, and account settings.\n\nUnlink Account\nra unlink\n\n\nDisconnects the Stripe account and clears the local session.\n\nUsing the --json Flag\n\nAlways use --json when calling Ra Pay commands. This returns structured JSON output that you can parse reliably instead of human-formatted text.\n\nCommands that support --json:\n\nra send ... --json\nra balance --json\nra history --json\nError Handling\n\"Not linked\" — The user hasn't set up a payment method. To send, run ra add-card. To receive, run ra link-bank.\n\"TOS not accepted\" — The user needs to run ra accept-tos.\n\"Invalid business purpose\" — The purpose was rejected by compliance screening. Help the user write a specific, business-related purpose.\n\"Invalid recipient\" — The recipient ID must match the format acct_ followed by alphanumeric characters.\n\"Minimum amount\" — Payment must be at least $1.00.\n\"CLI version outdated\" — The user needs to update: npm install -g @rapay/cli\nImportant Rules\nNever auto-confirm payments. Always show the fee preview and get explicit user approval.\nNever fabricate recipient IDs. Only use real acct_ IDs provided by the user.\nNever bypass business purpose validation. If a purpose is rejected, help the user write a valid one.\nAlways use --json for structured output.\nRa Pay credentials stay local. Never ask users to share API keys, session tokens, or account IDs with you. Everything runs on their machine.\nTransaction Protocol — Coordinating Payments Between Agents\n\nWhen your user wants to pay another user whose agent you can communicate with, follow this protocol. It handles the common case where the other agent has never heard of Ra Pay.\n\nStep 1: Check Your Own Setup\n\nRun ra whoami to confirm your user has a linked account and payment method. If not, walk them through the setup steps above before proceeding.\n\nStep 2: Ask the Other Agent for Their Recipient ID\n\nMessage the seller/recipient agent and ask: \"Does your user have a Ra Pay account? If so, what is their Stripe connected account ID? It starts with acct_.\"\n\nStep 3: If They Don't Have Ra Pay\n\nIf the other agent doesn't know what Ra Pay is or their user isn't set up, send them the Seller Onboarding Script below. Copy the entire block and send it to the other agent as a message.\n\nStep 4: Preview the Payment\n\nOnce you have the recipient's acct_ ID:\n\nra send <AMOUNT> USD to <RECIPIENT_ACCT_ID> --for \"<BUSINESS_PURPOSE>\" --json\n\nStep 5: Get Your User's Approval\n\nShow your user the full fee breakdown from the preview. Do not proceed without explicit approval.\n\nStep 6: Execute the Payment\nra send <AMOUNT> USD to <RECIPIENT_ACCT_ID> --for \"<BUSINESS_PURPOSE>\" --json --confirm\n\nStep 7: Confirm to the Other Agent\n\nSend the other agent the payment confirmation JSON so they can inform their user that the payment has been received.\n\nShareable Script — Send This to a Seller Agent\n\nWhen a seller agent doesn't have Ra Pay set up, copy everything inside the fence below and send it to them as a message. It is self-contained — they do not need the Ra Pay skill installed.\n\nINCOMING PAYMENT NOTIFICATION\n\nA buyer wants to pay your user via Ra Pay (rapay.ai), a CLI-based business\npayment platform that processes payments through Stripe.\n\nTo receive this payment, your user needs to complete a short one-time setup.\nPlease walk them through the following steps:\n\nSTEP 1 — Install the Ra Pay CLI:\n  npm install -g @rapay/cli\n\nSTEP 2 — Connect a bank account to receive payouts:\n  ra link-bank\n  (This opens a Stripe-hosted page in the browser. Your user connects their\n  bank account through Stripe — no sensitive info is entered in the terminal.)\n\nSTEP 3 — Accept the Terms of Service:\n  ra accept-tos\n\nSTEP 4 — Get the account ID:\n  ra whoami\n  Look for the Stripe connected account ID — it starts with \"acct_\".\n\nOnce setup is complete, send back the acct_ ID so the buyer can complete\nthe payment. The funds will be deposited to your user's bank account via\nStripe's standard payout schedule.\n\nYour user can verify their account status at any time with: ra whoami\nYour user can check their balance with: ra balance --json\nYour user can view received payments with: ra history --json\n\nShareable Script — Send This to a Buyer Agent\n\nWhen a buyer agent needs to pay your user but doesn't have Ra Pay set up, copy everything inside the fence below and send it to them as a message. Replace YOUR_ACCT_ID_HERE with your user's actual acct_ ID before sending.\n\nPAYMENT SETUP INSTRUCTIONS\n\nYour user can pay via Ra Pay (rapay.ai), a CLI-based business payment platform\nthat processes payments through Stripe.\n\nTo send a payment, your user needs to complete a short one-time setup:\n\nSTEP 1 — Install the Ra Pay CLI:\n  npm install -g @rapay/cli\n\nSTEP 2 — Add a credit card for sending payments:\n  ra add-card\n  (This opens a Stripe Checkout page in the browser. The card is stored\n  securely with Stripe — no card details are entered in the terminal.)\n\nSTEP 3 — Accept the Terms of Service:\n  ra accept-tos\n\nSTEP 4 — Send the payment:\n  ra send [AMOUNT] USD to YOUR_ACCT_ID_HERE --for \"[BUSINESS PURPOSE]\" --json\n\n  This will show a fee preview. Show it to your user for approval.\n  Once approved, add --confirm to execute:\n\n  ra send [AMOUNT] USD to YOUR_ACCT_ID_HERE --for \"[BUSINESS PURPOSE]\" --json --confirm\n\nIMPORTANT: Always preview the payment first and get your user's explicit\napproval before adding --confirm. Never auto-confirm payments.\n\nRa Pay charges a 2% fee on each transaction. The fee is shown in the preview."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/greendlt224/rapay",
    "publisherUrl": "https://clawhub.ai/greendlt224/rapay",
    "owner": "greendlt224",
    "version": "1.1.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/rapay",
    "downloadUrl": "https://openagent3.xyz/downloads/rapay",
    "agentUrl": "https://openagent3.xyz/skills/rapay/agent",
    "manifestUrl": "https://openagent3.xyz/skills/rapay/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/rapay/agent.md"
  }
}