Back to guides
Installation·October 3, 2026·Updated October 10, 2026·13 min read

Install Claude Code: installation commands for Windows and macOS, configure an API key without a Pro/Max plan, pay by card or Link

Installing Claude Code requires only one official command. The parts that can be tricky are the following steps: the Node.js version when installing with npm, the terminal and PATH on Windows, configuring an API key without a Pro/Max plan, and how to pay from Vietnam without MoMo, ZaloPay, or VNPay.

To use Claude Code without buying a Pro/Max subscription, do three things: install it using the official native command (one line for each terminal, immediately below), set ANTHROPIC_BASE_URL=https://api.kunavo.com (without /v1) together with ANTHROPIC_AUTH_TOKEN and the four model-pinning variables, then type /status to confirm Claude Code is running with the key. Token charges are deducted from the prepaid balance, topped up from 10 USD with a Visa/Mastercard card or Link; MoMo, ZaloPay, and VNPay are not available. If you install with npm, the machine needs Node.js 22 or later.

Terminal
# macOS, Linux, WSL
curl -fsSL https://claude.ai/install.sh | bash
PowerShell
# Windows PowerShell
irm https://claude.ai/install.ps1 | iex
cmd.exe
:: Windows Command Prompt (CMD)
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

The installation commands and variable names in this article are taken from Claude Code's official documentation, including the installation page and environment variables list, reviewed on October 3, 2026. Anthropic does not have Vietnamese versions of these pages (the /docs/vi/setup URL returned 404 on the same day), so error messages in the article are kept in English to make them easier to search for. Kunavo prices and payment methods were verified on October 10, 2026.

Choose the installation command for the terminal you have open

All installation methods install the same claude program; the difference is who handles updates. The official documentation places the native method under the “Native Install (Recommended)” tab, and it is also the only method that automatically updates to new versions without you having to do anything.

You are usingUse the commandUpdates
macOS, Linux, or WSL terminalinstall.sh (first line above)Automatic, runs in the background
Windows PowerShell, with a prompt like PS C:\Users\TenBan>irm https://claude.ai/install.ps1 | iexAutomatic, runs in the background
Windows CMD, with a prompt like C:\Users\TenBan> (without PS)The line with install.cmdAutomatic, runs in the background
Already familiar with Homebrew or WinGetbrew install --cask claude-code, winget install Anthropic.ClaudeCodeDoes not update automatically by default; upgrade using the package manager itself
Requires npmnpm install -g @anthropic-ai/claude-code, requires Node.js 22+Run again with @latest
# Homebrew (macOS, Linux) – mặc định không tự cập nhật
brew install --cask claude-code

# WinGet (Windows) – mặc định không tự cập nhật
winget install Anthropic.ClaudeCode

The machine must meet the following requirements (according to the installation page, read on October 3, 2026):

  • Operating system: macOS 13.0 or later; Windows 10 version 1809 or later or Windows Server 2019 or later; Ubuntu 20.04+, Debian 10+, or Alpine Linux 3.19+.
  • At least 4 GB RAM, with an x64 or ARM64 CPU. 32-bit Windows is not supported.
  • The shell must be Bash, Zsh, PowerShell, or CMD, and an Internet connection is required.
  • Node.js is needed only when installing through npm, and must be version 22 or later.

After installation, do not type claude immediately in the old window: that window has not received the new PATH yet. Open another terminal and run:

claude --version   # in ra số phiên bản, kèm chữ (Claude Code)
claude doctor      # chẩn đoán cài đặt và file cấu hình, không mở phiên làm việc

If claude --version prints a version number, installation is complete; all later errors are configuration issues. claude doctor is useful when you are unsure where the problem is, because it checks both the installation and the settings files without opening a work session.

