---
title: "Authorize an outgoing transfer"
method: POST
path: "/payouts/{payoutId}/confirm"
tags: ["transfers"]
---

# Authorize an outgoing transfer

`POST /payouts/{payoutId}/confirm`

## Request

- The document declares no server URL.
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/hevn-inc/apis/hevn-api/docs/payouts/:payoutId/confirm/post.ts> (a function with typed inputs; its response is checked against the schema)

Verify the developer-key signature against the immutable approval and fund the prepared transfer. A retry cannot change the contact, amount, payment method or quote.

## Path parameters

- `payoutId` string, required

## Headers

- `X-Hevn-Account` string, nullable: The client account to act for, as a `cl_…` id. Omit it to act as yourself.

## Request body

- ConfirmRequest
  - `signature` string, required: Base64 DER ECDSA P-256/SHA-256 signature over base64decode(approval.payload).
  - `publicKey` string, nullable: Registered P-256 public key; omit when the signature uniquely identifies the key.

## Response `200`

Successful Response

- PayoutReceiptResponse
  - `id` string, required: Stable public identifier for this outgoing transfer.
  - `kind` 'fiat' | 'onchain', required
  - `status` 'awaitingSignature' | 'submitted' | 'settled' | 'failed' | 'refunded', required
  - `transactionHash` string, nullable: On-chain transaction hash, when broadcast.
  - `transactionId` string, nullable: Ledger transaction identifier, when created.
  - `pollUrl` string, nullable: Relative API URL to poll while processing continues.
  - `failure` PayoutFailureView
    - `code` string, required: Stable machine-readable code for the transfer failure.

## Other responses

- `202`: Accepted
- `422`: Request validation failed

## Changes

- **2026-11-12** `299a3aa6f521`: 1 warning, 2 info
  - added the new `verification_not_applicable` enum value to the `error/code` response property for the response status `422`
  - removed the `phone_required` enum value from the `error/code` response property for the response status `422`
  - removed the `rail_requirements_unmet` enum value from the `error/code` response property for the response status `422`
- **2026-10-23** `a02795de2d2b`: 9 warning, 5 info
  - deleted the `header` request parameter `x-api-key`
  - added the new `client_already_linked` enum value to the `error/code` response property for the response status `422`
  - added the new `kyb_documents_processing` enum value to the `error/code` response property for the response status `422`
  - added the new `link_code_expired` enum value to the `error/code` response property for the response status `422`
  - …10 more
- **2026-10-20** `19eb00e9f258`: 1 info
  - removed the `phone_in_use` enum value from the `error/code` response property for the response status `422`
- **2026-10-20** `bd6c9d69540e`: 1 warning
  - added the new `phone_in_use` enum value to the `error/code` response property for the response status `422`
- **2026-10-20** `19eb00e9f258`: 1 info
  - removed the `document_fields_missing` enum value from the `error/code` response property for the response status `422`

[Operation history](https://skmtc.dev/hevn-inc/apis/hevn-api/changes/payouts/:payoutId/confirm/post.md)

---

[API](https://skmtc.dev/hevn-inc/apis/hevn-api.md) - [All operations](https://skmtc.dev/hevn-inc/apis/hevn-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hevn-inc/apis/hevn-api/revisions/299a3aa6f521?raw)
