Appearance
Money on rails
Every amount on the exchange (an invoice, an escrow, a payout, a driver's advance) is first a record of what the business agreed. When money actually moves, it moves on a rail, and the exchange records the movement as a transfer. The business record only changes once its transfer is final, so nothing is marked paid on the strength of a reference somebody typed.
Being released
The money rails described here are built and tested, and are being rolled out. Until a rail is switched on for the exchange, invoices are paid by bank transfer or mobile money and recorded by Finance, as today.
The rails
| Rail | Currencies | Money in | Money out |
|---|---|---|---|
| Stellar | USDC, USDT | A payment to the exchange's account, matched by its memo | A payment signed by two keys, after two approvals |
| Celo | USDC, USDT | A call to the exchange's AgriEscrow contract, naming the invoice or escrow | Escrow release or refund, made by the contract on the second of two approver keys |
| M-Pesa, Airtel, card | KES (card: USD if enabled) | A prompt on the payer's phone, or Mamlaka's hosted card page | B2C to a phone, after two approvals |
| Driver virtual cards | USD on the card, paid from a KES float | A card issued or loaded for a trip, after two approvals |
What can be paid on which rail
A rail carries only a currency it settles. The exchange does not convert between currencies. So:
| The record is in | It can be paid on |
|---|---|
| USDC or USDT | Stellar or Celo |
| KES | M-Pesa, Airtel or card |
| Any other currency (NGN, UGX, …) | Recorded by Finance as money already received (bank transfer, cash) |
| What | In | Out |
|---|---|---|
| An order invoice | Buyer pays: any rail for its currency | |
| Escrow | Buyer funds it: Stellar, Celo, M-Pesa, Airtel or card | Released to the seller or refunded to the buyer on the rail it came in on |
| A farmer's early payout, and its balance | Stellar, M-Pesa or Airtel | |
| A transporter's freight invoice | Stellar, M-Pesa or Airtel | |
| A driver's advance for the road | M-Pesa or Airtel to the driver, Stellar to the transporter, or a virtual card load |
A transfer's life
| Status | Meaning |
|---|---|
| Awaiting | Money in: waiting for the payer. Money out: waiting for approvals. |
| Pending | Sent to the provider; the answer is not in yet. |
| Unknown | The provider did not answer clearly (a timeout, an error). The money is held and the exchange keeps asking. Never refunded on a guess. |
| Confirmed | The provider says the money moved. What it was for is written now. |
| Failed | The provider refused it, or Finance cancelled it before it was sent. |
| Expired | A payment request nobody paid. |
Money that arrives and matches nothing (a wrong memo, the wrong coin, the wrong amount for an escrow) is still recorded, as a transfer marked not applied with the reason, so Finance can return it or apply it by hand. It is never lost silently.
Read on: The rules every rail keeps.