For the complete documentation index, see llms.txt. This page is also available as Markdown.

Submit on-ramp

Convert the user's tokenized fiat into crypto delivered to an external wallet. Requires a Live UR account, a valid unexpired quoteId, passed liveness when the quote required it, and no pending retry. The response returns only a txHash; the transaction webhook with data.type ONRAMP reports the final result. On-ramp is not yet available for integration; this reference is a preview.

post
/api/fma/v1/onramp
Authorizations
X-Api-SignaturestringRequired

Partner Auth: EIP-191 signature by the partner's registered backend key, with X-Api-Deadline and optional X-Api-PublicKey headers. See the Signature and verify guide.

Header parameters
X-Api-SignaturestringRequired

0x-prefixed 65-byte hex EIP-191 signature over the Partner Auth message. See the Signature and verify guide.

X-Api-DeadlinestringRequired

Unix seconds. UR rejects the request when the current time is past the deadline. Keep the validity window at or under 5 minutes.

X-Api-PublicKeystringRequired

0x-prefixed partner signer address registered with UR.

X-Ur-IdstringOptional

Send at least one of X-Ur-Id or X-External-User-Id. When both are present, UR resolves the user by X-Ur-Id first.

X-External-User-IdstringOptional

Send at least one of X-Ur-Id or X-External-User-Id. When both are present, UR resolves the user by X-Ur-Id first.

Body
reqIdstringRequired

Partner-supplied idempotency key. Keep it stable across retries of the same logical operation.

quoteIdstringRequired

quoteId from the On-ramp quote. Must match UR's cached quote and not be expired.

fromCurrencystringRequired

Source fiat currency symbol.

chainIdstringOptional

Source chain ID in CAIP-2 format.

amountInstringRequired

Input amount as a human-readable decimal string. Must match the amount used for the cached quote.

dstChainIdstringOptional

Destination chain ID in CAIP-2 format.

withdrawAddressstringRequired

External wallet that receives the crypto. Required for every On-ramp; the UR-managed account holds fiat only and never receives crypto.

dstAggregatorstringOptional

best.to from the quote.

dstTokenOutstringOptional

Destination token address.

dstSwapCalldatastringOptional

best.swapCalldata from the quote.

dstMinAmountOutstringOptional

best.minAmountOut from the quote.

Responses
200

Standard envelope. Business errors return HTTP 200 with a non-zero code.

application/json

Standard UR OpenAPI response envelope. code 0 means success; a non-zero code is a business error described by message.

codeintegerRequired

0 on success; non-zero business error code.

messagestringRequired

Human-readable explanation. May be empty on success.

post/api/fma/v1/onramp
POST /api/fma/v1/onramp HTTP/1.1
Host: openapi.ur.app
X-Api-Signature: text
X-Api-Deadline: text
X-Api-PublicKey: text
Content-Type: application/json
Accept: */*
Content-Length: 365

{
  "reqId": "onramp-2026-04-24-0001",
  "quoteId": "onramp_direct_1703123000000_12345",
  "fromCurrency": "EUR",
  "chainId": "<src-chain-CAIP2>",
  "amountIn": "100",
  "dstChainId": "<dst-chain-CAIP2>",
  "withdrawAddress": "0x_EXTERNAL_WALLET_ADDRESS",
  "dstAggregator": "0xAggregatorAddress",
  "dstTokenOut": "0x_DESTINATION_TOKEN_ADDRESS",
  "dstSwapCalldata": "0x...",
  "dstMinAmountOut": "1228327"
}
200

Standard envelope. Business errors return HTTP 200 with a non-zero code.

{
  "code": 0,
  "message": "",
  "data": {
    "txHash": "0xabc123..."
  }
}

Last updated