Skip to main content
When you create a payment link, Kibble generates a hosted checkout page at https://pay.kibble.sh/pay/{slug}. You share this URL with your payer — they open it, scan a QR code or copy the deposit address, and send USDC. No account required on their end.
Payers do not need a Kibble account. They can send USDC from any wallet that supports Base.

What the checkout page shows

The checkout page displays everything a payer needs to complete a payment:
  • QR code — encodes the deposit address for easy scanning from a mobile wallet
  • Deposit address — the raw 0x... address on Base, copyable for manual entry
  • Expected amount — the USDC amount you set when creating the link
  • Business name — pulled from the business_name field in your request
  • Product description — shown when you include product_description in your request

Real-time status polling

The checkout page polls the payment status every few seconds. Once Kibble detects a USDC transfer to the deposit address on Base, the page updates automatically — no manual refresh needed. You can also check the status programmatically at any time:
cURL
curl --request GET \
  --url https://pay.kibble.sh/api/payments/status/abc12345
Response
{
  "status": "confirmed",
  "received_amount": "49.00",
  "expected_amount": "49.00"
}

Final payment states

Once Kibble detects an on-chain transfer, the payment moves to one of four final states:
StatusWhat it means
confirmedThe exact expected amount was received. The payment is complete.
partialLess than the expected amount was received. The payer can send an additional transfer to the same deposit address to top up.
excessMore than the expected amount was received. This is noted in your merchant portal for reconciliation.
errorSomething went wrong processing the payment. Check your merchant portal for details.

Getting the checkout URL

The payment_link field in the POST /api/links response contains the full checkout URL:
{
  "slug": "abc12345",
  "payment_link": "https://pay.kibble.sh/pay/abc12345",
  "merchant_portal": "https://pay.kibble.sh/merchant/abc12345"
}
Share payment_link directly with your payer, or use it as the src when embedding the checkout on your website.

Merchant portal

Your merchant_portal URL (also in the POST /api/links response) gives you a view of all payment links and their statuses at https://pay.kibble.sh/merchant/{slug}. Sign in with the email address you used when creating the payment link to view all incoming payments associated with your account.