The pay-by-mail flow
- The buyer clicks the Coin Moebius button on your site and picks "Pay by mail" in the picker. They see a preview first: your mailing address, the amount due, and any instructions you set, with a <strong>"Confirm, I'll send payment"</strong> button. Nothing is recorded yet, and there is no reference code at this stage.
- The buyer clicks "Confirm, I'll send payment." That is the step that creates the transaction: Coin Moebius generates a unique reference code like
X2M-K9P-R7QWand shows it alongside your mailing address. The buyer puts the reference code inside the package or on the check. - Once they confirm, a row appears in your dashboard's Transactions tab with status
pending_manual. The top of the list also shows a callout reminding you that mailed-payment confirmations are waiting. - When the buyer's payment arrives in your mailbox (cash, check, Goldback, whatever the expected currency was), type the reference code into the search box on the Transactions tab to find the matching row. Click Mark received. The buyer's success URL is fired (so they get a confirmation page), and you proceed to ship whatever they bought.
- If the buyer's payment never arrives, the row auto-expires after 30 days. You can also Cancel a row manually before that.
- If you confirmed receipt but later discover the payment was invalid (counterfeit, wrong item, empty envelope), click Undo confirmation on the row. The status changes to
manual_revoked. This corrects your records in the dashboard. Communicating with the buyer about what happened next is between you and them.
Testing pay-by-mail
Pay-by-mail has no sandbox, no test keys, and no external account to configure. The entire flow happens between your site and your dashboard. There are two ways to test it: the full round trip from a buy button on a page, or a quick test straight from the dashboard.
Quick test from the dashboard
The dashboard can create a test transaction for any provider without involving a real payment. This is useful for seeing what a transaction row looks like, practicing the "Mark received" flow for pay-by-mail, or previewing how a crypto payment appears in your list before spending real money.
- Open the Transactions tab on your project and click Send a test event.
- Pick a product, choose what happened (payment, refund, pay-by-mail, subscription renewal), and pick the provider you want to simulate (Stripe, NOWPayments, or Pay by mail). For pay-by-mail events, the provider is set automatically.
- Click Send test event. A new row appears tagged "test" so it doesn't mix with live data. The row shows up under the correct provider filter, just like a real transaction would.
For pay-by-mail specifically, choose "A pay-by-mail order is waiting" to create a pending_manual row with a real reference code. You can then practice clicking "Mark received," "Cancel," and "Undo confirmation" on it.
Test events don't count toward your monthly transaction quota.
Full round trip from a buy button
To test the complete flow (what your buyer sees through what you see), walk through these steps. The whole thing takes about two minutes.
- Set up the provider. In your dashboard, go to your project's Providers tab and click "Add provider" → Pay by mail. Enter any mailing address (your own is fine for testing) and any currency (e.g.,
USD,GBK). Save. - Add a product. In the Products tab, create a product with a name like "Test item" and a price. Set the currency to match what you entered for the provider.
- Put the buy button on a page. Paste the buy button HTML on any page, even a bare HTML file on your computer. Point the
endpointattribute at your Cloud project URL. If you're running the worker locally, usehttp://localhost:8787instead. - Click the button and pick "Pay by mail." The picker opens showing every provider you've connected. Pick "Pay by mail." You'll see a preview with your mailing address, the expected amount and currency, and a "Confirm, I'll send payment" button. No reference code yet.
- Click "Confirm, I'll send payment." This is the buyer committing to send payment. Coin Moebius records the transaction and shows a reference code like
X2M-K9P-R7QW. - Open the dashboard. Go to the Transactions tab. A new row appears with status
pending_manualand the same reference code you just saw. If this is your first pending row, a callout at the top of the list reminds you that mailed payments are waiting for confirmation. - Click "Mark received." The row's status changes to
succeeded. That's the complete happy path, from the buyer's click to your confirmation.
Finding a transaction by reference code
When a payment arrives in your mailbox, look for the reference code the buyer included (printed on the envelope, written on the check memo, or tucked inside the package). Then type that code into the search box on the Transactions tab and press Enter. The table filters to matching rows so you can click "Mark received" on the right one without paging through your full transaction history.
Testing the other outcomes
Run through the same steps again, but instead of marking the row received, try each of these:
- Cancel it. Click "Cancel" on the pending row. The status changes to
manual_canceled. This is what you'd do when a buyer tells you they changed their mind before mailing anything. - Let it expire. Leave a pending row alone. After 30 days it auto-expires to
manual_expired. You don't need to wait 30 days to verify the behavior. Expiration works the same as Cancel, except it happens automatically on a schedule. - Enter a different amount. When clicking "Mark received," enter a received amount that differs from what was expected (e.g., the buyer sent 4 Goldbacks instead of 5). The transaction still succeeds, but the dashboard shows both the expected and received amounts so your records reflect what actually arrived.
- Undo a confirmation. First mark a row received so it shows
succeeded, then click "Undo confirmation" on that row. The status changes tomanual_revoked. This is how you'd correct a mistake or flag a payment that turned out to be invalid after the fact.
What to look for
- The reference code in the picker matches the reference code on the dashboard row.
- Your mailing address displays correctly in the picker.
- The "Mark received" and "Cancel" buttons appear only on
pending_manualrows, not on card or crypto transactions. - After marking received, the row shows
succeededwith the correct amount. - Searching by reference code in the search box finds the right row.
Full round-trip transactions created during testing count toward your monthly quota. On the free tier (150 transactions/month), a handful of test runs won't make a dent. Test events sent from the dashboard's "Send a test event" button don't count at all.