Skip to main content
ZeroConf lets eligible Bitcoin L1 deposits continue before the transaction reaches its first block confirmation.

What does ZeroConf do?

When a Bitcoin L1 deposit is detected, the engine asks Spark for an instant static-deposit quote. If Spark returns a 0-conf fulfillment plan, Orchestra creates a ZeroConf offer and moves the order to awaiting_approval. Partners accept the offer to continue immediately, or decline it to wait for the normal confirmed path.

How are confirmations handled?

What is the offer flow?

1

Create a Bitcoin L1 quote

Create an exact-in quote with sourceChain=bitcoin. The quote response returns a Bitcoin L1 depositAddress. It does not include a ZeroConf offer.
2

Deposit detected

After the Bitcoin transaction is broadcast and detected, the engine evaluates the specific UTXO for ZeroConf eligibility.
3

Spark returns a plan

If Spark returns a 0-conf plan, the engine stores a pending zeroconfOffer and moves the order to awaiting_approval. If Spark requires confirmation, the order waits for 1 block.
4

Accept or decline

Call POST /v1/orchestration/zeroconf/accept for instant credit, or POST /v1/orchestration/zeroconf/decline to wait for 1 confirmation. If you do not respond before expiresAt, the offer expires and the engine waits for 1 confirmation.
5

Execution continues

After acceptance (instant credit) or confirmation (1 block), the order proceeds through swapping, bridging, and delivery.

What fields are in a ZeroConf offer?

Three fields drive the decision:
  • expiresAt: the deadline. Respond before it or the offer expires and the order waits for 1 confirmation.
  • instantSats: what the order is credited on acceptance.
  • feeSats: the difference between the deposited amount and instantSats, from Spark’s static-deposit quote. This is not the Flashnet orchestration platform fee; platform pricing stays in the normal quote and order fields such as feeBps and feeAmount. Read feeSats from each offer; do not hard-code a fixed percentage or sat amount.
ZeroConf is single-leg: accepting the offer credits the full net instantSats. Confirmation does not release an additional amount. The full object schema, including status, depositSats, and resolution timestamps, is in ZeroConf offer fields.

How do I accept or decline an offer?

Accept (instant credit):
Decline (wait for 1 confirmation):

When does ZeroConf apply?

  • ZeroConf applies to eligible sourceChain=bitcoin exact-in orders after the Bitcoin transaction is detected.
  • Exact-out (amountMode=exact_out) uses confirmation-based processing and does not use ZeroConf.
  • Quote responses do not predict whether an offer will be created. The decision depends on the detected UTXO and Spark’s fulfillment plan.
  • If Spark does not return a 0-conf plan, the engine falls back to the confirmed path without a partner action.

How does ZeroConf work with liquidation addresses?

Liquidation addresses use Bitcoin L1 deposits and are ZeroConf-eligible. When Spark returns a 0-conf plan, each deposit generates a ZeroConf offer requiring partner resolution via webhook and API call. If no offer is created, the deposit continues on the confirmed path. Some deployments require ZeroConf to be configured for liquidation address provisioning. If address creation returns a configuration error, contact your Flashnet operator. See reusable addresses for setup.

Next steps