Ask for an invitation
Menu

Taking payments

Networks and assets

A business has one wallet on each of eleven networks. This page says what a payer can send on each, by which rail, how many confirmations an order waits for, and what you can settle in. GET /v1/assets gives the same matrix to a program.

The matrix

Table: The matrix
NetworkA payer can sendRouted by RelayStraight to your wallet
EthereumETH, USDT, USDCETH, USDT, USDCETH, USDT, USDC
BNB Smart ChainBNB, USDT, USDCBNB, USDT, USDCBNB, USDT, USDC
PolygonUSDT, USDC, POLUSDT, USDCUSDT, USDC, POL
ArbitrumETH, USDT, USDCETH, USDT, USDCETH, USDT, USDC
OptimismETH, USDT, USDCETH, USDT, USDCETH, USDT, USDC
BaseETH, USDCETH, USDCETH, USDC
SolanaSOL, USDTSOL, USDTSOL, USDT, once the wallet is activated
TRONUSDT, TRXUSDTUSDT, TRX, once the wallet is activated
BitcoinBTCBTCBTC
LitecoinLTCNoneLTC
DogecoinDOGENoneDOGE

This table is the release's catalogue. What can be paid at this moment can be less: Orrerie can switch a network or an asset off for a while, and this page does not change when it does. The live answer is GET /v1/assets: an asset switched off there has every rail of its pay set to false.

Pay with Orrerie is offered when you settle in a token (USDC or USDT) on a network Relay delivers to: the payer pays from a balance in the Orrerie app that can reach it (the same token on the same network as a plain send, a coin or token of the six EVM networks routed by Relay), and your wallet receives your settlement asset. LTC, DOGE, POL and TRX balances have no route to your wallet in the app. For now, a business that keeps what was paid, or settles in a network's own coin, gets no Pay with Orrerie button; its payers use the ways in the table.

What can be paid at launch

The live answer is GET /v1/assets, which also says when an asset is switched off for a while. Read it from your server if your own page lists ways to pay.

Confirmations

An order is paid only when the payment has this many confirmations on its network. The asset object carries the same counts in confirmations.

Table: Confirmations
NetworkConfirmations before an order is paid
Ethereum12 blocks, about 2.5 minutes
BNB Smart Chain15 blocks, about 7 seconds
Polygon64 blocks, about 2 minutes
Arbitrum20 blocks and at least 60 seconds
Optimism20 blocks and at least 60 seconds
Base20 blocks and at least 60 seconds
Solana32 blocks, the finalized commitment, about 13 seconds
TRON19 blocks, about 1 minute
Bitcoin1 up to US$1,000; 2 up to US$10,000; 6 above
Litecoin3 up to US$1,000; 6 above
Dogecoin6 up to US$1,000; 20 above

"Up to" is by the value of the order when it was created, or by the value of what was sent when that is larger: a payment far above its order waits the count of its own value. Above US$10,000 an order on Ethereum also waits for the network's finalized block, and one on Arbitrum, Optimism or Base for its batch on Ethereum.

The three rails

Table: The three rails
railWhat the payer doesWhere the money goes
orrerie_appApproves once in the Orrerie app. No address is shown.From the payer's wallet to your wallet, in your settlement asset.
relaySends to an address made for this one order.Relay, a separate company, receives it and delivers your settlement asset to your wallet.
directSends to your wallet's own address.Straight to your wallet, in the asset that was sent.

The rail is chosen when the payer picks an asset, and it is written on the payment instruction. If Relay does not answer or refuses, the payer is told why and chooses again. Nothing switches rail by itself. The hosted checkout shows what the payer sees on each.

Minimum order

An order paid on the relay rail must be worth at least US$1.00, so that the routing cost is a small share of it. On the direct rail the minimum is US$0.10 on the account networks. On Bitcoin, Litecoin and Dogecoin it is an amount of the coin, twenty times the smallest amount the network moves, because a network refuses amounts that are too small to move.

Table: Minimum order
NetworkRouted by RelayStraight to your wallet
EthereumUS$1.00US$0.10
BNB Smart ChainUS$1.00US$0.10
PolygonUS$1.00US$0.10
ArbitrumUS$1.00US$0.10
OptimismUS$1.00US$0.10
BaseUS$1.00US$0.10
SolanaUS$1.00US$0.10
TRONUS$1.00US$0.10
BitcoinUS$1.000.0000588 BTC
LitecoinNone0.000588 LTC
DogecoinNone0.2 DOGE