Windows: five common stumbling blocks

  1. Wrong command line pasted. PowerShell will report The token '&&' is not a valid statement separator when given the CMD line; CMD will report 'irm' is not recognized as an internal or external command when given the PowerShell line. Look at the prompt: if it contains PS, use the irm line; otherwise, use the install.cmd line.
  2. Opened “Windows PowerShell (x86)” by mistake. This entry in the Start menu is a 32-bit process, so even on a 64-bit machine it reports Claude Code does not support 32-bit Windows. Choose the entry without (x86).
  3. Running as Administrator is unnecessary. The documentation does not require it, and the native version installs in the user's folder: %USERPROFILE%\.local\bin\claude.exe.
  4. Typing claude reports “not recognized”. The folder above has not been added to PATH. Try a new terminal first; if it still fails, use the PowerShell snippet below to check and add the path. On macOS/Linux, the equivalent error is command not found: claude, and the program is located at ~/.local/bin/claude.
  5. npm reports npm.ps1 cannot be loaded because running scripts is disabled on this system. PowerShell's execution policy is blocking the .ps1 script created by npm. The documentation gives three ways out: allow the current user to run local scripts with the Set-ExecutionPolicy command below, call npm.cmd and claude.cmd instead of the .ps1 version, or skip npm and use the native command.
PowerShell
# 1. Kiểm tra thư mục cài đặt đã có trong PATH chưa
$env:PATH -split ';' | Select-String '\.local\\bin'

# 2. Không có kết quả nào? Thêm vào PATH của người dùng, rồi đóng và mở lại terminal
$currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User')
[Environment]::SetEnvironmentVariable('PATH', "$currentPath;$env:USERPROFILE\.local\bin", 'User')

# 3. Trong terminal mới
claude --version
PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Native or WSL? If your project is on Windows, running natively is sufficient. In that case, Git for Windows is optional: with it, Claude Code runs commands through Git Bash; without it, Claude Code uses PowerShell. If Git is installed but Claude Code cannot find Git Bash, set CLAUDE_CODE_GIT_BASH_PATH in the env block of ~/.claude/settings.json, pointing to bash.exe (the documentation gives C:\Program Files\Git\bin\bash.exe as an example). Choose WSL 2 when you need Linux tools or want commands to run in a sandbox, because the sandbox is only available on WSL 2; neither native Windows nor WSL 1 supports it. WSL 1 is only an option if your machine cannot enable WSL 2. If you choose WSL, install it with the install.sh command and run claude entirely in the WSL terminal.

Installing through npm: requirements and three notes

npm makes sense if you already manage command-line tools with Node, or if your company network only allows package downloads through the npm registry. The requirement is Node.js 22 or later; the Node 18 requirement mentioned in many older articles is no longer correct. Notably, an older Node version will not prevent installation: npm only prints a EBADENGINE warning, because the program that actually runs is a native executable downloaded by the npm package and does not depend on Node. If your machine does not have Node, get version 22 or later from nodejs.org.

Terminal
node -v                                    # cần v22 trở lên
npm install -g @anthropic-ai/claude-code   # không dùng sudo

# nâng cấp bằng @latest, không dùng npm update -g
npm install -g @anthropic-ai/claude-code@latest
  • Do not use sudo npm install -g: the documentation warns that this causes permission errors and is a security risk.
  • Upgrade with npm install -g @anthropic-ai/claude-code@latest; npm update -g is not the recommended method.
  • The native program comes from an optional dependency (the @anthropic-ai/claude-code-* package corresponding to your platform). The --omit=optional flag, the optional=false line in .npmrc, or --ignore-scripts will omit it, and on macOS/Linux you will get claude native binary not installed.

Is a VPN required? Errors while downloading the installation script

No. Vietnam is on the list of countries supported by Anthropic for both Claude.ai and the API (checked on October 3, 2026). VPNs are more often the cause of problems: according to the installation troubleshooting page (accessed on October 3, 2026), when the installation address returns App unavailable in region, Claude Code is unavailable in the location where your connection appears to be. If you see this message in Vietnam, turn off any VPN or proxy set to another country and try again.

The two remaining errors have the same root cause: syntax error near unexpected token '<' or curl: (22) The requested URL returned error: 403 means that instead of the script, you received an HTML page or an error code. A corporate network with a proxy or firewall blocking file downloads is the first suspect. Do not immediately switch to Homebrew, WinGet, or npm: the documentation recommends checking the network connection first, because the alternative installation methods also download from the same server. Try another network or ask IT to unblock it.

API key configuration: run Claude Code without a Pro/Max subscription

Claude Code authenticates in one of two ways. The table below provides a quick comparison; the rest of the article follows the right-hand column.

