---
title: "Convert your own balance and deliver to a recipient"
method: POST
path: "/v1/conversions"
tags: ["Conversions"]
---

# Convert your own balance and deliver to a recipient

`POST /v1/conversions`

## Request

- Base URL: `https://api.sandbox.alfredpay.io`
- URL: `https://api.sandbox.alfredpay.io/v1/conversions`
- Auth: one of:
  - HTTP bearer
  - API key in header `api-key` and API key in header `api-secret`

Executes a quote against your own stablecoin balance and delivers the fiat to a recipient on your own account. Funds are drawn from your balance, and no inbound deposit is needed. The result is a `PAY_OUT` with subtype `OFF_RAMP`, which settles asynchronously.

`POST /v1/payouts/fiat` with a `quoteId` produces the same result. Read it back with `GET /v1/conversions/{conversionId}` until `transaction_status` is `COMPLETE` or `FAILED`.

## Headers

- `Idempotency-Key` string, uuid, required

## Request body

- OwnConversionCreate
  - `quoteId` string, required: An active quote.
  - `linkedAccountId` string, required: A recipient on your own account, for the fiat side.

## Response `201`

Created

- OwnConversion
  - `id` string: txn_...
  - `transaction_type` 'PAY_OUT'
  - `transaction_subtype` 'OFF_RAMP'
  - `transaction_status` 'CREATED' | 'PENDING_VALIDATION' | 'PENDING_FUNDS' | 'PENDING_COMPLIANCE' | 'PENDING_RFI' | 'APPROVED_FOR_EXECUTION' | 'PROCESSING' | 'COMPLETE' | 'FAILED' | 'CANCELLED' | 'BLOCKED': Business lifecycle, customer-facing. Terminal values are COMPLETE, FAILED, CANCELLED, BLOCKED.
  - `settlement_status` 'NOT_STARTED' | 'FUNDS_EXPECTED' | 'FUNDS_RECEIVED' | 'FUNDS_HELD' | 'FUNDS_RELEASED' | 'SETTLED' | 'PARTIALLY_SETTLED' | 'FAILED' | 'RETURNED': Leg-level and financial. "Delayed settlement" is a settlement value with the parent still PROCESSING, never a business status.
  - `quoteId` string
  - `sell` object
    - `currency` string
    - `chain` string, nullable
    - `amount` string
  - `buy` object
    - `currency` string
    - `chain` string, nullable
    - `amount` string
  - `executionRate` string
  - `fees` Fee[]
    - `type` 'provider' | 'network' | 'alfred' | 'conversion' | 'payout'
    - `amount` string
    - `currency` string
  - `created_at` string, date-time

## Other responses

- `400`: Malformed request, so a missing required field, a wrong type or a bad enum.
- `401`: Missing or invalid credentials.
- `409`: `quote_expired`, `quote_consumed`, `recipient_not_linked` or `idempotency_conflict`.
- `422`: Semantically invalid. The request is well-formed but violates a business rule. `param` names the field.

## Changes

- **2026-11-03** `20fef4fd2ab3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation/changes/v1/conversions/post.md)

---

[API](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation.md) - [All operations](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation/revisions/20fef4fd2ab3?raw)
