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

# Register CCTP Deposit Burn

> Register a cross-chain deposit burn so Chipi delivers the Starknet mint, even if the user closes the page

```bash cURL theme={null}
curl -X POST "https://api.chipipay.com/v1/cctp/register-burn" \
  -H "Authorization: Bearer sk_prod_xxxx" \
  -H "x-api-key: pk_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "burnTx": "0x7f3a...",
    "sourceDomain": 6,
    "mintRecipient": "0x03329497...",
    "amountUsdc": 25.5
  }'
```

```typescript TypeScript theme={null}
const response = await fetch("https://api.chipipay.com/v1/cctp/register-burn", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk_prod_xxxx",
    "x-api-key": "pk_xxxx",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    burnTx: "0x7f3a...",
    sourceDomain: 6,
    mintRecipient: "0x03329497...",
    amountUsdc: 25.5
  })
});
```

```json 200 Response theme={null}
{
  "ok": true
}
```

> [!NOTE]
>
> Call it the moment the burn hash exists, before waiting for the receipt. From then on the deposit completes without the browser: Chipi polls Circle every two minutes and mints from its own account. The mint recipient must be one of your API key's wallets. The SDK's `useCrossChainDeposit` does this for you.


## OpenAPI

````yaml POST /cctp/register-burn
openapi: 3.1.0
info:
  title: Chipi Pay API
  description: >-
    REST API for creating self-custodial wallets, executing gasless
    transactions, and purchasing services on Starknet.
  version: 14.0.0
  license:
    name: MIT
servers:
  - url: https://api.chipipay.com/v1
security:
  - bearerAuth: []
    apiKeyAuth: []
tags:
  - name: Wallets
    description: Create and manage self-custodial Starknet wallets
  - name: Transactions
    description: Record and query blockchain transactions
  - name: SKUs
    description: Browse available services for purchase
  - name: SKU Purchases
    description: Purchase services using blockchain payments
  - name: Exchanges
    description: Currency conversion rates
  - name: Cross-chain
    description: >-
      USDC in and out of a Chipi wallet through Circle's CCTP V2 (Base and other
      EVM chains, Solana)
paths:
  /cctp/register-burn:
    post:
      tags:
        - Cross-chain
      summary: Register CCTP Deposit Burn
      description: >-
        Register a cross-chain deposit burn (Base, another EVM chain or Solana →
        Starknet) so Chipi delivers the Starknet mint from its own account once
        Circle attests it, even if the user's page is gone. The mint recipient
        must be one of this API key's wallets. Idempotent: registering the same
        burn again changes nothing. Call it as soon as the burn hash exists.
      operationId: registerCctpBurn
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterCctpBurnBody'
      responses:
        '200':
          description: Burn registered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Wallet not found for this API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    RegisterCctpBurnBody:
      type: object
      properties:
        burnTx:
          type: string
          description: The source-chain burn transaction hash (depositForBurn)
        sourceDomain:
          type: integer
          description: >-
            Circle CCTP domain of the source chain (6 Base, 3 Arbitrum, 2
            Optimism, 7 Polygon, 0 Ethereum, 5 Solana)
        mintRecipient:
          type: string
          description: >-
            The Chipi wallet the burn mints to. Must be one of this API key's
            wallets.
        amountUsdc:
          type: number
          description: Human USDC amount burned, e.g. 25.5
      required:
        - burnTx
        - sourceDomain
        - mintRecipient
        - amountUsdc
    OkResponse:
      type: object
      properties:
        ok:
          type: boolean
          enum:
            - true
      required:
        - ok
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error code
        message:
          type: string
          description: Human-readable error message
      required:
        - error
        - message
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized — invalid or missing API key / bearer token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limit exceeded (100 requests/minute per API key)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Bearer token — use your secret key (sk_prod_xxx) for server-side calls,
        or the user's JWT for client-side calls
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Your Chipi public API key (pk_xxx)

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.