---
title: "Create Offramp"
method: POST
path: "/v1/offramps"
tags: ["public.offramps"]
---

# Create Offramp

`POST /v1/offramps`

Creates an offramp receive address for the authenticated merchant. Include developer_fee.percentage to keep 0% to 50% of each received deposit; deposit responses and webhooks show the developer fee and customer amount separately from Daya fees. TEMPORARY offramps are only supported with NGN_PAYOUT settlement; INTERNAL_BALANCE settlement requires PERMANENT. Requires an idempotency key in the X-Idempotency-Key header.

## Headers

- `X-Idempotency-Key` string, required

## Request body

- CreateOfframpRequest
  - `asset` 'USDC' | 'USDT', required
  - `chain` 'APTOS' | 'BASE' | 'BSC' | 'CELO' | 'ETHEREUM' | 'POLYGON' | 'SOLANA' | 'SUI' | 'TEMPO' | 'TRON', required
  - `customer` OfframpCustomerRequest, required
    - `customer_id` string
    - `email` string
    - `first_name` string
    - `last_name` string
  - `developer_fee` DeveloperFeeRequest
    - `percentage` string, required — Percentage of each received deposit that the merchant keeps. Use a decimal string from 0 to 50.
  - `settlement` OfframpSettlementRequest, required
    - `destination_bank` DestinationBank
      - `account_name` string
      - `account_number` string, required
      - `bank_code` string, required
    - `mode` 'INTERNAL_BALANCE' | 'NGN_PAYOUT', required
    - `rate_id` string
  - `type` 'TEMPORARY' | 'PERMANENT', required

## Response `200`

Returned when an existing address is reused

- OfframpResponse
  - `address` string
  - `asset` string
  - `chain` string
  - `created_at` string
  - `customer_id` string
  - `developer_fee` DeveloperFeeConfigResponse
    - `percentage` string — Percentage configured for deposits received through this account or receive address.
  - `id` string
  - `settlement` OfframpSettlementResponse
    - `destination_bank` DestinationBank
      - `account_name` string
      - `account_number` string, required
      - `bank_code` string, required
    - `expires_at` string
    - `mode` string
    - `rate_id` string
  - `status` string
  - `type` 'TEMPORARY' | 'PERMANENT'
  - `updated_at` string

## Other responses

- `201` — Created
- `400` — Invalid request
- `401` — Unauthorized
- `409` — Idempotency conflict
- `500` — Internal server error

---

[API](https://skmtc.dev/daya/apis/daya-external-api-public-api.md) · [All operations](https://skmtc.dev/daya/apis/daya-external-api-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/daya/daya-external-api-public-api/revisions/5fc72bf91a48/schema)
