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.

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

verify on chain (opens in a new tab)

arf.one

no SEP endpoints
no SEP-31
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
attested at ledger 5310866 · 7,138 ledgers (~9 hours) ago
toml sha256 000000000000000000000000…

blindpay.com

no SEP endpoints
no SEP-31
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
attested at ledger 5310856 · 7,148 ledgers (~9 hours) ago
toml sha256 000000000000000000000000…

coins.ph

no SEP endpoints
no SEP-31
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
attested at ledger 5310858 · 7,146 ledgers (~9 hours) ago
toml sha256 000000000000000000000000…

connect.clickpesa.com

no SEP endpoints
no SEP-31
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
attested at ledger 5310857 · 7,147 ledgers (~9 hours) ago
toml sha256 000000000000000000000000…

cowrie.exchange

SEP-1 · SEP-6 · SEP-10 · SEP-12 · SEP-31
serves SEP-31
toml_fetch
passed
sep10_auth
passed
sep38_quote
not probed
sep12_status
passed
sep31_info
passed
sep6_info
not probed
sep6_auth
not probed
attested at ledger 5241150 · 76,854 ledgers (~4 days) ago
toml sha256 11c1c8f721b2ac3742682949…

flutterwave.com

no SEP endpoints
no SEP-31
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
attested at ledger 5310870 · 7,134 ledgers (~9 hours) ago
toml sha256 000000000000000000000000…

lightnet.io

no SEP endpoints
no SEP-31
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
attested at ledger 5310862 · 7,142 ledgers (~9 hours) ago
toml sha256 000000000000000000000000…

lobstr.co

SEP-1
no SEP-31
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
attested at ledger 5310855 · 7,149 ledgers (~9 hours) ago
toml sha256 735fccf14196ac6526d71c1e…

mercuryo.io

no SEP endpoints
no SEP-31
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
attested at ledger 5310861 · 7,143 ledgers (~9 hours) ago
toml sha256 000000000000000000000000…

mint.zeam.money

SEP-1 · SEP-10 · SEP-12 · SEP-24 · SEP-31 · SEP-38
serves SEP-31
toml_fetch
passed
sep10_auth
passed
sep38_quote
passed
sep12_status
passed
sep31_info
passed
sep6_info
not probed
sep6_auth
not probed
attested at ledger 5310853 · 7,151 ledgers (~9 hours) ago
toml sha256 92a309791b0eefff07c1e2e5…

owlting.com

no SEP endpoints
no SEP-31
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
attested at ledger 5310865 · 7,139 ledgers (~9 hours) ago
toml sha256 000000000000000000000000…

stellar-sep-24.banxa.com

no SEP endpoints
no SEP-31
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
attested at ledger 5310867 · 7,137 ledgers (~9 hours) ago
toml sha256 000000000000000000000000…

stellar.moneygram.com

SEP-1 · SEP-10 · SEP-24
no SEP-31
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
attested at ledger 5310860 · 7,144 ledgers (~9 hours) ago
toml sha256 86ec31fec64b57aab647810a…

stellar.org

SEP-1
no SEP-31
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
attested at ledger 5310854 · 7,150 ledgers (~9 hours) 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_fetch
passed
sep10_auth
passed
sep38_quote
passed
sep12_status
passed
sep31_info
failed
sep6_info
not probed
sep6_auth
not probed
attested at ledger 5241149 · 76,855 ledgers (~4 days) ago
toml sha256 d916b599158a655041b22008…

vibrantapp.com

SEP-1
no SEP-31
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
attested at ledger 5310859 · 7,145 ledgers (~9 hours) ago
toml sha256 1b2357e6190600029121657e…

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

Liveness tiers & evidence requirements

proven

End-to-end payment completed through this lane within proof TTL.

Evidence: On-chain transaction hash and completed timestamp in manifest proof block.
verified

Endpoints checked against anchor's published stellar.toml or running instance.

Evidence: endpoints_verified_at ISO date confirmed and recorded on destination anchor.
unverified

Endpoints configured but unconfirmed against published anchor records.

Evidence: Uninspected endpoints; honest default before manual or automated verification.
not runnable

Required endpoints are missing; corridor cannot execute settlement.

Evidence: Missing transfer server or required service endpoints in manifest.

reference-testnet

USDtoUSDCtoUSD
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.

mx-example

USDtoUSDCtoMXN
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.

ng-cowrie

USDtoUSDCtoNGN
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-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

NGNtoUSDCtoCNY
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.