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).
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
| Environment | Base URL |
|---|---|
| Production | https://api.ramp.outlogic.net |
| Staging | https://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 (USDTandUSDT-CXhave 6). Don't send scientific notation. - Timestamps are ISO 8601 (
2026-10-23T09:15:00.000Z). - Order identifiers:
idis the short public token (use it for status and deposit reporting),codeis a human-readable reference such asORD-7KQ2-M9XD(quote it to support), andtransfer_codeis 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.
| Ticker | Network | Address format |
|---|---|---|
ARK-BTC | Arkade | ark1… / tark1… |
USDT-CX | Arkade | ark1… / tark1… |
CEXT | Arkade | ark1… / tark1… |
BTC | Bitcoin | 1… / 3… / bc1… (tb1… on staging) |
USDT | Tron | T… |
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
POST /onrampwith the fiat amount and the customer's crypto address.- Show the customer
bank_details. They pay by bank transfer, withtransfer_codeas the payment reference, beforeexpires_at. - Poll
GET /order/{token}. When the payment arrives the trade is priced,crypto_amountis set and the crypto is sent.
Off-ramp flow
POST /offrampwith the crypto amount and the customer's bank details.- Send exactly the returned
order.crypto_amount, as an Arkade transfer, todeposit_crypto_address. - Report the transaction with
POST /order/{token}/deposit. Until it is reported, the order is not credited automatically. - Poll
GET /order/{token}. Once the deposit is credited the payout is priced (fiat_amount) and paid.
Order status
| Status | Meaning |
|---|---|
WAITING_FOR_DEPOSIT | Waiting for the customer's payment. |
DEPOSIT_RECEIVED | Payment confirmed. Settlement is starting. |
PROCESSING | The payout is being made. |
PENDING_MANUAL | Our team is reviewing the order before paying out, for example for large amounts. Not a failure: keep polling. |
COMPLETED | Paid out. Final. |
FAILED | Settlement failed. Contact support with the order code. |
EXPIRED | Not paid in time. Treat expires_at as the deadline, as this status may not be set automatically. |
REJECTED | Final. |
REFUNDED | Final. |
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.
| Status | When |
|---|---|
400 | Invalid request: missing or malformed field, unknown ticker or currency, wrong address format for the ticker, invalid IBAN, BIC or ABA number, too many decimals. |
403 | Below the minimum order, or KYC required. |
404 | Unknown order token, or a wrong path (including a trailing /). |
409 / 422 / 502 | Deposit reporting. See POST /order/{token}/deposit. |
429 | Rate 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.