> ## 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.

# Create an external entity

> Creates an external entity for the institutional account.

To access the Core API for Institutions, contact your Circle account representative.




## OpenAPI

````yaml openapi/institutional.yaml post /v1/externalEntities
openapi: 3.0.2
info:
  version: ${version}
  title: Core API for Institutions
  description: >-
    The Circle Institutional API provides endpoints for the distribution of USDC
    to end institutions.
servers:
  - url: https://api-sandbox.circle.com
  - url: https://api.circle.com
security: []
tags:
  - name: External Entities
    description: Manage your external entities.
paths:
  /v1/externalEntities:
    post:
      tags:
        - External Entities
      summary: Create an external entity
      description: >
        Creates an external entity for the institutional account.


        To access the Core API for Institutions, contact your Circle account
        representative.
      operationId: createExternalEntity
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalEntityCreationRequest'
      responses:
        '201':
          description: Successfully created an external entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalEntity'
              examples:
                response:
                  value:
                    walletId: '212000'
                    businessName: Circle Internet Financial Inc.
                    businessUniqueIdentifier: '1234567890'
                    identifierIssuingCountryCode: US
                    complianceState: PENDING
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/NotAuthorized'
        '409':
          $ref: '#/components/responses/Conflict'
      security:
        - bearerAuth: []
components:
  schemas:
    ExternalEntityCreationRequest:
      type: object
      required:
        - businessName
        - businessUniqueIdentifier
        - identifierIssuingCountryCode
        - address
      properties:
        businessName:
          type: string
          description: The name of the business.
          example: Circle Internet Financial Inc.
        businessUniqueIdentifier:
          type: string
          description: >-
            The unique identifier of the business. For example, a company number
            or tax ID.
          example: '1234567890'
        identifierIssuingCountryCode:
          type: string
          description: >-
            The country code of the issuing authority. Formatted as a two-letter
            country code specified in ISO 3166-1 alpha-2.
          pattern: ^[A-Z]{2}$
          example: US
        address:
          $ref: '#/components/schemas/InstitutionalAddress'
    ExternalEntity:
      type: object
      description: An external entity
      properties:
        walletId:
          $ref: '#/components/schemas/InstitutionalWalletId'
        businessName:
          type: string
          description: The name of the business.
          example: Circle Internet Financial Inc.
        businessUniqueIdentifier:
          type: string
          description: >-
            The unique identifier of the business. For example, a company number
            or tax ID.
          example: '1234567890'
        identifierIssuingCountryCode:
          type: string
          description: >-
            The country code of the issuing authority. Formatted as a two-letter
            country code specified in ISO 3166-1 alpha-2.
          pattern: ^[A-Z]{2}$
          example: US
        complianceState:
          type: string
          description: The compliance status of the external entity.
          enum:
            - PENDING
            - ACCEPTED
            - REJECTED
    InstitutionalAddress:
      type: object
      required:
        - country
        - state
        - city
        - postalCode
      properties:
        country:
          type: string
          description: >-
            Country portion of the address. Formatted as a two-letter country
            code specified in ISO 3166-1 alpha-2.
          pattern: ^[A-Z]{2}$
          example: US
        state:
          type: string
          description: >-
            State / county / province / region / district / emirate portion of
            the address. US and Canada use the two-letter code for the
            subdivision.
          example: MA
        city:
          type: string
          description: City portion of the address.
          example: Boston
        postcode:
          type: string
          description: >-
            Postal / ZIP code of the address. If there is no applicable postal
            code, set the value to `00000`.
          example: '01234'
        streetName:
          type: string
          description: Street name of the address.
          example: Main Street
        buildingNumber:
          type: string
          description: Street number of the address.
          example: '100'
    InstitutionalWalletId:
      type: string
      description: >-
        Unique system-generated identifier for the wallet of the institutional
        entity.
      example: '212000'
  responses:
    BadRequest:
      description: The request cannot be processed due to a client error.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: BadRequest
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 400
              message: Bad request.
          examples:
            response:
              value:
                code: 400
                message: Bad request.
    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.
    Conflict:
      description: >-
        The request has not been applied because it comes in conflict with
        another request (such as re-using an idempotencyKey for a different
        request).
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            type: object
            title: Conflict
            required:
              - code
              - message
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Something went wrong.
            example:
              code: 409
              message: Conflicts with another request.
          examples:
            response:
              value:
                code: 409
                message: Conflicts with another request.
  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
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````