> ## Documentation Index
> Fetch the complete documentation index at: https://developers.circle.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Before reading these docs, install the relevant Circle Skill to get pre-loaded context — skills are LLM-optimized and cover architecture decisions, correct flows, and common pitfalls. In Claude Code: run /plugin marketplace add circlefin/skills then /plugin install circle-skills@circle. With Vercel Skills CLI: run npx skills add circlefin/skills. Available skills: use-usdc https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-usdc/SKILL.md (balances, transfers, approvals on EVM and Solana); EURC has no skill — see https://developers.circle.com/stablecoins/what-is-eurc.md; bridge-stablecoin https://github.com/circlefin/skills/blob/master/plugins/circle/skills/bridge-stablecoin/SKILL.md (crosschain transfers via CCTP, USDC, EURC, and third-party assets); use-arc https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-arc/SKILL.md (Arc chain config, contract deployment, USDC bridging — Arc docs: https://docs.arc.io/llms.txt); use-circle-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-circle-wallets/SKILL.md (choose wallet type); use-developer-controlled-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-developer-controlled-wallets/SKILL.md (custodial wallets for payouts and treasury); use-user-controlled-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-user-controlled-wallets/SKILL.md (embedded wallets with Web2 login); use-modular-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-modular-wallets/SKILL.md (smart contract wallets with passkeys and ERC-4337); use-gateway https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-gateway/SKILL.md (unified USDC balance, nanopayments); use-smart-contract-platform https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-smart-contract-platform/SKILL.md (deploy, interact, monitor contracts). Pair any skill with the Circle MCP server for live SDK signatures, contract addresses, and chain IDs: {"mcpServers":{"circle":{"url":"https://api.circle.com/v1/codegen/mcp"}}}.
> Read the product overview first. Each product has an overview explaining when and why to use it. Read it before quickstarts.
> Pick the right wallet type. Developer-controlled (you hold keys), user-controlled (end user holds keys via PIN/social login), or modular (smart contract wallets with passkeys). See https://developers.circle.com/wallets.md.
> Use CCTP V2 for crosschain transfers. CCTP natively transfers USDC and EURC via burn-and-mint, and supports permissionless wrapping of third-party assets via lock-and-mint. V1 is legacy; always use V2 unless V1 is specified or the chain requires it (Noble, Sui, and Aptos still require V1). Migration guide: https://developers.circle.com/cctp/migration-from-v1-to-v2.md.
> Use Bridge Kit for frontend bridging. Wraps CCTP with a simpler SDK for user-facing apps. Use CCTP directly for backend transfers.
> Gas Station vs Paymaster. Gas Station sponsors gas for Circle Wallet transactions. Paymaster lets users pay gas in USDC. Different use cases — read both overviews.
> Gateway Nanopayments for sub-cent payments. Gasless USDC micropayments down to $0.000001 via x402 and batched settlement. For pay-per-request APIs, AI agent payments, streaming.
> Look up USDC addresses per chain. Never hardcode — use https://developers.circle.com/stablecoins/usdc-contract-addresses.md.
> Prefer SDKs over raw API calls. Node.js and Python SDKs handle auth, retries, and errors.
> API key required. Bearer token in Authorization header. Testnet and mainnet use separate keys and may use different base URLs depending on the product.
> Set up webhooks when available. Most operations are async. Webhooks deliver transaction confirmations and state changes.
> When calling list endpoints, paginate using pageSize and pageAfter until no nextPageAfter cursor is returned—stopping at the first page silently misses records.
> Building an AI agent? Start with the Agent Stack—Circle CLI, agent wallets, and nanopayments built for autonomous use cases: https://developers.circle.com/agent-stack.md.

# Get a payment intent



## OpenAPI

````yaml openapi/payments.yaml get /v1/paymentIntents/{id}
openapi: 3.0.2
info:
  version: ${version}
  title: Crypto Deposits API
  description: >
    The Circle Payments API allows you to take payments from your end users via
    traditional methods such as debit & credit cards and receive settlement in
    USDC.


    The Circle Payments API has been designed with any business or internet
    commerce in mind, not just crypto applications, and it's based on Circle's
    extensive experience processing millions of card payments since 2014.
servers:
  - url: https://api-sandbox.circle.com
  - url: https://api.circle.com
security: []
tags:
  - name: Payments
    description: Create, cancel, refund, and get updates on card payments.
  - name: Crypto Payment Intents
    description: Create and track intent for end user to pay via crypto.
  - name: Crypto Payment Customers
    description: >-
      Create and manage Travel Rule customers and customer wallets for crypto
      payment attribution.
  - name: Crypto Payment Refund Addresses
    description: Create refund address-book entries for crypto payment refunds.
