Skip to main content
Circle uses webhooks to notify your application when events occur. Because many operations across Circle products complete asynchronously, your application doesn’t block on the result of an API call. Instead, Circle sends an HTTP POST request to an endpoint you configure when the state of a resource changes, so your application can react to the event.

Notification API versions

Circle offers two notification systems. Which one you integrate with depends on the product you’re using.
VersionDeliveryProducts
v2Direct HTTPS POST from CircleCircle Wallets, Circle Contracts, CPN payments, Gateway, StableFX
v1Amazon SNS publishes to your endpointCircle Mint, Digital Asset Accounts, CPN Managed Payments
The two versions differ in delivery transport, subscription registration, envelope shape, and signature verification. See Set up a webhook endpoint for the setup flow that matches your product.

Event model

Each webhook notification is an HTTP POST request to a subscriber endpoint you configure. The envelope shape depends on the notification API version.
Used by Circle Wallets, Circle Contracts, CPN payments, Gateway, and StableFX. Each notification includes:
FieldTypeDescription
subscriptionIdstring (UUIDv4)Identifies the subscription that produced the notification. Use it to route events to the correct handler.
notificationIdstring (UUIDv4)Uniquely identifies the notification. The same ID is reused if Circle retries delivery, so use it to deduplicate.
notificationTypestringThe event type (for example, transactions.inbound, cpn.payment.completed).
notificationobjectThe resource that changed, including its current state. The shape matches the corresponding API endpoint’s response object.
timestampstringISO 8601 timestamp of the event.
versionnumberSchema version. Always 2.
You subscribe to the events your application cares about. When a corresponding state change occurs in Circle’s systems, Circle sends a notification to your endpoint.

Delivery and idempotency

Circle delivers webhook notifications at least once. If your endpoint does not respond with a success status, or if the request fails, Circle retries delivery. The same notification can be sent more than once. Your endpoint must be idempotent: processing the same notification more than once must not cause incorrect state in your application. Deduplicate on the Notification ID (v2) or MessageId (v1) before applying side effects.
To inspect delivery attempts, view payloads, or resend a notification, view Webhook Logs in the Circle Console (Wallets, Contracts) or CPN Console (CPN).