Each asset's entry carries its minimums in minimum_order, in US dollars: relay and direct, each null when that rail does not take the asset. On Bitcoin, Litecoin and Dogecoin the rule is the coin amount in this table; minimum_order.direct there is that amount at today's price, rounded up, and null while there is no price.

Read the matrix from the API

curl

curl https://api.orrerie.com/v1/assets \
  -H "Authorization: Bearer $ORRERIE_SECRET_KEY"

JavaScript

const response = await fetch("https://api.orrerie.com/v1/assets", {
  headers: {
    Authorization: `Bearer ${process.env.ORRERIE_SECRET_KEY}`,
  },
});
const result = await response.json();
if (!response.ok) throw new Error(`${result.error.code}: ${result.error.message}`);
console.log(result);

Python

import os
import requests

response = requests.get(
    "https://api.orrerie.com/v1/assets",
    headers={"Authorization": f"Bearer {os.environ['ORRERIE_SECRET_KEY']}"},
    timeout=30,
)
result = response.json()
if not response.ok:
    raise RuntimeError(f"{result['error']['code']}: {result['error']['message']}")
print(result)

PHP

<?php
$request = curl_init('https://api.orrerie.com/v1/assets');
curl_setopt_array($request, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . getenv('ORRERIE_SECRET_KEY'),
    ],
]);
$body = curl_exec($request);
if ($body === false) {
    throw new RuntimeException(curl_error($request));
}
$result = json_decode($body, true);
if (curl_getinfo($request, CURLINFO_HTTP_CODE) >= 400) {
    throw new RuntimeException($result['error']['code'] . ': ' . $result['error']['message']);
}
print_r($result);

Each entry is an asset. An asset id is written <network>:<symbol>, for example base:usdc. pay says which rails take it, settle whether it can be a settlement asset, confirmations the counts above, and minimum_order the minimums in US dollars. The call works with any key, a publishable key included.

Settlement assets

You choose what your takings arrive as. On the relay and orrerie_app rails the payer can send something else and you still receive your choice.

  • USDC on Base is the recommended default: sending it on costs the least.
  • USDT or USDC on Ethereum, BNB Smart Chain, Polygon, Arbitrum or Optimism.
  • USDT on Solana, or USDT on TRON, once that wallet is activated (activating TRON costs 100 TRX: see before activation).
  • Keep what was paid: no conversion. The payer's asset arrives in your wallet on the payer's network.

Litecoin and Dogecoin takings always stay as LTC and DOGE until you convert them, because Relay has no route for either.

Solana and TRON before activation

A Solana or TRON wallet starts as Not activated. Until a member activates it in the dashboard its address is not shown (address is null in the API), it cannot be a settlement wallet and it takes no direct payment. A call that would use it is refused with wallet_not_activated. A payer can still send SOL or USDT on those networks by the relay rail when you settle on another network, up to a small cap: a routed payment that cannot be delivered is returned to your wallet on the payer's network, and that wallet is behind one key until it is activated. Activate the wallet to lift the cap.

Activating has a cost, which the dashboard shows before you approve:

  • Solana: a fraction of a US dollar in SOL, paid by your Solana fee account.
  • TRON: 100 TRX plus about 1 TRX, which TRON charges to the wallet itself. The TRX is first sent to the wallet's own address and spent there in the same step, so it never rests in a wallet behind one key.

After activation, each send from your TRON wallet costs 1 TRX plus energy (about 30 TRX a USDT send without rented energy), again paid by the wallet itself in TRX you hold there.

What can be lost

An address is for one asset on one network. The checkout says so above every address: "Send only" the asset "on" the network. "Anything else sent to this address can be lost for good." A token that Relay does not route, sent to a Relay address, cannot be recovered through normal processes.

What a payment costs

  • Orrerie's own fee is 0% at launch.
  • On the relay rail, Relay, a separate company, charges a routing fee that includes the network cost; by default it is added to the payer's amount and shown before they pay, and you receive the price in full.
  • You can choose to absorb it instead (fee_bearer: merchant), in which case an order is paid when at least 98% of the price arrives.
  • A route whose fee is above your cap (3% or US$25 unless you change it) is refused with rail_unavailable, whose reason is route_fee_over_cap, and the payer is asked to choose another asset.
  • On the direct rail the payer pays only their own network fee.
  • Sending money out costs the network's fee: see Money out.

The same in brief, without code: The eleven networks and their coins.