The Visibility Gap
A Soroban contract cannot see a bank account. That single limitation is the reason MACH exists, and everything in this specification is downstream of it.
The gap, stated precisely
When a buyer wires funds against a tokenised invoice, two things are true at the same time:
- The obligation has been economically satisfied. The money has moved.
- The ledger has no way to know it. No contract can observe a credit posting inside a commercial bank.
Nothing in the Stellar protocol closes that distance. Contracts are deterministic and sandboxed: they cannot open a socket, poll an API, or read a bank statement. So the fact has to be carried across the boundary by something else.
Today that something else is a person.
What the manual path costs
The status quo for RWA lending on Stellar is a human reconciliation loop:
| Stage | Typical elapsed |
|---|---|
| Buyer wires funds | 0 |
| Funds land, bank statement updates | 0 to 24 hours |
| An operations analyst reconciles the credit against the invoice | 24 to 60 hours |
| Lender is notified, collateral released by manual instruction | 60 to 72 hours |
| Position closes | ~72 hours |
Three consequences follow, and all three are operational rather than theoretical:
- A window of counterparty risk. For three days the lender holds an obligation that has been paid but not released. That exposure has to be reserved against.
- A fixed cost per settlement. Reconciliation costs roughly the same whether the invoice is for $40,000 or $40 million. That fixed cost sets a floor on viable deal size.
- Discretionary trust. A person decides when settlement happens. That is precisely the trust that moving on-chain was meant to remove.
Self-liquidating invoices
A self-liquidating invoice is the construct MACH is built to support. It is an instrument that:
- Is issued on-chain against a specific receivable, with terms encoded in a contract.
- Receives payment through a rail bound to that instrument and no other.
- Discharges itself the moment payment is verified, releasing collateral, paying the lender, and closing the position with no administrator in the loop.
The distinction from most tokenised real-world assets is step three. A typical RWA token is a claim on an off-chain process, and redeeming it means contacting an administrator. A self-liquidating invoice is not a record of settlement; the contract is settlement.
The barrier has never been the contract. Soroban can express the logic. The barrier is that the contract cannot see the payment.
T+0 Settlement Finality
MACH's core property is T+0 Settlement Finality: the invoice discharges in the same ledger close as the verified payment notification, rather than on the next business day or after a reconciliation cycle.
The same $250,000 receivable, settled through MACH:
| Elapsed | Event |
|---|---|
| 0s | Buyer wires funds to the invoice's virtual account. |
| ~0s | Anchor observes the credit and fires a signed on_change_callback. |
| < 1s | MACH validates the anchor signature against its SEP-1 SIGNING_KEY. |
| ~5s | Soroban executes execute_settlement; collateral releases atomically. |
| ~5s | Position closes. |
Compressing settlement from 72 hours to one ledger close is not simply the same process running faster. It removes the fixed per-settlement cost that made small facilities uneconomic, which is what changes the range of invoices that can be financed at all.
What T+0 actually requires
For that latency to be real rather than aspirational, three properties must hold. The rest of this specification is about making each one true.
| Property | Requirement | Where it is addressed |
|---|---|---|
| Attributable | A notification must be provably from the regulated anchor, not from anyone who can reach an HTTP endpoint. | The Role of the Oracle |
| Unambiguous | A credit must map to exactly one invoice, with no reconciliation heuristics. | The SEP Stack |
| Atomic | Verification and settlement cannot be separated by a window in which partial state exists. | Protocol Architecture |
The next page explains why an oracle is the right primitive for the first property, and why the oracles the ecosystem already has are the wrong kind.