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.
What it does
Idempotent & resumable
A persisted state machine with crash-resume and fail-closed recovery: a payment that cannot complete is parked as held for a human. Nothing is ever re-sent. 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 from the on-chain registry; each card shows the attestation ledger and how long ago that was. 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.
Read from testnet registry at · ledger 5,318,004 · refreshes every 1 hour
arf.one
- toml_fetch
- failed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
blindpay.com
- toml_fetch
- failed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
coins.ph
- toml_fetch
- failed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
connect.clickpesa.com
- toml_fetch
- failed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
cowrie.exchange
- toml_fetch
- passed
- sep10_auth
- passed
- sep38_quote
- not probed
- sep12_status
- passed
- sep31_info
- passed
- sep6_info
- not probed
- sep6_auth
- not probed
flutterwave.com
- toml_fetch
- failed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
lightnet.io
- toml_fetch
- failed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
lobstr.co
- toml_fetch
- passed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
mercuryo.io
- toml_fetch
- failed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
mint.zeam.money
- toml_fetch
- passed
- sep10_auth
- passed
- sep38_quote
- passed
- sep12_status
- passed
- sep31_info
- passed
- sep6_info
- not probed
- sep6_auth
- not probed
owlting.com
- toml_fetch
- failed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
stellar-sep-24.banxa.com
- toml_fetch
- failed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
stellar.moneygram.com
- toml_fetch
- passed
- sep10_auth
- failed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
stellar.org
- toml_fetch
- passed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
testanchor.stellar.org
- toml_fetch
- passed
- sep10_auth
- passed
- sep38_quote
- passed
- sep12_status
- passed
- sep31_info
- failed
- sep6_info
- not probed
- sep6_auth
- not probed
vibrantapp.com
- toml_fetch
- passed
- sep10_auth
- not probed
- sep38_quote
- not probed
- sep12_status
- not probed
- sep31_info
- not probed
- sep6_info
- not probed
- sep6_auth
- not probed
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.
Liveness tiers & evidence requirements
End-to-end payment completed through this lane within proof TTL.
Endpoints checked against anchor's published stellar.toml or running instance.
Endpoints configured but unconfirmed against published anchor records.
Required endpoints are missing; corridor cannot execute settlement.
reference-testnet
- 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.
mx-example
- 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.
ng-cowrie
- Source
- USD Sending Anchor
- Destination
- Cowrie Exchange (Nigeria)
- Bridge
- USDC · public
- Risk
- receiving_anchor
REAL — Cowrie Exchange (Lagos, Nigeria), issuer of NGNT. Confirmed 2026-10-17 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.
ng-cn
- 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.