Sign in to a Claude accountKunavo API key
RequirementsPro, Max, Team, Enterprise plan, or Console account. The free Claude.ai plan does not include Claude Code.A sk-kn-… key set in an environment variable. No subscription, no login.
PricingMonthly: Pro is USD 20/month (USD 17/month with annual billing, or USD 200 charged once), and Max starts at USD 100/month; taxes are not included (claude.com/pricing, accessed on October 3, 2026).Based on the tokens actually used, deducted from the prepaid balance topped up from 10 USD. No monthly fee, balance never expires, failed requests are not charged.
Pay withPurchases on Anthropic's website can be made only with a credit or debit card (Claude billing FAQs, accessed on October 3, 2026).Visa, Mastercard, or Link; Apple Pay or Google Pay if the device supports it. MoMo, ZaloPay, and VNPay are not available.
What is missing—Remote Control and voice input. No VAT invoices.

Pointing Claude Code to a service other than Anthropic is not a hack: the official documentation describes ANTHROPIC_BASE_URL as the variable used to override the API endpoint when going through a proxy or gateway. Kunavo uses the Anthropic Messages API protocol exactly, so you use Claude Code as-is, with no plugin or patch. Exactly six variables are required:

VariableValuePurpose and failure mode
ANTHROPIC_BASE_URLhttps://api.kunavo.comDomain name only. Claude Code appends /v1/messages automatically; adding /v1 makes the request /v1/v1/messages and returns 404.
ANTHROPIC_AUTH_TOKENKey sk-kn-…Sent in the Authorization: Bearer header, effective immediately, with no confirmation step.
ANTHROPIC_MODELclaude-sonnet-5Primary model (Claude Sonnet 5). The name must match Kunavo's list character for character; old-style names with date suffixes are not automatically converted.
ANTHROPIC_DEFAULT_OPUS_MODELclaude-opus-5-5Pin the opus alias (and opusplan while in plan mode) to Claude Opus 5.5, so it does not move to the latest Opus version. Claude Code v2.1.280 or later is required; on older versions, run claude update.
ANTHROPIC_DEFAULT_SONNET_MODELclaude-sonnet-5The sonnet alias points to Sonnet 5.5 by default, a model Kunavo does not provide. Without pinning, /model sonnet, the execution phase of opusplan, and subagents set to model: sonnet all return 404.
ANTHROPIC_DEFAULT_HAIKU_MODELclaude-haiku-4-5The haiku alias and Claude Code's background tasks all use this model. If it is not pinned, this alias requests an ID that Kunavo does not offer (Haiku 5.5 from v2.1.293 onward), so /model haiku and subagents set to model: haiku both receive 404s.

Where to set the variables

The simplest way to use it long term is the env block in the user's settings file, ~/.claude/settings.json (Windows: %USERPROFILE%\.claude\settings.json). This file applies to every project; if it already contains content, only add the env block:

~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.kunavo.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-kn-...",
    "ANTHROPIC_MODEL": "claude-sonnet-5",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5-5",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5"
  }
}

If you prefer to keep it in the shell, add it to ~/.zshrc or ~/.bashrc. On Windows, the second snippet below (the $env: lines) is suitable for a quick test, but the variables disappear as soon as you close the PowerShell window.

~/.zshrc
export ANTHROPIC_BASE_URL=https://api.kunavo.com   # chỉ tên miền, không thêm /v1
export ANTHROPIC_AUTH_TOKEN=sk-kn-...
export ANTHROPIC_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5-5
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5
PowerShell
# Chỉ có hiệu lực trong cửa sổ PowerShell này, đóng cửa sổ là mất
$env:ANTHROPIC_BASE_URL = "https://api.kunavo.com"
$env:ANTHROPIC_AUTH_TOKEN = "sk-kn-..."
$env:ANTHROPIC_MODEL = "claude-sonnet-5"
$env:ANTHROPIC_DEFAULT_OPUS_MODEL = "claude-opus-5-5"
$env:ANTHROPIC_DEFAULT_SONNET_MODEL = "claude-sonnet-5"
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL = "claude-haiku-4-5"
claude

Three things to know before you run into trouble:

  • Do not put a key in the project's .claude/settings.json. The gateway connection documentation notes that this file is committed, so anyone who clones the repository can access it.
  • Settings files take precedence over the shell. If a variable exists in both places, the value in the env block of the settings file is used. If you change it in the shell and nothing changes, check the settings file first.
  • The first run requires a user-level key. In interactive mode, the env block in .claude/settings.json or .claude/settings.local.json at the project level only takes effect after the initial wizard and the question asking whether you trust the folder. If the key is only there, the login screen still appears at first launch.

