The alternative Quickstart: Crypto
Deposits walkthrough covers a
transient payment intent instead (amount and time window set on create). Use
that guide when you want a one-time, expiring checkout-style intent.
Prerequisites
Before you start, ensure you have:- Aligned with Circle on your Managed Payments onboarding model (Direct or Intermediary).
- Completed Managed Payments onboarding with Circle and obtained API
credentials. The cURL examples use the sandbox host
api-sandbox.circle.com. - Roles that allow creating and reading payment intents and payments in your setup. Circle assigns roles during onboarding.
- Subaccounts or any structure your setup requires so each intent ties to the right merchant or segment. See Managed Payments and the Digital Asset Accounts API if you create accounts first.
- (Optional) A webhook receiver or queue to handle payment intent and payment events. See Set up a webhook endpoint.
- (Optional) For an end-to-end test, a payer wallet with USDC and native gas on the chain you set on the intent (for example Sepolia ETH when the intent uses an Ethereum test chain).
Sequence diagram
Continuous payins use settlement currency and chain on create; you may seeactive instead of pending when the address is ready.
Steps
- Set up payment intent to pay with stablecoin
- Acquire blockchain address customer will pay to
- Customer pays
- Receive payment
1. Pay with stablecoin
When the customer confirms they want to pay with USDC on Ethereum, send a request to create a payment intent. In a continuous intent, you specify settlement currency and chain. No fixed charge amount is set on create. The required fields differ by Circle entity. Select the tab for the Circle entity that books your payins.- Circle LLC (US)
- Circle Singapore (CIRCLE_SG)
Create a payment intent:
Response
Webhook notification
2. Acquire blockchain address customer will pay to
For security reasons, the API does not return the deposit blockchain address in the create response. To retrieve the blockchain deposit address, you have two options:- Subscribe to webhook notifications
- Poll Circle APIs
Option 1: Webhook notification
To receive webhook notifications, follow the steps in Set up a webhook endpoint. After you subscribe, you receive updates when the payment intent changes. WhenpaymentMethods.address is set, a notification arrives with a new timeline
entry and status: active.
Payment intent webhook notification
Option 2: Poll payment intent endpoint
If you prefer to poll get a payment intent, sendGET requests until you receive paymentMethods.address.
Retrieve payment intent:
Response
3. Enable customer payment
SharepaymentMethods.address with the customer so they can send funds on the
correct chain.
A continuous payment intent doesn’t define a fixed amount on create; you
communicate any specific charge (for example an invoice total) from your own
checkout or UI.
- as plain text the customer can cut and paste; or
- as a QR code the customer can scan using an app.
4. Receive payment from Circle
Once Circle detects the onchain payment, it creates a Payment resource linked to the original Payment Intent and updates its status. Your firm then receives payment through the method specified.Option 1: Webhook notifications
Payment intent webhook notification
Payment webhook notification
For Circle Singapore (
CIRCLE_SG) merchants, a Payment in status: "pending" may include a statusReason field indicating a compliance hold.
For example, compliance_review means Circle is awaiting Personally
Identifiable Information (PII) before releasing funds. For the full list of
values, see Stablecoin payin
states.Option 2: Retrieve payment intent and payment
Retrieve a payment intent:Response
Response
For blockchains that require a ‘memo’ or ‘address tag’ (XLM, HBAR, etc.), the
optional
addressTag field will be present in the depositAddress object.