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

# Submit a signed permit deposit

> Experimental. Accepts the owner-signed ERC-3009, ERC-2612, or Permit2 payload prepared by POST /deposits/permit/prepare and immediately starts settlement: the pull from the owner wallet rides inside the bridging intent as a preclaim op, so funds move atomically with the claim. The server reconstructs the typed data from primitive fields and verifies the signature, domain, deadline window, and on-chain replay state before accepting. Returns a synthetic tracking hash usable everywhere a deposit tx hash is until the real source transaction replaces it.



## OpenAPI

````yaml https://raw.githubusercontent.com/rhinestonewtf/openapi/refs/heads/main/deposit-service.json post /deposits/permit
openapi: 3.1.0
info:
  title: Deposit Service API
  version: 1.0.0
  description: >-
    Cross-chain deposit processing service with automatic token bridging and gas
    sponsorship
servers:
  - url: https://v1.orchestrator.rhinestone.dev/deposit-processor
security: []
paths:
  /deposits/permit:
    post:
      tags:
        - Processing
      summary: Submit a signed permit deposit
      description: >-
        Experimental. Accepts the owner-signed ERC-3009, ERC-2612, or Permit2
        payload prepared by POST /deposits/permit/prepare and immediately starts
        settlement: the pull from the owner wallet rides inside the bridging
        intent as a preclaim op, so funds move atomically with the claim. The
        server reconstructs the typed data from primitive fields and verifies
        the signature, domain, deadline window, and on-chain replay state before
        accepting. Returns a synthetic tracking hash usable everywhere a deposit
        tx hash is until the real source transaction replaces it.
      parameters:
        - schema:
            type: string
            description: API key for authentication (omit when sending Authorization)
            example: your-api-key
          required: false
          description: API key for authentication (omit when sending Authorization)
          name: x-api-key
          in: header
        - schema:
            type: string
            description: >-
              Bearer platform token (e.g. forwarded by user-service). Takes
              precedence over `x-api-key` when both are present.
            example: Bearer eyJhbGciOi...
          required: false
          description: >-
            Bearer platform token (e.g. forwarded by user-service). Takes
            precedence over `x-api-key` when both are present.
          name: authorization
          in: header
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PermitDepositSubmitRequest'
      responses:
        '202':
          description: Deposit accepted and processing started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PermitDepositSubmitResponse'
        '400':
          description: >-
            Invalid signature (PERMIT-1), deadline outside the acceptance window
            (PERMIT-2), nonce already used (PERMIT-3), owner funding
            insufficient (PERMIT-4), or ineligible token/route (PERMIT-5)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing/invalid API key or expired platform bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            API key lacks the deposits write scope, or permit deposits are
            disabled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Account not found or not owned by the caller
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: A deposit for this permit already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: >-
            Route cannot settle (whitelist violation, unsupported token route,
            or no session for the source chain)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    PermitDepositSubmitRequest:
      oneOf:
        - type: object
          properties:
            account:
              type: string
              pattern: ^0x[a-fA-F0-9]{40}$
              description: Ethereum address (0x followed by 40 hex characters)
              example: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
            sourceChain:
              type: string
              pattern: ^[a-z0-9]+:[a-zA-Z0-9]+$
              description: CAIP-2 chain identifier (e.g. "eip155:8453")
              example: eip155:8453
            token:
              type: string
              pattern: ^0x[a-fA-F0-9]{40}$
              description: Ethereum address (0x followed by 40 hex characters)
              example: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
            amount:
              type: string
              pattern: ^\d+$
              description: Numeric string representing a bigint value
              example: '1000000000000000000'
            owner:
              type: string
              pattern: ^0x[a-fA-F0-9]{40}$
              description: Ethereum address (0x followed by 40 hex characters)
              example: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
            signature:
              type: string
              pattern: ^0x[a-fA-F0-9]+$
              description: Hex-encoded string (0x followed by hex characters)
              example: '0x1234abcd'
            kind:
              type: string
              enum:
                - erc3009
            nonce:
              type: string
              pattern: ^0x[a-fA-F0-9]{64}$
              description: ERC-3009 bytes32 authorization nonce
              example: >-
                0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
            validAfter:
              type: string
              pattern: ^\d+$
              description: Numeric string representing a bigint value
              example: '1000000000000000000'
            validBefore:
              type: string
              pattern: ^\d+$
              description: Numeric string representing a bigint value
              example: '1000000000000000000'
          required:
            - account
            - sourceChain
            - token
            - amount
            - owner
            - signature
            - kind
            - nonce
            - validAfter
            - validBefore
        - type: object
          properties:
            account:
              type: string
              pattern: ^0x[a-fA-F0-9]{40}$
              description: Ethereum address (0x followed by 40 hex characters)
              example: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
            sourceChain:
              type: string
              pattern: ^[a-z0-9]+:[a-zA-Z0-9]+$
              description: CAIP-2 chain identifier (e.g. "eip155:8453")
              example: eip155:8453
            token:
              type: string
              pattern: ^0x[a-fA-F0-9]{40}$
              description: Ethereum address (0x followed by 40 hex characters)
              example: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
            amount:
              type: string
              pattern: ^\d+$
              description: Numeric string representing a bigint value
              example: '1000000000000000000'
            owner:
              type: string
              pattern: ^0x[a-fA-F0-9]{40}$
              description: Ethereum address (0x followed by 40 hex characters)
              example: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
            signature:
              type: string
              pattern: ^0x[a-fA-F0-9]+$
              description: Hex-encoded string (0x followed by hex characters)
              example: '0x1234abcd'
            kind:
              type: string
              enum:
                - erc2612
            nonce:
              type: string
              pattern: ^\d+$
              description: Numeric string representing a bigint value
              example: '1000000000000000000'
            deadline:
              type: string
              pattern: ^\d+$
              description: Numeric string representing a bigint value
              example: '1000000000000000000'
          required:
            - account
            - sourceChain
            - token
            - amount
            - owner
            - signature
            - kind
            - nonce
            - deadline
        - type: object
          properties:
            account:
              type: string
              pattern: ^0x[a-fA-F0-9]{40}$
              description: Ethereum address (0x followed by 40 hex characters)
              example: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
            sourceChain:
              type: string
              pattern: ^[a-z0-9]+:[a-zA-Z0-9]+$
              description: CAIP-2 chain identifier (e.g. "eip155:8453")
              example: eip155:8453
            token:
              type: string
              pattern: ^0x[a-fA-F0-9]{40}$
              description: Ethereum address (0x followed by 40 hex characters)
              example: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
            amount:
              type: string
              pattern: ^\d+$
              description: Numeric string representing a bigint value
              example: '1000000000000000000'
            owner:
              type: string
              pattern: ^0x[a-fA-F0-9]{40}$
              description: Ethereum address (0x followed by 40 hex characters)
              example: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
            signature:
              type: string
              pattern: ^0x[a-fA-F0-9]+$
              description: Hex-encoded string (0x followed by hex characters)
              example: '0x1234abcd'
            kind:
              type: string
              enum:
                - permit2
            nonce:
              type: string
              pattern: ^\d+$
              description: Numeric string representing a bigint value
              example: '1000000000000000000'
            deadline:
              type: string
              pattern: ^\d+$
              description: Numeric string representing a bigint value
              example: '1000000000000000000'
          required:
            - account
            - sourceChain
            - token
            - amount
            - owner
            - signature
            - kind
            - nonce
            - deadline
    PermitDepositSubmitResponse:
      type: object
      properties:
        depositId:
          type: string
        txHash:
          type: string
          pattern: ^0x[a-fA-F0-9]+$
          description: Hex-encoded string (0x followed by hex characters)
          example: '0x1234abcd'
        status:
          type: string
          enum:
            - processing
      required:
        - depositId
        - txHash
        - status
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
        details:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              path:
                type: array
                items:
                  anyOf:
                    - type: string
                    - type: number
              code:
                type: string
            required:
              - message
      required:
        - error

````