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

Submit payout

Send tokenized fiat from the user's UR account to an external bank account via SEPA or SWIFT. Requires a Live UR account; fees are deducted from the amount, and the payout counts against the rolling 30-day CHF-denominated fiat limit. The response returns only a txHash; the transaction webhook with data.type FIAT_WITHDRAW reports final settlement.

post
/api/fma/v1/submit-payout
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.

amountstringRequired

Payout amount as a string. Minimum is currency-specific; see minimalPayoutAmount from the payout fees endpoint. Network and payout fees are deducted from this amount.

contactIdstringRequired

Contact ID from the BR profile contacts or from verify-contact.

currencystringRequired

Payout fiat currency symbol.

purposeIdstringOptional

Payment purpose ID as a decimal string. Provide together with refId, or omit both.

refIdstringOptional

Reference ID from verify-reference or verify-contact. Provide together with purposeId, or omit both.

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/submit-payout
POST /api/fma/v1/submit-payout 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: 289

{
  "reqId": "unique-idempotency-key",
  "amount": "250",
  "contactId": "EA-00017418",
  "currency": "EUR",
  "purposeId": "1",
  "refId": "REF-7A6C2A8E",
  "metadata": {
    "bankAccountHolder": "Alice Doe",
    "bankName": "Hypothekarbank Lenzburg AG",
    "bankAccount": "CH9300762011623852957",
    "bankReference": "Invoice 2026-001"
  }
}
200

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

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

Last updated