paths:
  /v1/paymentIntents/{id}:
    get:
      tags:
        - Crypto Payment Intents
      summary: Get a payment intent
      operationId: getPaymentIntent
      parameters:
        - $ref: '#/components/parameters/IdPath'
      responses:
        '200':
          description: Successfully retrieved a payment intent.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                title: GetPaymentIntentResponse
                properties:
                  data:
                    anyOf:
                      - $ref: '#/components/schemas/PaymentIntent'
                      - $ref: '#/components/schemas/ContinuousPaymentIntent'
              examples:
                Transient Payment Intent:
                  value:
                    data:
                      id: 8755d0ea-14f9-4259-b092-de23c14b6568
                      amount:
                        amount: '3.14'
                        currency: USD
                      amountPaid:
                        amount: '0.00'
                        currency: USD
                      settlementCurrency: USD
                      paymentMethods:
                        - type: blockchain
                          chain: ETH
                          address: '0x8381470ED67C3802402dbbFa0058E8871F017A6F'
                      paymentIds: []
                      customerWalletId: 9b8a7d6c-5e4f-4321-9c8b-123456789abc
                      timeline:
                        - status: created
                          time: '2022-07-21T20:13:35.579331Z'
                      createDate: '2022-07-21T20:13:35.578678Z'
                      updateDate: '2022-07-21T20:19:24.859052Z'
                Continuous Payment Intent:
                  value:
                    data:
                      id: e2e90ba3-9d1f-490d-9460-24ac6eb55a1b
                      currency: USD
                      settlementCurrency: USD
                      amountPaid:
                        amount: '0.00'
                        currency: USD
                      paymentMethods:
                        - type: blockchain
                          chain: ETH
                          address: '0x8381470ED67C3802402dbbFa0058E8871F017A6F'
                      timeline:
                        - status: created
                          time: '2023-01-21T20:13:35.579331Z'
                      type: continuous
                      createDate: '2023-01-21T20:13:35.578678Z'
                      updateDate: '2023-01-21T20:13:35.578678Z'
        '401':
          $ref: '#/components/responses/NotAuthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
        - bearerAuth: []