ANTHROPIC_AUTH_TOKEN or ANTHROPIC_API_KEY, and the “403 error” issue

Kunavo reads the key from both Authorization: Bearer and x-api-key, so either variable can connect. The difference is on Claude Code's side. According to the environment variables documentation (accessed on October 3, 2026), ANTHROPIC_AUTH_TOKEN goes in the Authorization header with the Bearer prefix and takes effect immediately. ANTHROPIC_API_KEY goes in the X-Api-Key header, and in interactive mode Claude Code asks once whether you want to use this key instead of your subscription. If you answer “no,” the key is ignored and Claude Code will not ask again; to enable it, go to /config, then Use custom API key. This article uses ANTHROPIC_AUTH_TOKEN only to skip that prompt.

Some Vietnamese guides say that ANTHROPIC_API_KEY makes Claude Code ignore ANTHROPIC_BASE_URL, call api.anthropic.com directly, and receive a 403. Neither the environment variables documentation nor the gateway connection documentation (accessed on October 3, 2026) says this: the two variables are two ways to pass the key to the same gateway in ANTHROPIC_BASE_URL. If you actually get a 403 after changing the variable, check the base URL and key instead of switching back and forth between variable names.

Why pin models, and how much each model costs

Claude Code aliases do not stay fixed. According to the model configuration documentation (accessed on October 3, 2026), for API users the default model and the opus alias currently point to Opus 5.5, while the sonnet alias points to Sonnet 5.5; the documentation also says aliases “are updated over time” and recommends using full names or the ANTHROPIC_DEFAULT_*_MODEL variables when you need to pin a model. As of October 3, 2026, Kunavo has Opus 5.5 but not Sonnet 5.5. If you skip pinning, the default session runs Opus 5.5, which costs more than Claude Sonnet 5; /model sonnet, the execution phase of opusplan, and subagents set to model: sonnet return 404; and the next time the opus alias switches to a new Opus version, that version may not yet be available on Kunavo. That is why the configuration above pins the sonnet alias to claude-sonnet-5 with ANTHROPIC_DEFAULT_SONNET_MODEL, and pins the opus alias to Opus 5.5 (claude-opus-5-5). Opus 5.5 requires Claude Code v2.1.280 or later; on an earlier version, run claude update.

Kunavo prices, calculated per million tokens (input / output): Claude Sonnet 5 1.40 USD / 7.00 USD (Anthropic pricing: 2.00 USD / 10.00 USD); Claude Opus 5.5 2.80 USD / 14.00 USD; Claude Haiku 4.5 0.70 USD / 3.50 USD.

Check with /status

When ANTHROPIC_AUTH_TOKEN has been read, the claude command goes straight into the work session, with no login screen (according to the gateway connection documentation, read on October 3, 2026); the first run still has a few setup steps, such as the folder trust prompt. If you see the login screen, the key has not reached the right place. In the session, type /status and look for:

  • Anthropic base URL: https://api.kunavo.com. This line appears only when a gateway address is present; its absence means ANTHROPIC_BASE_URL did not reach the session.
  • Auth token: ANTHROPIC_AUTH_TOKEN. If this shows Login method together with a claude.ai account, the session is still using the saved login.

