https://pay.kibble.sh/pay/{slug} — paired with a QR code and a deposit address. When you create one, Kibble generates an 8-character slug, stores the expected amount, and begins monitoring the deposit address for USDC transfers on Base. The payer opens the link, scans the QR code with their crypto wallet, sends USDC, and the status updates automatically.
Creating a payment link
You can create a payment link interactively via the CLI or programmatically via the REST API.- CLI (interactive)
- CLI (non-interactive)
- REST API
Run
npx create-kibble and select kibble charge when prompted. See the Quickstart for the full walkthrough.Request fields
| Field | Type | Required | Description |
|---|---|---|---|
business_name | string | Yes | Shown on the payment page |
email | string | Yes | Your merchant email |
expected_amount | string | Yes | Amount in USDC, up to 2 decimal places (e.g. "49.00") |
wallet_type | string | Yes | privy or byo |
wallet_address | string | If byo | Your USDC address on Base (0x…) |
product_description | string | No | Optional description shown on the payment page |
The merchant portal
Every payment link has a corresponding merchant portal athttps://pay.kibble.sh/merchant/{slug}. The portal shows:
- The current payment status
- The expected amount and any amount received
- The on-chain transaction hash once a transfer is detected
Embedding a payment widget
The API response includes two embed options you can drop directly into a webpage.iframe
JavaScript widget
{slug} with the actual slug returned when you created the link.
Payment statuses
Kibble monitors the deposit address using Alchemy webhooks. When a USDC transfer arrives on Base, the status transitions based on how the received amount compares to the expected amount.pending
pending
The payment link has been created and the deposit address is being monitored. No on-chain transfer has been detected yet. This is the initial status for every new link.
confirmed
confirmed
The received amount exactly matches the expected amount. The payment is complete.
partial
partial
The received amount is less than the expected amount. The link remains open — additional transfers can bring it to
confirmed.excess
excess
The received amount exceeds the expected amount. You can view the overpaid amount in the merchant portal. Kibble does not automatically refund the difference.
How detection works
When you create a payment link, Kibble begins monitoring the deposit address on Base for incoming USDC transfers. When a transfer is detected, Kibble:- Confirms the received token is USDC on Base.
- Compares the transferred amount to the expected amount.
- Updates the payment link status to
confirmed,partial, orexcess.