Callback

The round speaks to your wallet

The callback is the only door between Virtual Circuit and the operator. A game does not keep a balance. When a round needs money, the feed calls the URL the operator registered. The wallet answers. If the wallet refuses, the round stops and no result is written.

The URL is one of the two details the test desk requires. The other is the list of settlement currencies. Nothing else is required to open the desk. Keys come after those two details check out. Production, and the $500 balance that opens it, comes later and is described on the test desk page.

Fields on the call

Each call names the market, the game, the stake, and a round id the operator has not seen before. The market is the pair agreed on the coverage page: settlement currency, territory, and the floors allowed there. The stake is an amount in the player currency. When that currency is not the settlement currency, the call also carries the settlement amount and the rate locked for that round. The rate is the operator's rate. The feed does not invent one.

The round id is the operator's handle for a retry. A second call with the same id is the same round, not a second stake. The wallet should answer the same way it answered the first time. A different answer on a retry is a defect on the wallet side, and the desk will show it during the test.

What a refusal looks like

A refusal is a normal answer. The player may not have the stake. The market may be closed for the night. The floor may be dark in that territory. The feed treats all three as a stop: no result, no second debit, and a record the operator can read. The game does not retry on its own. The player can start another round, which gets a new id.

A timeout is not a refusal. If the wallet does not answer, the feed does not guess. The round stays open until the wallet answers or the operator voids it. Voiding is an explicit call, not a silence. This is why the callback URL has to be a host the operator controls, and why the test desk fires rounds before any production balance exists.

Keys and the test

Keys identify the project, not a player. They are issued to the operator after the callback URL answers a test round and the currency list matches the markets. The test desk carries no invoice. A failed test does not create a bill. The operator can change the URL and run the test again.

The homepage lists the four floors and the shape of the offer. This page is only the contract of the call. Markets, returns, and which floor is allowed where are on the coverage page. What the desk stores from the booking form is on the data notice. Players are not registered on any of these pages.

Two operators can share a floor and not share a callback. Each project has its own URL and its own keys. A result written for one project is not visible to the other. That separation is the point of the keys. If two brands inside one company should settle together, they are one project and one URL, with two markets. If they should not see each other's rounds, they are two projects.

The test round is small on purpose. The desk sends one stake in each currency on the list, in a territory that list allows, and waits for the wallet. A success is an accepted debit and a matching credit of the same round id. A refusal is also a success for the test, provided the same id does not debit twice. A timeout is the only failure that blocks keys. The operator fixes the URL or the host, and the desk fires the round again. No balance is taken for that repeat.

After keys exist, the same contract holds in production. The $500 balance does not change the fields, the retry rule, or the meaning of a refusal. It only marks the project as allowed to take live stakes. Bills later spend that balance. Stopping before the first live stake returns it. The numbers and the timing of those bills are on the test desk page, next to the keys.

The callback host must be the operator's. A host this aggregator does not control cannot be the wallet of record. The desk rejects a URL that points back at virtual-circuit.org, because this site does not keep player balances and will not pretend to answer a stake.