Skip to main content
Version: 2.0.0

Introduction

The Outlogic API v2 (RAMP) lets you buy and sell crypto against fiat by bank transfer: on-ramp (the customer pays EUR, CHF or USD and receives crypto) and off-ramp (the customer sends crypto and receives a bank payout to a SEPA, SWIFT or US account).

Moving from v1?

API v2 is not a drop-in replacement for v1: paths, field names, tickers and some flows have changed. Read the migration guide for a field-by-field map.

Base URLs​

EnvironmentBase URL
Productionhttps://api.ramp.outlogic.net
Staginghttps://api-staging.ramp.outlogic.net

Staging is a sandbox: bank payments and crypto transfers there use test networks and never move real money. Use it for all integration testing.

Paths have no version prefix and no trailing slash: GET /assets, not /v1/assets/. A path ending in / returns 404.

Conventions​

  • JSON request and response bodies (Content-Type: application/json) with snake_case field names.
  • No authentication on the endpoints documented here. CORS is open, so you can call them from a browser or a server.
  • Amounts are strings in plain decimal notation ("250.00", "0.00250000"), with at most 8 decimals and never more than the asset has (USDT and USDT-CX have 6). Don't send scientific notation.
  • Timestamps are ISO 8601 (2026-10-23T09:15:00.000Z).
  • Order identifiers: id is the short public token (use it for status and deposit reporting), code is a human-readable reference such as ORD-7KQ2-M9XD (quote it to support), and transfer_code is the bank payment reference.
  • There is no quote step and no locked rate: the trade is priced when the payment arrives.

Assets​

The ticker you send decides the payout network. Read the live list from GET /assets; each entry has a network label naming the address format to use.

TickerNetworkAddress format
ARK-BTCArkadeark1… / tark1…
USDT-CXArkadeark1… / tark1…
CEXTArkadeark1… / tark1…
BTCBitcoin1… / 3… / bc1… (tb1… on staging)
USDTTronT…

Off-ramp deposits must be Arkade transfers, so use ARK-BTC or USDT-CX for off-ramp.

Limits and KYC​

GET /limits returns the minimum order and the KYC threshold, in CHF and per fiat currency. Orders below the minimum are refused with 403. Orders at or above the KYC threshold need a customer who has completed identity verification with ID-Flow, under the same email address you send as email; otherwise they are refused with 403.

On-ramp flow​

  1. POST /onramp with the fiat amount and the customer's crypto address.
  2. Show the customer bank_details. They pay by bank transfer, with transfer_code as the payment reference, before expires_at.
  3. Poll GET /order/{token}. When the payment arrives the trade is priced, crypto_amount is set and the crypto is sent.

Off-ramp flow​

  1. POST /offramp with the crypto amount and the customer's bank details.
  2. Send exactly the returned order.crypto_amount, as an Arkade transfer, to deposit_crypto_address.
  3. Report the transaction with POST /order/{token}/deposit. Until it is reported, the order is not credited automatically.
  4. Poll GET /order/{token}. Once the deposit is credited the payout is priced (fiat_amount) and paid.

Order status​

StatusMeaning
WAITING_FOR_DEPOSITWaiting for the customer's payment.
DEPOSIT_RECEIVEDPayment confirmed. Settlement is starting.
PROCESSINGThe payout is being made.
PENDING_MANUALOur team is reviewing the order before paying out, for example for large amounts. Not a failure: keep polling.
COMPLETEDPaid out. Final.
FAILEDSettlement failed. Contact support with the order code.
EXPIREDNot paid in time. Treat expires_at as the deadline, as this status may not be set automatically.
REJECTEDFinal.
REFUNDEDFinal.

Errors and rate limits​

Errors are {"error": …} with an HTTP status. For most errors the value is a readable string naming the field the request carried. When a request body doesn't match the endpoint's schema, it is an object listing the problems per field.

StatusWhen
400Invalid request: missing or malformed field, unknown ticker or currency, wrong address format for the ticker, invalid IBAN, BIC or ABA number, too many decimals.
403Below the minimum order, or KYC required.
404Unknown order token, or a wrong path (including a trailing /).
409 / 422 / 502Deposit reporting. See POST /order/{token}/deposit.
429Rate limit exceeded. Back off and retry.

POST /onramp, POST /offramp and POST /order/{token}/deposit are limited to 30 requests per minute per client IP. If you create orders from a server on behalf of many customers, all of them count against your server's IP: contact us before launch if you expect to go above this limit.