components:
  parameters:
    IdPath:
      name: id
      description: Universally unique identifier (UUID v4) of a resource.
      in: path
      required: true
      schema:
        type: string
        format: uuid
        example: b3d9d2d5-4c12-4946-a09d-953e82fae2b0
  headers:
    XRequestId:
      description: >-
        Universally unique identifier (UUID v4) for the request. Helpful for
        identifying a request when communicating with Circle support.
      schema:
        type: string
        format: uuid
        example: 2adba88e-9d63-44bc-b975-9b6ae3440dde
  schemas:
    PaymentIntent:
      type: object
      required:
        - amount
        - settlementCurrency
        - paymentMethods
      properties:
        id:
          type: string
          description: Unique system generated identifier for the entity.
          format: uuid
          example: b8627ae8-732b-4d25-b947-1df8f4007a29
        amount:
          $ref: '#/components/schemas/CryptoPaymentsMoney'
        amountPaid:
          $ref: '#/components/schemas/CryptoPaymentsMoney'
        amountRefunded:
          $ref: '#/components/schemas/CryptoPaymentsMoney'
        settlementCurrency:
          description: Desired currency for the payments to settle in.
          type: string
          enum:
            - USD
        paymentMethods:
          type: array
          items:
            $ref: '#/components/schemas/PaymentMethodBlockchain'
        fees:
          type: array
          items:
            $ref: '#/components/schemas/PaymentIntentFees'
        paymentIds:
          description: List of associated payments.
          type: array
          items:
            type: string
            format: uuid
            example: 69808f36-3e5e-4f37-bf82-ca79e4d70fc1
        refundIds:
          description: List of associated refunds.
          type: array
          items:
            type: string
            format: uuid
            example: 425dca6d-ac79-43b6-b0f9-43fdc51de91b
        timeline:
          description: State management timeline.
          type: array
          items:
            $ref: '#/components/schemas/Timeline'
        expiresOn:
          $ref: '#/components/schemas/UtcTimestamp'
          description: >-
            The time at which the transient payment intent expires. Once
            expired, the payment intent will no longer accept payments. Must be
            no more than 24 hours after the time of creation. Values beyond 24
            hours, or values that are missing, malformed, or in the past, return
            error `1128`.
        updateDate:
          $ref: '#/components/schemas/UtcTimestamp'
        createDate:
          $ref: '#/components/schemas/UtcTimestamp'
        merchantWalletId:
          $ref: '#/components/schemas/MerchantWalletId'
        purposeOfTransfer:
          $ref: '#/components/schemas/PaymentIntentPurposeOfTransfer'
        customerExternalRef:
          $ref: '#/components/schemas/PaymentCustomerExternalRef'
          description: A customer-supplied reference to reconcile transactions.
        customerWalletId:
          type: string
          format: uuid
          description: >-
            Identifier of the customer wallet linked to the transient payment
            intent, when one was supplied at creation time.
          example: 9b8a7d6c-5e4f-4321-9c8b-123456789abc
    ContinuousPaymentIntent:
      type: object
      required:
        - currency
        - settlementCurrency
        - paymentMethods
        - type
      properties:
        id:
          $ref: '#/components/schemas/Id'
        currency:
          description: Desired currency of the payment.
          type: string
          enum:
            - USD
        amountPaid:
          $ref: '#/components/schemas/CryptoPaymentsMoney'
        amountRefunded:
          $ref: '#/components/schemas/CryptoPaymentsMoney'
        settlementCurrency:
          description: Desired currency for the payments to settle in.
          type: string
          enum:
            - USD
        paymentMethods:
          type: array
          items:
            $ref: '#/components/schemas/PaymentMethodBlockchain'
        fees:
          type: array
          items:
            $ref: '#/components/schemas/PaymentIntentFees'
        timeline:
          description: State management timeline.
          type: array
          items:
            $ref: '#/components/schemas/Timeline'
        updateDate:
          $ref: '#/components/schemas/UtcTimestamp'
        createDate:
          $ref: '#/components/schemas/UtcTimestamp'
        type:
          type: string
          enum:
            - continuous
        merchantWalletId:
          $ref: '#/components/schemas/MerchantWalletId'
        purposeOfTransfer:
          $ref: '#/components/schemas/PaymentIntentPurposeOfTransfer'
        customerExternalRef:
          $ref: '#/components/schemas/PaymentCustomerExternalRef'
          description: A customer-supplied reference to reconcile transactions.
    CryptoPaymentsMoney:
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          description: Magnitude of the amount, in units of the currency, with a `.`.
          type: string
          example: '3.14'
        currency:
          description: Currency code.
          type: string
          enum:
            - USD
            - EUR
    PaymentMethodBlockchain:
      type: object
      required:
        - type
        - chain
      properties:
        type:
          type: string
          enum:
            - blockchain
        chain:
          type: string
          description: The blockchain network for the payment.
          enum:
            - ALGO
            - ARB
            - AVAX
            - BASE
            - BTC
            - ETH
            - HBAR
            - NOBLE
            - OP
            - POLY
            - SOL
            - SUI
            - XLM
        address:
          type: string
          example: '0x8381470ED67C3802402dbbFa0058E8871F017A6F'
    PaymentIntentFees:
      type: object
      required:
        - type
        - amount
        - currency
      properties:
        type:
          type: string
          enum:
            - blockchainLeaseFee
            - totalPaymentFees
        amount:
          description: Magnitude of the amount, in units of the currency, with a `.`.
          type: string
          example: '3.14'
        currency:
          description: Currency code.
          type: string
          enum:
            - USD
    Timeline:
      type: object
      required:
        - status
        - time
      properties:
        status:
          type: string
          enum:
            - created
            - pending
            - complete
            - expired
            - failed
            - refunded
        context:
          type: string
          enum:
            - underpaid
            - paid
            - overpaid
        reason:
          type: string
          enum:
            - requested_by_merchant
            - fee_collection_failed
        time:
          description: ISO-8601 UTC date/time format.
          type: string
          format: date-time
    UtcTimestamp:
      type: string
      description: ISO-8601 UTC date/time format.
      example: '2020-04-10T02:13:30.000Z'
    MerchantWalletId:
      type: string
      description: Unique system generated identifier for the wallet of the merchant.
      maxLength: 36
      example: '212000'
    PaymentIntentPurposeOfTransfer:
      type: string
      description: >
        Payment reason code describing the purpose of the transfer for the
        payment intent.


        Conditionally required: it must be supplied when the entity's legal
        entity is Circle SG (`CIRCLE_SG`), or Circle Inc (`CIRCLE_INC`) with
        Managed Payments enabled. It is optional for all other legal entities.


        `PMT006` (Transfer to own account) is not allowed for payment intents. A
        missing value (when required) or a disallowed/invalid value returns
        error code `INVALID_PURPOSE_OF_TRANSFER`.
      enum:
        - PMT000
        - PMT001
        - PMT002
        - PMT003
        - PMT004
        - PMT005
        - PMT007
        - PMT008
        - PMT009
        - PMT010
        - PMT011
        - PMT012
        - PMT013
        - PMT014
        - PMT015
        - PMT016
        - PMT017
        - PMT018
        - PMT019
        - PMT020
        - PMT021
        - PMT022
        - PMT023
        - PMT024
        - PMT025
        - PMT026
        - PMT027
        - PMT028
        - PMT029
        - PMT030
      example: PMT001
    PaymentCustomerExternalRef:
      type: string
      format: uuid
      description: >-
        A customer-supplied reference for reconciliation purposes, used on
        payment intents, payments, and refunds. Must be a UUID. Payouts and
        transfers use a separate 21-character limit schema.
      example: 310c458a-18eb-4cbd-8a9a-586d9448ae69
    Id:
      type: string
      description: Unique system generated identifier for the entity.
      format: uuid
      example: b8627ae8-732b-4d25-b947-1df8f4007a29
  responses:
    NotAuthorized:
      description: >-
        The request has not been applied because it lacks valid authentication
        credentials.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: NotAuthorized
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 401
              message: Malformed authorization.
          examples:
            response:
              value:
                code: 401
                message: Malformed authorization.
    NotFound:
      description: The specified resource was not found.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: NotFound
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 404
              message: Not found.
          examples:
            response:
              value:
                code: 404
                message: Not found.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````