To make sure the key and address are correct before opening Claude Code, send a test request asking for exactly 1 output token (this costs a very small amount from the balance). The command reads the variable from the current shell, so if the key is only in the settings file, export it in this terminal first. A result beginning with {"id":"msg_ is good; 401 means the key was rejected.

Terminal
curl -sS -w '\n%{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-5", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'

The PowerShell version of the same test; on success, the id field in the result begins with msg_:

PowerShell
Invoke-RestMethod -Method Post -Uri "$env:ANTHROPIC_BASE_URL/v1/messages" `
  -Headers @{ "Authorization" = "Bearer $env:ANTHROPIC_AUTH_TOKEN"; "anthropic-version" = "2023-06-01" } `
  -ContentType "application/json" `
  -Body '{"model": "claude-sonnet-5", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'

What you lose by using an API key

  • Remote Control and voice input require a claude.ai identity, so they do not run when ANTHROPIC_AUTH_TOKEN is active. Remote Control is also disabled when ANTHROPIC_BASE_URL points to a server other than api.anthropic.com.
  • /fast reports Fast mode has been disabled by your organization: according to the gateway connection documentation, the fast mode check requires a claude.ai login or an Anthropic API key, so with a bearer token Claude Code treats it as disabled and does not query the server.
  • MCP tool search is disabled by default when the base URL is not Anthropic's.
  • The figures in /context are estimates: Kunavo does not have a /v1/messages/count_tokens endpoint, and according to the gateway protocol documentation (accessed on October 3, 2026), when this endpoint is unavailable Claude Code estimates token counts based on character counts.

Integration details are in the Claude Code integration documentation (in English); the corresponding English article is Install Claude Code.

Adding funds from Vietnam: cards or Link, no local e-wallets

To be direct: Kunavo does not accept MoMo, ZaloPay, VNPay, or bank transfers. Domestic ATM cards that only use the Napas network also cannot be used because they are not Visa or Mastercard cards. Kunavo's Stripe checkout page offers the following options for buyers in Vietnam:

  • Visa or Mastercard cards, including international credit or debit cards.
  • Link, Stripe's wallet, saves your payment method to make future payments faster (Link documentation, accessed on October 3, 2026).
  • Apple Pay or Google Pay appears only on devices and in browsers where a wallet is set up, since payments are made using a card stored in the wallet. Apple Pay has been available in Vietnam since 08/08/2023 and can be used for online purchases (Apple Newsroom Vietnam, accessed on October 3, 2026).

The same applies to Anthropic: Claude subscriptions purchased on the website accept only credit or debit cards (Claude billing FAQs, accessed on October 3, 2026), so Vietnamese digital wallets cannot be used to pay there directly. Subscriptions purchased through the iOS or Android app use the payment method for the App Store or Google Play. The difference is that money added to Kunavo becomes an API balance, and Claude Code deducts the cost per token after you configure a key as described above.

Paying in VND or USD

Kunavo lists prices in USD. Because Vietnam is among the markets covered by Stripe Adaptive Pricing (accessed on October 3, 2026), checkout may show an amount converted to VND, and the exact amount is always displayed before you confirm. Stripe's exchange rate includes a 2–4% conversion fee, paid by the buyer. Choosing to pay in USD avoids this fee, but your card issuer may apply its own exchange rate and fees.

Paying in VND is not necessarily cheaper: some banks charge a fee when a card pays in VND to a merchant registered abroad. For example, Techcombank charges a “domestic-currency transaction fee abroad” of 1.1% of the transaction amount (including VAT) for Visa debit cards, effective from 13/08/2023 (Techcombank FAQs, accessed on October 3, 2026). This is only one bank's example, and Kunavo has not verified whether the bank classifies Kunavo transactions this way. Check your card's fee schedule before choosing VND or USD.

A declined card is usually caused by online or international payments not being enabled in the banking app. Enable them and try again, or switch to Link or Apple Pay/Google Pay with a card supported by that wallet.

From registration to getting a key

  1. Sign up for Kunavo with an email address or Google account; this step does not ask for a card.
  2. Open Billing and select a top-up amount (minimum 10 USD). Larger amounts include an additional: top up 100 USD to receive 110 USD in your balance; top up 1.000 USD to receive 1.200 USD in your balance; top up 5.000 USD to receive 6.250 USD in your balance.
  3. On the Stripe page, choose a card, Link, or a wallet available on your device, review the amount, and confirm.
  4. Go to API Keys and create a sk-kn-… key. The key is shown only once, so copy it into ANTHROPIC_AUTH_TOKEN immediately.

To automatically top up when the balance is low, you must use a saved card or Link. Balances do not expire, and failed requests are not charged. Kunavo does not issue VAT invoices, including electronic invoices required under Vietnamese regulations; view your top-up history in Billing. This balance can only be used for Kunavo's API; it cannot pay for Claude Pro, Claude Max, or ChatGPT Plus.

How much does a coding session cost?

Each time, Claude Code sends the entire conversation context back, so the cost depends heavily on caching: repeated context is charged at the much lower cache-read price. The following table is a paper calculation based on the stated assumptions, not an actual measurement or a cap:

  • each request has 40,000 input tokens: 36,000 tokens (90%) read from cache and 4,000 tokens written to cache;
  • each request has 1,000 output tokens;
  • a session has 50 requests, excluding background Claude Haiku 4.5 runs;
  • with Claude Sonnet 5 on Kunavo, cache reads use 10% times the input price and cache writes use 1.25 times the input price; each model in the table uses its own rate.
ModelOne request50 requests50 requests, with no cache hits
Claude Sonnet 50.019 USD0.95 USD3.15 USD
Claude Opus 5.50.033 USD1.65 USD6.30 USD

The final column shows how important caching is. Long context, long answers, or forgetting /clear between different tasks all increase the figure. A subscription-versus-API comparison and monthly estimates are available in How much does Claude Code cost?; see the Claude API pricing table or pricing page for per-model prices; to enter your own figures, use the Claude token cost calculator (in English).

Troubleshooting by message

WhenWhat you seeResolution
InstallationThe token '&&' is not a valid statement separatorYou pasted a CMD command into PowerShell. Use irm … | iex.
Installation'irm' is not recognized as an internal or external commandYou pasted a PowerShell command into CMD. Use the install.cmd command.
Installationsyntax error near unexpected token '<', 403, App unavailable in regionYou receive an HTML page instead of the script. Disable a VPN/proxy in another country and try a different network before changing the installation method (the other methods download from the same server).
InstallationClaude Code does not support 32-bit WindowsYou have PowerShell (x86) open. Open regular “Windows PowerShell”.
Installation (npm)EBADENGINE warningNode.js is below 22. Installation still completes, but upgrading Node is recommended.
Installation (npm)claude native binary not installedAn optional dependency is missing because of --omit=optional, optional=false, or --ignore-scripts. Remove that setting and reinstall.
Installation (npm)npm.ps1 cannot be loadedThe execution policy is blocking the script. Run Set-ExecutionPolicy above, use npm.cmd, or switch to the native command.
After installationcommand not found: claude, 'claude' is not recognizedThe installation directory is not yet in PATH. Open a new terminal; on Windows, run the PowerShell snippet to add it to PATH.
ConfigurationThe login screen still appearsThe key has not been read. Set it in the shell or the user's ~/.claude/settings.json, not just in the project configuration; open a new terminal.
Configuration401The key was rejected: it was copied incompletely, has extra spaces, was deleted in /app/keys, or is in the wrong variable.
Configuration404The base URL has an extra /v1, or the model is unavailable on Kunavo (usually the unpinned sonnet alias, which currently points to Sonnet 5.5).
Adding fundsCard declinedEnable online and international payments in the banking app; cards that only support Napas cannot be used. Or try Link, Apple Pay, or Google Pay.

Before adding funds

  • Only Visa/Mastercard cards, Link, and card-based wallets are supported; not MoMo, ZaloPay, VNPay, or bank transfers.
  • Automatic top-ups work only with a saved card or Link. Kunavo does not issue VAT invoices.
  • This is a token-based pay-as-you-go API, not a Claude Pro/Max plan: Remote Control and voice input are unavailable, /fast is reported as disabled, and MCP tool search is disabled by default.
  • As of October 3, 2026, Kunavo does not have Sonnet 5.5, so the unpinned sonnet alias will return 404.
  • Claude Code's documentation and Kunavo's integration documentation are currently available only in English.

Frequently asked questions

Is Claude Code free? What does “Claude Code does not require a subscription” mean?

Downloading and installing Claude Code is free, but for it to respond you need one of two things: sign in with a paid Claude plan (Pro, Max, Team, Enterprise) or a Console account, or use an API key. The free Claude.ai plan does not include Claude Code. “No subscription required” means the second option: set ANTHROPIC_BASE_URL=https://api.kunavo.com and ANTHROPIC_AUTH_TOKEN, and Claude Code skips the login step and charges for the tokens actually used from your prepaid Kunavo balance, with a minimum of 10 USD and no monthly fee.

What is the Claude Code installation command on Windows? Do I need to install WSL or run it as Administrator?

Open PowerShell (the prompt starts with PS) and run irm https://claude.ai/install.ps1 | iex; if you are in CMD, use curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd. Administrator privileges, WSL, and Git are not required. If Git for Windows is installed, Claude Code runs commands through Git Bash; otherwise, through PowerShell. WSL 2 is worth installing only when you need Linux tools or want commands to run in a sandbox. Be sure to open “Windows PowerShell”, not the entry containing (x86), because Claude Code does not run on 32-bit Windows.

Which Node.js version is required to install Claude Code with npm?

Node.js 22 or later, according to the official installation documentation read on October 3, 2026. Many older articles still say Node 18; that figure is outdated. An older Node version only causes npm to print an EBADENGINE warning; installation still completes because the npm package actually downloads a native program that runs without Node. The installation command is npm install -g @anthropic-ai/claude-code (without sudo); to upgrade to the latest version, run it again with @latest instead of using npm update -g. If you have no specific reason to use npm, the native command is simpler.

Where do I enter the API key for Claude Code? Should ANTHROPIC_BASE_URL include /v1?

The most durable place is the env block in the user's ~/.claude/settings.json file (Windows: %USERPROFILE%\.claude\settings.json), which applies to every project; you can also export it in ~/.zshrc, ~/.bashrc, or PowerShell's $PROFILE. The base URL is only https://api.kunavo.com, without /v1, because Claude Code adds /v1/messages automatically; an extra /v1 becomes /v1/v1/messages and returns 404. Do not put the key in the project's .claude/settings.json: that file is in the repository and is included every time it is cloned.

An article says using ANTHROPIC_API_KEY results in 403. Is that true?

That is not correct according to the official documentation. Both ANTHROPIC_API_KEY and ANTHROPIC_AUTH_TOKEN are sent to the address in ANTHROPIC_BASE_URL; they differ in the header (X-Api-Key versus Authorization: Bearer) and in that ANTHROPIC_API_KEY must be approved by you once in interactive mode. Kunavo reads the key from both headers. This article recommends ANTHROPIC_AUTH_TOKEN only because it works immediately. If you accidentally click reject in that prompt, the key is ignored without asking again; go to /config and enable Use custom API key.

Which model does Claude Code run if ANTHROPIC_MODEL is not set?

It runs by alias, and aliases gradually change over time. The model configuration documentation (read on October 3, 2026) says that for API users, the default and the opus alias are currently Opus 5.5, while the sonnet alias is Sonnet 5.5. Kunavo has Opus 5.5 but not Sonnet 5.5, so an unpinned session runs Opus 5.5 at a higher price of Claude Sonnet 5, while /model sonnet, the execution phase of opusplan, and subagents with model: sonnet all return 404. Pin ANTHROPIC_MODEL=claude-sonnet-5, ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5-5, ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5, and ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5 so you know which model each turn is being charged for. Pinning the opus alias to Opus 5.5 requires Claude Code v2.1.280 or later; on older versions, run claude update.

What should /status show to confirm that it is running with an API key?

Two lines: “Anthropic base URL” is https://api.kunavo.com, and “Auth token” says ANTHROPIC_AUTH_TOKEN. If it instead shows “Login method” with a claude.ai account, the session is still using the previous login; log out, open a new terminal, and check where the variable was set. You can test the key before opening Claude Code with a curl command sent to /v1/messages with max_tokens set to 1: a JSON response beginning with {"id":"msg_ is good; 401 means the key was rejected.

Do I need a VPN to install or use Claude Code in Vietnam?

No. Vietnam is on Anthropic's list of supported countries for both Claude.ai and the API (checked on October 3, 2026). Conversely, if a VPN routes the connection through an unsupported country, the installation address may return an “App unavailable in region” page instead of the script. If you encounter that error while in Vietnam, turn off the VPN or proxy and run the installation command again.

Can I top up with MoMo, ZaloPay, or VNPay? Are VAT invoices available?

Neither is available. Kunavo's Stripe payment page lets buyers in Vietnam choose Visa, Mastercard, or Link, and Apple Pay or Google Pay if the device already has it set up; MoMo, ZaloPay, VNPay, and bank transfers are not available. The amount may be shown in VND, in which case Stripe's exchange rate includes a 2–4% conversion fee paid by the buyer; if you choose to pay in USD, there is no such fee, but your bank may charge its own exchange rate and fees. The minimum top-up is 10 USD, the balance does not expire, and automatic top-up works only with a saved card or Link. Kunavo does not issue VAT invoices, including electronic invoices.