> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ripio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Off-Ramp Order

> Initiates a single crypto-to-fiat off-ramp transaction based on a previously obtained quote and the customer's destination fiat account. Returns the transaction id and the crypto deposit address the customer must send funds to. The order executes automatically once the crypto deposit is confirmed. Use this for one-off withdrawals; to reuse a destination account across many spontaneous deposits, create an Off-Ramp Session instead.



## OpenAPI

````yaml ramps-api/openapi.json POST /api/v1/offramp/
openapi: 3.1.0
info:
  title: Ripio Ramp API
  version: v1
  description: >-
    API for Ripio ramp services, enabling partners to integrate On-Ramp,
    Off-Ramp, customer management, KYC processes, and other financial
    functionalities. This API is RESTful, uses JSON for requests and responses,
    and standard HTTP status codes. This document is based on the
    'onramp-api.pdf' provided and aims to be compliant with OpenAPI
    Specification v3.1.0. The PDF indicates that the API documentation is a
    draft and subject to change.
servers:
  - url: https://skala-sandbox.ripio.com
    description: Sandbox environment
  - url: https://skala.ripio.com
    description: Production environment
security:
  - BearerToken: []
tags:
  - name: Authentication
    description: Operations related to API authentication and authorization.
  - name: Support Tickets
    description: >-
      Operations for raising and tracking customer support tickets with Ripio's
      support team. This feature must be enabled for your account by the Ripio
      team.
  - name: Customers
    description: Operations related to customer management.
  - name: KYC
    description: Operations related to Know Your Customer processes.
  - name: Fiat Accounts
    description: Operations related to managing fiat accounts and their requirements.
  - name: Quotes
    description: Operations related to obtaining and managing conversion quotes.
  - name: On-Ramp
    description: Operations related to fiat-to-crypto (on-ramp) processes.
  - name: Off-Ramp
    description: Operations related to crypto-to-fiat (off-ramp) processes.
  - name: Transactions
    description: Operations related to listing and managing all transaction types.
  - name: Networks
    description: >-
      Operations related to retrieving available deposit and withdrawal
      networks.
  - name: Rates
    description: Operations related to retrieving market rates.
  - name: Transaction Limits
    description: >-
      Operations related to retrieving per-transaction limits by currency and
      ramp operation.
  - name: Sandbox
    description: Operations specific to the sandbox environment for testing purposes.
  - name: Webhooks
    description: Webhook event notifications from Ripio Ramp API.
  - name: Sell and Pay
    description: >-
      Endpoints for managing Sell and Pay transactions, which allow customers to
      convert cryptocurrency to fiat currency and pay merchants via QR codes
paths:
  /api/v1/offramp/:
    post:
      tags:
        - Off-Ramp
      summary: Create Off-Ramp Order
      description: >-
        Initiates a single crypto-to-fiat off-ramp transaction based on a
        previously obtained quote and the customer's destination fiat account.
        Returns the transaction id and the crypto deposit address the customer
        must send funds to. The order executes automatically once the crypto
        deposit is confirmed. Use this for one-off withdrawals; to reuse a
        destination account across many spontaneous deposits, create an Off-Ramp
        Session instead.
      operationId: createOffRampOrder
      requestBody:
        required: true
        description: Details for creating an off-ramp order.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OffRampOrderCreationRequest'
      responses:
        '201':
          description: Off-Ramp order created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OffRampOrderCreationResponse'
        '400':
          description: >-
            Bad Request - e.g., invalid quoteId, customerId, or fiatAccountId;
            or a payment method that is not available for off-ramp.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - Invalid or missing access token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: 40001
                type: NotAuthenticated
                detail:
                  message: Authentication credentials were not provided.
                  code: not_authenticated
                status: 401
        '404':
          description: >-
            Not Found - e.g., Customer not found or inactive, Quote not found,
            or External Fiat Account not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: 40004
                type: NotFound
                detail:
                  message: Not found.
                  code: not_found
                status: 404
components:
  schemas:
    OffRampOrderCreationRequest:
      type: object
      properties:
        customerId:
          type: string
          format: uuid
          description: Unique identifier for the customer.
          example: b6cecc1f-c90d-424b-adaa-c82b780696c1
        quoteId:
          type: string
          format: uuid
          description: >-
            Unique identifier for the off-ramp quote obtained from the Quoting
            Endpoint.
          example: 8142b065-79c4-4f48-9e33-11b17bc658d4
        fiatAccountId:
          type: string
          format: uuid
          description: >-
            Unique identifier for the customer's destination fiat account (the
            external fiat account that will receive the payout). It must be
            `ENABLED`.
          example: fca6d32f-2f7e-4f7e-b224-8be0b92fa3f1
        externalRef:
          type: string
          format: uuid
          description: >-
            Unique identifier for the order that is being created, provided by
            the partner. Used for idempotency.
          example: e6c4f1ec-899f-43b5-8479-c2529e3f9c70
        refundAddress:
          type: string
          description: >-
            On-chain address to return the crypto to if the order fails.
            Required only when the account is configured to refund to an
            explicit address (not to the on-chain origin).
          example: '0x4e88BBeFF059BDDF5BF90ee0816E86eDf4214b32'
        metadata:
          type: object
          additionalProperties: true
          description: Optional partner-defined metadata to attach to the order.
      required:
        - customerId
        - quoteId
        - fiatAccountId
        - externalRef
    OffRampOrderCreationResponse:
      type: object
      properties:
        transactionId:
          type: string
          format: uuid
          description: Unique identifier for the created off-ramp order.
        createdAt:
          type: string
          format: date-time
          description: Date and time the off-ramp order was created.
        depositAddress:
          allOf:
            - $ref: '#/components/schemas/OffRampDepositAddressItem'
          description: >-
            The crypto deposit address the customer must send funds to. Once the
            deposit is confirmed, the order executes automatically.
        refundAddress:
          type:
            - string
            - 'null'
          description: The effective on-chain refund address for this order, if any.
      required:
        - transactionId
        - createdAt
        - depositAddress
    ErrorResponse:
      type: object
      properties:
        code:
          type: integer
          description: Application-specific error code.
        type:
          type: string
          description: Type of error or exception.
        detail:
          type: object
          properties:
            message:
              type: string
              description: Detailed error message.
          additionalProperties: true
        status:
          type: integer
          description: HTTP status code.
      required:
        - code
        - type
        - detail
        - status
    OffRampDepositAddressItem:
      type: object
      properties:
        chain:
          type: string
          description: The cryptocurrency blockchain for the deposit address.
          example: ETHEREUM
        address:
          type: string
          description: The deposit address for the corresponding blockchain.
          example: '0x1234567890AbCdEf1234567890AbCdEf1234567890'
      required:
        - chain
        - address
  securitySchemes:
    BearerToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Access token obtained via
        [/oauth2/token/](/ramps-api/authentication/acquire-access-token). Use as
        `Authorization: Bearer <access_token>`.

````