corridor-in-a-box
Open SEP-31 corridor engine

A corridor is configuration, not code.

A manifest-driven engine for Stellar SEP-31 cross-border corridors. It runs quote → comply → settle → reconcile → recover over any standards-compliant anchor pair — adding a corridor is a new YAML file, not a fork.

Idempotent & resumable

A persisted state machine with crash-resume and a real refund/hold recovery path. The same key never settles twice.

Standards-native

One adapter for any SEP-31 anchor — SEP-38 quotes, SEP-10 auth, SEP-12 KYC — and a chain-isolated native settle leg.

Operable

Structured logs, an append-only audit trail, metrics hooks, KMS-ready signing, and a thin HTTP API.

Attested anchors

Read live from the on-chain registry. Each card separates what an anchor's stellar.toml advertises from what actually worked when it was probed — because those are different claims, and treating them as one is how a lane that does not exist comes to look healthy.

verify on chain
cowrie.exchange
SEP-1 · SEP-6 · SEP-10 · SEP-12 · SEP-31
serves SEP-31
toml_fetchpassed
sep10_authpassed
sep38_quotenot probed
sep12_statuspassed
sep31_infopassed
attested at ledger 4364976 · 16,212 ledgers ago
toml sha256 11c1c8f721b2ac3742682949
lobstr.co
SEP-1
no SEP-31
toml_fetchpassed
sep10_authnot probed
sep38_quotenot probed
sep12_statusnot probed
sep31_infonot probed
attested at ledger 4364978 · 16,210 ledgers ago
toml sha256 735fccf14196ac6526d71c1e
stellar.org
SEP-1
no SEP-31
toml_fetchpassed
sep10_authnot probed
sep38_quotenot probed
sep12_statusnot probed
sep31_infonot probed
attested at ledger 4364977 · 16,211 ledgers ago
toml sha256 241da0afd3e5f13d3b1748f1
testanchor.stellar.org
SEP-1 · SEP-6 · SEP-10 · SEP-12 · SEP-24 · SEP-31 · SEP-38
no SEP-31
toml_fetchpassed
sep10_authpassed
sep38_quotepassed
sep12_statuspassed
sep31_infofailed
attested at ledger 4364975 · 16,213 ledgers ago
toml sha256 d916b599158a655041b22008

Corridors

The binding constraint is a live receiving anchor, not code. A corridor only shows verified once its endpoints have been confirmed against the anchor's published stellar.toml 1 of 4 has been.

Manifest snapshot — not a live liveness probe
reference-testnet
USDUSDCUSD
unverified
Source
Local Sending Anchor
Destination
Anchor Platform Reference
Bridge
USDC · testnet
Risk
receiving_anchor

Anchor Platform reference server on testnet. Run it yourself, no agreements.

Run a payment
mx-example
USDUSDCMXN
unverified
Source
USD Sending Anchor
Destination
Mexico Off-Ramp (example — not a real anchor)
Bridge
USDC · public
Risk
receiving_anchor

TEMPLATE — endpoints are fictional placeholders. No anchor relationship exists. Not runnable.

Run a payment
ng-cowrie
USDUSDCNGN
verified
Source
USD Sending Anchor
Destination
Cowrie Exchange (Nigeria)
Bridge
USDC · public
Risk
receiving_anchor

REAL — Cowrie Exchange (Lagos, Nigeria), issuer of NGNT. Confirmed 2026-08-11 by @corridor/probe against the anchor's live production API: SEP-10 challenge signed and exchanged for a JWT, SEP-12 answered, and SEP-31 GET /info returned a non-empty receive list (NGNT, USDC). No SEP-38 quote server is published, so pricing is off-protocol (quote_source=external) — this corridor cannot get a firm on-chain quote today. No payment has been attempted; a real settlement still needs a KYC'd business relationship with Cowrie, which this repo does not have.

Run a payment
ng-cn
NGNUSDCCNY
not runnable
Source
Nigeria On-Ramp (cNGN/Cowrie-class)
Destination
China RMB Off-Ramp (does not exist yet)
Bridge
USDC · public
Risk
sending_anchor

PENDING — no compliant RMB SEP-31 off-ramp exists yet. dest endpoints unfilled.

Run a payment