Skip to main content
One API to move USDC across Tempo, Solana, and Base. Seconds to settle. Cents to send. Compliance checks built into every call. Built for banks, PSPs, and fintechs running payments in APAC.

Three core operations

OperationWhat it doesMethod
AcceptInbound collections — take USDC in from users, merchants, or counterparties on any supported chain. Webhook fires on every confirmed deposit.rem.accept()
TransferInstant settlement between accounts, wallets, and institutions in seconds. REM routes across chains; your app never sees a bridge.rem.transfer()
RedeemFiat off-ramp — redeem USDC to fiat or settle to a destination account. Plug in trusted rails or bring your own.rem.redeem()

Settlement rails

Tempo

Primary · Compliant. The default rail. Compliance-native L1 built for regulated institutions in APAC. Sub-second finality with the guardrails regulators expect.

Solana

L1 · Fast. Sub-second finality, near-zero fees. Used when callers hold Solana USDC or need the deepest liquidity.

Base

L2 · EVM. Used for counterparties already settled on the Coinbase ecosystem. Low fees, high throughput.

Key features

  • Seconds, not days — USDC settles onchain in seconds. No correspondent banks, no SWIFT queues, no T+2.
  • Cents per payment — Send thousands in USDC for a few cents. REM picks the cheapest rail automatically.
  • Signed webhooks — Every accept/transfer/redeem fires a signed (HMAC-SHA256) event. Reactive flows without polling.
  • Compliance built in — KYC, KYB, KYT, and Travel Rule handled in the API. No second vendor to ship.
  • Multi-chain routing — One API call. REM picks the optimal chain based on cost, speed, and the counterparty.
  • Audit trail by default — Every transaction is onchain and queryable. Reporting is already in the shape a regulator wants.

Quickstart

import { REM } from "@rem-money/sdk";

const rem = new REM({ apiKey: process.env.REM_API_KEY });

const deposit = await rem.accept({
  chain: "tempo",
  currency: "USDC",
  amount: "50000",
  reference: "invoice_2026_0041",
});

await rem.transfer({
  from: deposit.walletId,
  to: "wallet_settlement_sg",
  amount: deposit.amount,
});

await rem.redeem({
  walletId: "wallet_settlement_sg",
  currency: "SGD",
  bankAccount: process.env.BANK_ACCOUNT_ID,
});
SDKs: TypeScript, Python (fully typed, autocompletion). Go and REST also available.

Use cases

Cross-border B2B

Replace correspondent banking on the APAC corridor with second-finality USDC settlement.

Merchant collections

Accept USDC at checkout, redeem to local fiat on the same call.

PSP rails

Wholesale USDC routing for licensed PSPs without operating a chain stack.

Treasury operations

Move balances between branches and counterparties intra-day, with full audit.

Custom solutions

Most institutions adopt the API directly, but rollouts often need bespoke engineering work alongside the SDK. REM’s team can extend the Stablecoin API surface to fit your operating model.

Custom ramps

Bespoke fiat on/off-ramps for SGD, HKD, JPY, AUD, and other regional currencies — wired through your licensed banking partners.

Treasury routing

Liquidity logic across branches, counterparties, and chains: rebalancing, sweep rules, and intraday limits scoped to your treasury policy.

BYO-rail integration

Connect REM to a settlement rail you already operate or are licensed for — REM handles the orchestration, you keep the rail.

Reconciliation and reporting

Custom ledger feeds, regulator-ready exports, and back-office integrations into your existing core banking or ERP system.

Scope a custom rollout

Tell us about the corridor, the regulator, and the volume. We’ll come back with a discovery proposal.

View API reference

Full endpoint specs for accept, transfer, redeem, and webhooks.