Skip to main content
The kibble charge command creates a USDC payment link on Base and returns everything you need to start accepting payments: a shareable URL, a merchant portal link, a deposit wallet address, and an iframe embed snippet. You can run it interactively with prompts or non-interactively with the --yes flag and environment variables.

Interactive flow

Run npx create-kibble with no flags, complete the initial prompts for your business name and email, then select kibble charge from the action menu.
1

Run the CLI

npx create-kibble
2

Enter your business name

The CLI prompts you for your business name. This appears on the payment page your customers see.
3

Enter your email

Enter the email address associated with your Kibble merchant account.
4

Select kibble charge

The action menu appears. Select kibble charge to continue.
? What would you like to do?
❯ kibble charge
  kibble invoice
  kibble yield         (coming soon)
  kibble cards         (coming soon)
  kibble form --type llc  (coming soon)
5

Enter the payment amount

Enter the amount in USDC you want to request (e.g. 250.00).
6

Choose your wallet type

Select how you want to receive funds:
  • Kibble-managed wallet — Kibble provisions a USDC deposit address for you. No existing wallet required.
  • BYO (bring your own) — Use a USDC wallet address on Base that you already control.
If you choose BYO, the CLI prompts you to enter your wallet address.
7

Add an optional product description

Enter a short description of what you’re charging for (e.g. "Design consultation — April"). This is optional and appears on the payment page.
8

Review the output

The CLI creates the payment link, opens it in your default browser, and prints the details to your terminal.

Output

After a successful kibble charge, the CLI prints:
Payment link:     https://pay.kibble.sh/pay/abc12345
Merchant portal:  https://pay.kibble.sh/merchant/abc12345
Wallet:           0xYourDepositAddress
Embed snippet:    <iframe src="https://pay.kibble.sh/pay/abc12345" width="400" height="600" frameborder="0"></iframe>
Use the embed snippet to drop the payment widget directly into your website or app.

Non-interactive mode with —yes

Pass --yes and set environment variables to create a payment link without any prompts. The result is printed as JSON to stdout, making it easy to capture in scripts.
KIBBLE_EMAIL=you@example.com \
KIBBLE_BUSINESS_NAME="Acme SaaS" \
KIBBLE_AMOUNT=250.00 \
KIBBLE_WALLET_TYPE=privy \
npx create-kibble --yes
To use your own wallet instead of a managed one, set KIBBLE_WALLET_TYPE=byo and supply your wallet address:
KIBBLE_EMAIL=you@example.com \
KIBBLE_BUSINESS_NAME="Acme SaaS" \
KIBBLE_AMOUNT=250.00 \
KIBBLE_WALLET_TYPE=byo \
KIBBLE_WALLET=0xYourWalletAddress \
npx create-kibble --yes
The JSON output looks like this:
{
  "slug": "abc12345",
  "payment_link": "https://pay.kibble.sh/pay/abc12345",
  "merchant_portal": "https://pay.kibble.sh/merchant/abc12345",
  "wallet_address": "0xYourDepositAddress",
  "iframe_snippet": "<iframe src=\"https://pay.kibble.sh/pay/abc12345\" width=\"400\" height=\"600\" frameborder=\"0\"></iframe>",
  "js_widget_snippet": "<script src=\"https://pay.kibble.sh/w.js\" data-slug=\"abc12345\"></script>"
}

Wallet options

Wallet typeKIBBLE_WALLET_TYPE valueWhen to use
Kibble-managedprivyYou want Kibble to provision and manage a USDC wallet for you.
Bring your ownbyoYou already have a USDC address on Base and want payments sent directly to it.
A payment link stays open and can receive multiple payments. After a customer pays, the page updates to reflect the payment status. You can share the same link repeatedly or generate a new one for each transaction — both approaches work.

Pointing at a local server

Set KIBBLE_BASE_URL to test against a local or staging API:
KIBBLE_BASE_URL=http://localhost:3000 \
KIBBLE_EMAIL=you@example.com \
KIBBLE_BUSINESS_NAME="Acme SaaS" \
KIBBLE_AMOUNT=50.00 \
KIBBLE_WALLET_TYPE=privy \
npx create-kibble --yes