# Which product do I need? (/start/which-product)



Both live under one base URL, one authentication scheme and one set of conventions — money as strings,
idempotency, cursor pagination, the error envelope, webhook signing — so integrating both never feels
like integrating twice. What differs is which resources you use and which **kind** of key you carry.

## The wallet service [#the-wallet-service]

For a platform that keeps a balance **per user**: an exchange, a marketplace, a game, a broker. Every
customer gets a permanent deposit address on every chain you enable; deposits credit their ledger balance;
you pay out on request.

* Resources: `/v1/customers`, `/v1/wallets`, `/v1/deposits`, `/v1/balances`, `/v1/payouts`
* Key kinds: `wallet` for addresses and reads, `payout` for money out
* Start with the [Quickstart](/start/quickstart)

## Hosted checkout [#hosted-checkout]

For a merchant who sells something and wants to be paid in crypto: an invoice with a price, a deadline and
an address per chain, a hosted page the payer lands on, and `invoice.paid` when the money is final.

* Resources: `/v1/invoices`, `/v1/billing`
* Key kind: `checkout` — the key your storefront carries cannot move money out, whatever scopes it holds
* Create a payment link from the dashboard with [Create and share an invoice](/help-center/invoices),
  or integrate the [Invoices API](/reference/invoices).

<AppPicture name="invoice" alt="The dashboard form for creating a hosted checkout invoice, with an amount, order reference, expiry, and accepted coins." caption="Hosted checkout starts with a payment request. Shown with sample data." />

## Both [#both]

A key's kind fences which routes it reaches, so an integration that does both holds two keys: a `checkout`
key in the storefront and a `wallet` (and, when needed, `payout`) key on the backend. Keys are minted in
the console, where the limit for each kind is displayed, and shown once. [Authentication](/concepts/authentication) has the details.

<Callout type="warn" title="The payout kind is the one to guard">
  Everything that moves money out — payouts, their approvals, the destination allowlist — sits behind the
  `payout` kind. Hold that key on your backend only, pin it to your server's IP addresses, and never let
  it near a browser.
</Callout>
