Skip to main content
This page lists every Circle Mint webhook event topic and shows an example payload for each. Mint webhooks are delivered as Amazon SNS messages on the v1 notification system. To register a webhook endpoint, see Set up a webhook endpoint. If you do not have a Circle Mint account, start with the Getting Started quickstart.

Event types

The table below lists every Circle Mint webhook topic and the resource each notification carries. The subsections that follow describe each topic, document its status values when applicable, and show a single example payload.

wire

Lifecycle notifications for a linked wire bank account. Use these events to track the status of bank-account creation requests submitted through POST /v1/businessAccount/banks/wires.

deposits

Fires when a fiat deposit (mint) settles to your Circle Mint balance. The notification carries the deposit id, the settled amount, the source (the linked wire bank account), and the destination wallet. When the originating wire memo included a customerExternalRef matching the EXT... format (used by the Core API for Institutions), Circle echoes that value on the deposit so you can reconcile the credit to the originating client.

payouts

Fires for fiat redemptions (burns) and stablecoin payouts. The payout resource carries the destination (a wire bank account or an address_book recipient), the gross amount, fees, and any error information. The most important fields to consume:
  • id: Unique payout identifier.
  • destination: Either a wire destination (fiat redemption) or an address_book destination (stablecoin payout).
  • amount: Gross amount of the payout, as a money object.
  • toAmount: Net amount delivered to the destination. Present only on stablecoin payouts.
  • trackingRef: Reference that appears on the bank statement. Present on fiat redemption (burn) payouts.
  • sourceWalletId: Identifier of the wallet funding the payout.
  • fees: Fees deducted from the source wallet, as a money object.
  • networkFees: Onchain network fees. Present only on stablecoin payouts.
  • status: pending, complete, or failed.
  • errorCode: Populated when status is failed. See Stablecoin Payouts errors for the catalog.
  • riskEvaluation: Risk decision and reason, populated for compliance-driven denials.

transfers

Fires on every status transition for an onchain transfer, in either direction (Circle wallet to blockchain address, blockchain address to Circle wallet, or wallet to wallet). You receive one notification per transition, so a transfer that runs to completion produces multiple events. When status is failed, the transfer carries an errorCode; see Transfer entity errors for the catalog.

paymentIntents

Fires on lifecycle changes for a Stablecoin Payins payment intent, including deposit-address assignment, settlement, expiry, refund, and failure. The payload includes the intent’s full state—paymentMethods[] (the assigned deposit addresses), timeline[] (an ordered history of status and context transitions with timestamps), amountPaid, amountRefunded, settlementCurrency, and fees[]. The intent’s lifecycle depends on type:
  • continuous intents stay at active after Circle assigns the deposit address and never advance to complete. To reconcile settled transfers against a continuous intent, listen to the payments topic or call GET /v1/payments with paymentIntentId={id}.
  • transient intents move through createdpendingcomplete, where the latest timeline[] entry carries a context of paid, underpaid, or overpaid. Terminal states are expired, failed, and refunded.
For background on intent modes and the payin flow, see How Stablecoin Payins and Payouts work.

payments

Fires for inbound Stablecoin Payins settlements and for Stablecoin Payouts refunds. Both flows use the same payments resource; the type field discriminates between them: payment for an inbound settlement and refund for an outbound refund.

addressBookRecipients

Fires on lifecycle transitions for a Stablecoin Payouts recipient registered through the Address Book API. Use this topic to learn when a recipient is ready to receive payouts and to handle Travel Rule decisions on counterparties. For Travel Rule requirements and identity schemas that influence these decisions, see Travel rule compliance.

externalEntities

Fires when Circle finishes its compliance review for an external entity onboarded through the Institutional API. The webhook carries the final complianceState decision; walletId is present only when the decision is ACCEPTED. For background on the onboarding flow and how to use a provisioned walletId, see Institutional API and Manage institutional subaccounts.

creditTransfers

Fires when a credit draw changes status. The two Credit API products follow different lifecycles, so the meaningful status values depend on which product the credit line is scoped to. Settlement Advance status values: Line of Credit status values: When a transfer is configured with a Credit Express destination, the disbursement carries an additional onchain delivery status: For background on the credit-line model and the two product lifecycles, see the Credit API concept.

creditFees

Fires when a fee accrues against a credit line. Cadence matches the credit line’s feeCadence: daily lines emit a fee notification every 24 hours and hourly Line of Credit lines emit one every hour. Each notification carries the accrued amount, the credit line it applies to, and the period it covers.

creditRepayments

Fires when Circle matches an incoming fiat wire to a credit line or records a completed crypto repayment. The payload identifies the credit line, the repayment method (fiat or crypto), the matched amount, and the resulting outstanding balance.

approvalWorkflowTransferApproved and approvalWorkflowTransferRejected

Recipient approval workflow events. Some regions require a separate approval step before a transfer can proceed; France and Singapore are two examples. Pending transfers are routed to an approver. The decision is delivered on approvalWorkflowTransferApproved when the proposal is approved or on approvalWorkflowTransferRejected when it is rejected. The payload carries the proposal’s transferStatus, proposalStatus, the originating idempotencyKey, and the transferId of the affected transfer.