---
title: "Submit a signed permit deposit"
method: POST
path: "/deposits/permit"
tags: ["Processing"]
---

# Submit a signed permit deposit

`POST /deposits/permit`

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.

## Headers

- `x-api-key` string — API key for authentication (omit when sending Authorization)
- `authorization` string — Bearer platform token (e.g. forwarded by user-service). Takes precedence over `x-api-key` when both are present.

## Request body

- union
  - object
    - `account` string, required — Ethereum address (0x followed by 40 hex characters)
    - `sourceChain` string, required — CAIP-2 chain identifier (e.g. "eip155:8453")
    - `token` string, required — Ethereum address (0x followed by 40 hex characters)
    - `amount` string, required — Numeric string representing a bigint value
    - `owner` string, required — Ethereum address (0x followed by 40 hex characters)
    - `signature` string, required — Hex-encoded string (0x followed by hex characters)
    - `kind` 'erc3009', required
    - `nonce` string, required — ERC-3009 bytes32 authorization nonce
    - `validAfter` string, required — Numeric string representing a bigint value
    - `validBefore` string, required — Numeric string representing a bigint value
  - object
    - `account` string, required — Ethereum address (0x followed by 40 hex characters)
    - `sourceChain` string, required — CAIP-2 chain identifier (e.g. "eip155:8453")
    - `token` string, required — Ethereum address (0x followed by 40 hex characters)
    - `amount` string, required — Numeric string representing a bigint value
    - `owner` string, required — Ethereum address (0x followed by 40 hex characters)
    - `signature` string, required — Hex-encoded string (0x followed by hex characters)
    - `kind` 'erc2612', required
    - `nonce` string, required — Numeric string representing a bigint value
    - `deadline` string, required — Numeric string representing a bigint value
  - object
    - `account` string, required — Ethereum address (0x followed by 40 hex characters)
    - `sourceChain` string, required — CAIP-2 chain identifier (e.g. "eip155:8453")
    - `token` string, required — Ethereum address (0x followed by 40 hex characters)
    - `amount` string, required — Numeric string representing a bigint value
    - `owner` string, required — Ethereum address (0x followed by 40 hex characters)
    - `signature` string, required — Hex-encoded string (0x followed by hex characters)
    - `kind` 'permit2', required
    - `nonce` string, required — Numeric string representing a bigint value
    - `deadline` string, required — Numeric string representing a bigint value

## Response `202`

Deposit accepted and processing started

- PermitDepositSubmitResponse
  - `depositId` string, required
  - `txHash` string, required — Hex-encoded string (0x followed by hex characters)
  - `status` 'processing', required

## Other responses

- `400` — 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)
- `401` — Missing/invalid API key or expired platform bearer token
- `403` — API key lacks the deposits write scope, or permit deposits are disabled
- `404` — Account not found or not owned by the caller
- `409` — A deposit for this permit already exists
- `422` — Route cannot settle (whitelist violation, unsupported token route, or no session for the source chain)

---

[API](https://skmtc.net/rhinestonewtf/apis/deposit-service-api.md) · [All operations](https://skmtc.net/rhinestonewtf/apis/deposit-service-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rhinestonewtf/deposit-service-api/revisions/c9aa3f252e4f/schema)
