---
title: "Create an offramp"
method: POST
path: "/v2/offramps"
tags: ["Offramp"]
---

# Create an offramp

`POST /v2/offramps`

An offramp facilitates the conversion of crypto to fiat. Once the crypto transfer is confirmed, HIFI will deposit the converted fiat into the receiving user’s bank account. 

There are two types of offramp:

* **Quote-based offramp**: This type of offramp first returns the conversion rate quote based on the best market rate, which you can accept through the [Accept an offramp quote](https://docs.hifi.com/api-reference/offramp/accept-an-offramp-quote) endpoint to initiate the offramp.  
 To learn more about quote-based offramps, click [here](https://docs.hifi.com/guides/transfers/onramps/usd-usdc).

* **Non-quote-based offramp**: This type of offramp will be initiated immediately upon creating an offramp.

## Request body

- union
  - CreateOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'gift' | 'bills' | 'groceries' | 'travel' | 'health' | 'entertainment' | 'housing' | 'school-fees' | 'other' — Refer to [here](https://docs.hifi.com/transactions/offramps#purpose-of-payment-code) for more details on the purpose of payment code to provide.
    - `supportingDocumentType` 'billing_document' | 'order_document' | 'shipment_document' | 'regulatory_document' | 'transport_document' | 'other_document' — The type of supporting document, required for swift payment.
    - `supportingDocumentUrl` string — The URL of the supporting document, required for swift payment.
    - `description` string — Memo code or description for usd offramp.
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` OfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'usd' | 'eur' | 'brl' | 'hkd' | 'mxn' | 'cop' | 'ars' | 'ngn' | 'ugx' | 'kes' | 'zmw' | 'mwk' | 'rwf' | 'tzs' | 'xaf' | 'xof' | 'bwp' | 'xaf' | 'cdf' | 'ghs' | 'zar', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
      - `sameDayAch` boolean — same day ACH offramp for a $1 additional fee
      - `achReference` string — a reference message to include when offramping through ACH transfer. it can be at most 10 characters, A-Z, a-z, 0-9, and spaces. Note that as of `2024-08-06`, setting this field is only supported for certain developers while we work on rolling out general support for everyone.
      - `sepaReference` string — a reference message to include when offramping through SEPA transfer. it must be between 6 to 140 characters. The allowed characters are a-z, A-Z, 0-9, spaces, ampersand (&), hyphen (-), full stop (.), and solidus (/).
      - `wireMessage` string — a message to include when offramping through WIRE transfer. it can be at most 4 lines, each with a max length of 35 char according to the Fedwire standard.
      - `paymentReference` string — a reference message to include when offramping. Please utilize `wireMessage` for wire transfer and `achReference` for ACH transfer instead of this field.
      - `swiftReference` string — A reference message to include when offramping through SWIFT transfer that is mainly use to indicate the purpose of payment. it can be at most 12 characters.
    - `developerFee` DeveloperFee[], nullable — custom offramp fees, omit if no fees are charged
      - `fees` object[], required
        - `type` 'PERCENTAGE' | 'FLAT', required
        - `value` string, required — Fee amount as a string. For PERCENTAGE type, "0.0005" represents 0.05%. For FLAT type, represents absolute amount. For PERCENTAGE type, the value must be between 0 and 1 with max 4 decimal places.
        - `walletAddress` string, required — Wallet address to receive the fee
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateUsdOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'gift' | 'bills' | 'groceries' | 'travel' | 'health' | 'entertainment' | 'housing' | 'school-fees' | 'other' — Refer to [here](https://docs.hifi.com/transactions/offramps#purpose-of-payment-code) for more details on the purpose of payment code to provide.
    - `supportingDocumentType` 'billing_document' | 'order_document' | 'shipment_document' | 'regulatory_document' | 'transport_document' | 'other_document' — The type of supporting document, required for swift payment.
    - `supportingDocumentUrl` string — The URL of the supporting document, required for swift payment.
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` UsdOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'usd', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
      - `sameDayAch` boolean — same day ACH offramp for a $1 additional fee
      - `achReference` string — a reference message to include when offramping through ACH transfer. it can be at most 10 characters, A-Z, a-z, 0-9, and spaces. Note that as of `2024-08-06`, setting this field is only supported for certain developers while we work on rolling out general support for everyone.
      - `wireMessage` string — a message to include when offramping through WIRE transfer. it can be at most 4 lines, each with a max length of 35 char according to the Fedwire standard.
      - `swiftReference` string — A reference message to include when offramping through SWIFT transfer that is mainly use to indicate the purpose of payment. it can be at most 12 characters.
    - `developerFee` DeveloperFee
      - `fees` object[], required
        - `type` 'PERCENTAGE' | 'FLAT', required
        - `value` string, required — Fee amount as a string. For PERCENTAGE type, "0.0005" represents 0.05%. For FLAT type, represents absolute amount. For PERCENTAGE type, the value must be between 0 and 1 with max 4 decimal places.
        - `walletAddress` string, required — Wallet address to receive the fee
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateBrlOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'gift' | 'bills' | 'groceries' | 'travel' | 'health' | 'entertainment' | 'housing' | 'school-fees' | 'other'
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` BrlOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'brl', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid, required — user who is receiving the fiat
      - `paymentReference` string — a reference message to include when offramping.
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateCopOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'gift' | 'bills' | 'groceries' | 'travel' | 'health' | 'entertainment' | 'housing' | 'school-fees' | 'other'
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` CopOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'cop', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateMxnOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'gift' | 'bills' | 'groceries' | 'travel' | 'health' | 'entertainment' | 'housing' | 'school-fees' | 'other'
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` MxnOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'mxn', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
      - `paymentReference` string — a reference message to include when offramping.
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateArsOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'gift' | 'bills' | 'groceries' | 'travel' | 'health' | 'entertainment' | 'housing' | 'school-fees' | 'other'
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` ArsOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'ars', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateAfricaOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'gift' | 'bills' | 'groceries' | 'travel' | 'health' | 'entertainment' | 'housing' | 'school-fees' | 'other', required
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` AfricaOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` string, required — fiat currency. Look at the list of supported `currency` [here](https://docs.google.com/spreadsheets/d/1QxAWGoZMznB6_Ts4mzFcFD49ZOMUZNdNiR6wlr8NDL0/edit?gid=293141391#gid=293141391). Make sure the `currency` enum is supported for the provided `accountId`.
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateBrazilGlobalNetworkOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'invoice_payments' | 'payment_for_services' | 'payment_for_software' | 'payment_for_imported_goods' | 'travel_services' | 'transfer_to_own_account' | 'repayment_of_loans' | 'payroll' | 'payment_of_property_rental' | 'information_service_charges' | 'advertising_and_public_relations' | 'royalty_and_ip_fees' | 'financial_service_fees' | 'advisory_and_consulting_fees' | 'representative_office_expenses' | 'tax_payment' | 'transportation_fees' | 'construction_costs' | 'insurance_premium' | 'offline_goods_trade' | 'insurance_claims' | 'remittance_to_family_or_friends' | 'education_expenses' | 'medical_treatment' | 'donations' | 'mutual_fund_investment' | 'currency_exchange' | 'advance_payment_for_goods' | 'merchant_settlement' | 'repatriation_fund_settlement'
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` BrlOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'brl', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid, required — user who is receiving the fiat
      - `paymentReference` string — a reference message to include when offramping.
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateMexicoGlobalNetworkOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'invoice_payments' | 'payment_for_services' | 'payment_for_software' | 'payment_for_imported_goods' | 'travel_services' | 'transfer_to_own_account' | 'repayment_of_loans' | 'payroll' | 'payment_of_property_rental' | 'information_service_charges' | 'advertising_and_public_relations' | 'royalty_and_ip_fees' | 'financial_service_fees' | 'advisory_and_consulting_fees' | 'representative_office_expenses' | 'tax_payment' | 'transportation_fees' | 'construction_costs' | 'insurance_premium' | 'offline_goods_trade' | 'insurance_claims' | 'remittance_to_family_or_friends' | 'education_expenses' | 'medical_treatment' | 'donations' | 'mutual_fund_investment' | 'currency_exchange' | 'advance_payment_for_goods' | 'merchant_settlement' | 'repatriation_fund_settlement'
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` MxnOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'mxn', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
      - `paymentReference` string — a reference message to include when offramping.
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateNigeriaGlobalNetworkOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'invoice_payments' | 'payment_for_services' | 'payment_for_software' | 'payment_for_imported_goods' | 'travel_services' | 'transfer_to_own_account' | 'repayment_of_loans' | 'payroll' | 'payment_of_property_rental' | 'information_service_charges' | 'advertising_and_public_relations' | 'royalty_and_ip_fees' | 'financial_service_fees' | 'advisory_and_consulting_fees' | 'representative_office_expenses' | 'tax_payment' | 'transportation_fees' | 'construction_costs' | 'insurance_premium' | 'offline_goods_trade' | 'insurance_claims' | 'remittance_to_family_or_friends' | 'education_expenses' | 'medical_treatment' | 'donations' | 'mutual_fund_investment' | 'currency_exchange' | 'advance_payment_for_goods' | 'merchant_settlement' | 'repatriation_fund_settlement'
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` NigeriaOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'ngn', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
      - `paymentReference` string — a reference message to include when offramping.
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateHongKongGlobalNetworkOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'invoice_payments' | 'payment_for_services' | 'payment_for_software' | 'payment_for_imported_goods' | 'travel_services' | 'transfer_to_own_account' | 'repayment_of_loans' | 'payroll' | 'payment_of_property_rental' | 'information_service_charges' | 'advertising_and_public_relations' | 'royalty_and_ip_fees' | 'financial_service_fees' | 'advisory_and_consulting_fees' | 'representative_office_expenses' | 'tax_payment' | 'transportation_fees' | 'construction_costs' | 'insurance_premium' | 'offline_goods_trade' | 'insurance_claims' | 'remittance_to_family_or_friends' | 'education_expenses' | 'medical_treatment' | 'donations' | 'mutual_fund_investment' | 'currency_exchange' | 'advance_payment_for_goods' | 'merchant_settlement' | 'repatriation_fund_settlement'
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` HongKongOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'hkd' | 'usd', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
      - `paymentReference` string — a reference message to include when offramping.
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
  - CreateChinaGlobalNetworkOfframp
    - `requestId` string, required — unique identifier for the request (recommend using uuid v4)
    - `purposeOfPayment` 'invoice_payments' | 'payment_for_services' | 'payment_for_software' | 'payment_for_imported_goods' | 'travel_services' | 'transfer_to_own_account' | 'repayment_of_loans' | 'payroll' | 'payment_of_property_rental' | 'information_service_charges' | 'advertising_and_public_relations' | 'royalty_and_ip_fees' | 'financial_service_fees' | 'advisory_and_consulting_fees' | 'representative_office_expenses' | 'tax_payment' | 'transportation_fees' | 'construction_costs' | 'insurance_premium' | 'offline_goods_trade' | 'insurance_claims' | 'remittance_to_family_or_friends' | 'education_expenses' | 'medical_treatment' | 'donations' | 'mutual_fund_investment' | 'currency_exchange' | 'advance_payment_for_goods' | 'merchant_settlement' | 'repatriation_fund_settlement'
    - `description` string
    - `source` OfframpSource, required
      - `amount` number, float — amount of crypto currency to send
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd', required — crypto currency
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'BASE' | 'TRON', required
      - `userId` string, uuid — user who is sending the crypto, required if the funds are coming from HIFI Wallet
      - `externalWalletId` string, uuid — external wallet id who is sending the crypto, if provided, the offramp will only be processed if the funds are coming from the exact external wallet
      - `returnAddress` string — return address for the offramp, required if the funds are not coming from HIFI Wallet
    - `destination` ChinaOfframpDestination, required
      - `amount` number, float — amount of fiat currency to receive
      - `currency` 'usd' | 'cny', required — fiat currency
      - `accountId` string, uuid, required — account that is receiving the fiat currency
      - `userId` string, uuid — user who is receiving the fiat
      - `paymentReference` string — a reference message to include when offramping.
    - `fee` object, nullable — custom offramp fee, omit if no fee is charged
    - `requireApproval` boolean — Whether this offramp requires approval before processing. - `true`: Offramp will enter approval workflow - `false` or omitted: Offramp proceeds like usual
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.

## Response `200`

Success

- OfframpObject
  - `transferType` string
  - `transferDetails` object
    - `id` string, uuid — unique identifier for the offramp
    - `requestId` string, uuid
    - `orchestrationAddressId` string, uuid, nullable — ID of the orchestration address that produced this offramp, or `null` for offramps created directly via `POST /v2/offramps`. Use this to pivot back to the originating orchestration address — fetch it via `GET /v2/users/{userId}/orchestration-addresses/{orchestrationAddressId}`.
    - `supportingInformation` SupportingInformation — Optional supporting information for the offramp. May include detailed purpose of payment, beneficiary details, and supporting documents. When provided, documents must reference files previously uploaded via the file upload API.
      - `detailedPurposeOfPayment` string — Detailed description of the purpose of the payment.
      - `beneficiaryDetails` SupportingInformationBeneficiaryDetails — Optional beneficiary details for the offramp.
        - `legalEntityName` string
        - `jurisdictionOfIncorporation` string — ISO 3166-1 alpha-3 country code.
        - `natureOfBusiness` string
        - `relationshipToBeneficiary` string
        - `website` string
      - `documents` SupportingInformationDocument[] — Supporting documents (e.g. invoice, contract). Each document must reference an uploaded file by fileId.
        - `fileId` string, uuid, required — Public file ID of an uploaded file.
        - `type` 'INVOICE' | 'CONTRACT' | 'AGREEMENT' | 'PURCHASE_ORDER' | 'OTHER', required — Type of supporting document.
        - `description` string — Optional description of the document.
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `status` 'NOT_INITIATED' | 'CREATED' | 'OPEN_QUOTE' | 'CRYPTO_INITIATED' | 'AWAITING_FUNDS' | 'CRYPTO_PENDING' | 'CRYPTO_PROCESSED' | 'FIAT_INITIATED' | 'FIAT_PENDING' | 'COMPLETED' | 'FIAT_FAILED' | 'CRYPTO_RETURNED' | 'CRYPTO_FAILED' | 'QUOTE_FAILED' | 'IN_REVIEW' | 'CANCELLED' — Refer to [here](https://docs.hifi.com/docs/transfers/offramps#transaction-status) for more details on each offramp status.
    - `failedReason` string
    - `error` string — Error code when the offramp transaction has failed (e.g. `QUOTE_EXPIRED`, `QUOTE_FAILED`, `QUOTE_NOT_AVAILABLE`, `BILLING_CONFIG_NOT_FOUND`, `INSUFFICIENT_BALANCE`, `FAILED_TO_CREATE_PAYMENT`, `INTERNAL_ERROR`, `TRANSACTION_REJECTED`). Present when status is a failed state such as `QUOTE_FAILED` or `CRYPTO_FAILED`.
    - `errorDetails` string — Human-readable error details when the offramp transaction has failed. Present when status is a failed state.
    - `source` object
      - `userId` string, uuid
      - `chain` string
      - `currency` string
      - `amount` number
      - `walletAddress` string
      - `user` object
        - `email` string
        - `lastName` string, nullable
        - `firstName` string, nullable
        - `businessName` string, nullable
    - `destination` object
      - `userId` string, uuid
      - `amount` number
      - `currency` string
      - `user` object
        - `email` string
        - `lastName` string, nullable
        - `firstName` string, nullable
        - `businessName` string, nullable
      - `accountId` string, uuid — destination offramp account ID
      - `sameDayAch` boolean — same day ACH offramp for a $1 additional fee
    - `receipt` object
      - `transactionHash` string, nullable
      - `paymentTracking` OfframpPaymentTrackingObject
        - `fedBatchId` string — Fedwire or ACH batch ID used for settlement tracking
        - `imad` string — Input Messaging Accountability Data. A combination of a date, source identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application. Unique to the payment.
        - `omad` string — Output Messaging Accountability Data. A combination of a date, destination identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application.
        - `traceNumber` string — Unique ACH trace number for the transaction
        - `paymentRail` 'wire' | 'ach' | 'rtp' | 'swift'
    - `developerFee` object
      - `id` string, uuid — unique identifier for the developer fee record
      - `transactionHash` string, nullable — transaction hash of the fee transfer
      - `fees` object[]
        - `type` 'PERCENTAGE' | 'FLAT', required
        - `value` string, required — fee amount as string, for percentage represents decimal (e.g. "0.0005" = 0.05%)
        - `amount` string, required — actual fee amount charged
        - `walletAddress` string, required — wallet address receiving the fee
    - `quoteInformation` object
      - `sendGross` object
        - `amount` string
        - `currency` string
      - `sendNet` object
        - `amount` string
        - `currency` string
      - `receiveGross` object
        - `amount` string
        - `currency` string
      - `receiveNet` object
        - `amount` string
        - `currency` string
      - `rate` string
      - `expiresAt` string, date-time
    - `depositInformation` object[]
      - `id` string, uuid
      - `fromAddress` string
      - `toAddress` string
      - `currency` string
      - `contractAddress` string
      - `rawAmount` string
      - `amount` number
      - `chain` string
      - `collected` boolean
      - `collectable` boolean
      - `expiresAt` string, date-time
      - `transactionHash` string, nullable

## Other responses

- `401` — Unauthorized
- `404` — Resource not found
- `500` — Internal Server Error

---

[API](https://skmtc.net/hifi/apis/hifi-api.md) · [All operations](https://skmtc.net/hifi/apis/hifi-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hifi/hifi-api/revisions/15a39c342fd1/schema)
