Skip to main content
Sell unused compute time through the SF Compute orderbook, where buyers and sellers place orders. Use this guide to choose time to sell and check the credits you receive. You receive credits only when a buyer buys the time.

Before you sell

You need compute time that you own and access to the sf command-line interface (CLI). Follow the quickstart to install the CLI and sign in. Your pool records the compute time that you own, called allocation. Each stock keeping unit (SKU) identifies a hardware configuration. Choose the pool and SKU whose time you want to sell. The examples use the pool name production-inference. Replace it with your pool name, and replace your_sku_id with your SKU. Set the times and rates for your sale; the prices below are examples, not live quotes.

How reselling works

Place a sell order for time that your work does not need. When a buyer purchases that time, the order fills and SF Compute removes the sold allocation from your pool.
1

Choose unused time

Keep enough allocation for planned work before you offer time for sale. Include these needs:
  • Jobs that are running
  • Jobs that are waiting to start
  • Spare nodes for new work
Check the time held by other sell orders in your pool. A running instance is a virtual machine that uses this time. Block new jobs on instances you plan to terminate, then check those instances for running jobs.
2

Check the market price

Check the best bid and ask for the SKU and exact period you want to sell. A bid is the price a buyer offers; an ask is the price a seller requests.Use market depth to check the number of nodes at each price. Set --min-rate to the lowest price you will accept, in dollars per node-hour.
3

Place the sell order

This example assumes you own 5 nodes for 14 days, with 2 extra nodes from day 3 to day 8. You need only 2 nodes during a 3-day holiday that starts on day 8.Offer 3 nodes for that holiday:
Use --allow-standing to keep the order open while it waits for a buyer. The order stays open until it fills, you cancel it, or the offered time ends. Save the order identifier (ID) to check or cancel the order later.
The chart shows the purchases that supply this example, followed by the sale. Each rectangle represents 1 node for 1 day; the shaded area shows the time you own. Select a step, then move the pointer over the chart to see the node count.

How your pool tracks allocation

Your pool keeps one schedule for each SKU. This schedule adds time you buy and subtracts time you sell. Sell from that schedule, not from a single purchase. You can sell any part of the time you own, including a period in the middle. Only the time a buyer purchases leaves your pool. The same rules apply to time bought through a spot deployment or a firm reservation.

How a sell order fills

By default, a sell order fills completely or not at all. Use --allow-partial to let buyers purchase smaller parts of the offered nodes or time. The fills can cover separate periods with gaps between them. Fills use whole minutes, with a minimum of 1 node for 1 minute. You cannot set a larger minimum fill size. Use the order fields fills and filled_allocation_schedule_delta to check the exact nodes and time that sold.

What happens to your instances when you sell

Each running instance needs enough compute time in its pool. If a sale leaves too little time, SF Compute terminates instances in this order:
  1. Instances with the lowest priority
  2. The newest instances among those with the same priority
Terminate unneeded instances before the sold time starts. Keep the rest.
Replace your_instance_id with the ID of an instance you want to terminate:
The holiday sale leaves 2 nodes for 3 days, so SF Compute terminates the other 3 instances. Each bar below shows an instance; move the pointer over a bar to see its state.

Choose time to sell

Sell a period when your jobs do not need the compute. Low use of graphics processing units (GPUs) alone does not mean the time is spare. An instance can still contain data or be necessary for a later job.

Sell the end of a reservation

Sell the last hours of a reservation when work ends early. Here, you own 1 node for 12 hours but need only the first 8 hours. Sell the last 4 hours:
At $8 per node-hour, this sale returns $32 before fees. For a node with 8 GPUs, that rate equals $1 per GPU-hour.

Sell a gap between jobs

Offer a gap when work can stop and continue later. This example keeps the first 2 hours and last 4 hours of the same 12-hour reservation. Choose this example or the one above. Both together leave only the first 2 hours; the first sale removes the last 4 hours you need here. Sell the 6-hour gap:
Save your work before the sold time starts. Leave time to terminate instances before the gap, then create new ones to resume work after it. Terminated instances do not restart when your compute time returns. If you must move work to other nodes, compare the costs first. To reduce your costs, the sale value must cover these costs:
  • Platform fees
  • Replacement compute
  • Moving the work

How to make a sell order fill

Price and order size affect your chance of finding a buyer. Consider these options:
  • Set --min-rate below current prices for the same SKU and period.
  • Offer small amounts, such as 1 node for 1 hour, which can be easier to match.
  • Use --allow-partial if you can sell smaller parts of the offered nodes or time.
  • Offer time early to give buyers more time to find your order.
  • Keep an order open if some of its time has passed; a buyer can still purchase the remaining time.
  • Use several sell orders for a pool when you need different prices or periods.
An order in the standing state waits for a buyer, and you still own the time. You might not find a buyer before the offered time ends.

Reprice or cancel a listing

You can lower your price as the start time gets near. Do not go below the lowest price you will accept. Cancel the open order and check its fills before you place a new one.
1

Request cancellation

Replace your_order_id with your sell order ID. Run this command to ask SF Compute to cancel the order:
2

Wait for the final result

Read the order fields as JavaScript Object Notation (JSON). Use the same order ID, and repeat until the state is cancelled or filled:
A buyer can purchase time while cancellation is in progress, and that time stays sold. Check fills and filled_allocation_schedule_delta before you sell or use the time again.
3

Use only the remaining time

Subtract all fills from the time you first offered. If 2 hours of a 6-hour sale fill before the order stops, only 4 hours become free again.Keep that time reserved until the order reaches its final state. See Cancel an order for more details.
For sales through the application programming interface (API), save each request and its idempotency key first. This key identifies the request, so reuse it and the request body when you retry. Check orders and fills before each new sale to avoid selling the same time twice.

Calculate your resale credits

Subtract the platform fee from the sale value to find the credits you receive. The sale value depends on the fill price and the number of node-hours sold.

How the fill price is set

The order that reaches the orderbook first sets the fill price. Your --min-rate remains the minimum price you will accept:

Platform fee

SF Compute subtracts a platform fee when your sale fills. The fee has two parts: The 3-node, 3-day holiday sale contains 216 node-hours: 3 × 3 × 24. Its fee includes the fixed amount for those node-hours plus the percentage of the sale value. SF Compute sets both fee parts, and your fees can change. Fees can also differ between organizations. Check the fee estimate in the CLI before you confirm an order. The fee cannot exceed the sale value, so a sale cannot reduce your credit balance. The buyer pays the fill price, and the fills array shows prices before fees. SF Compute subtracts the fee from your sale value and adds the remaining amount to your credits.

Track your realized price

Your realized price is the cost per purchased GPU-hour after resale. Use the credits you receive after fees: For example, a $100,000 purchase with $25,000 in resale credits gives these results. The original rate is $4.50 per GPU-hour: This calculation uses all purchased GPU-hours. The cost per GPU-hour of completed work also depends on how much of the remaining time you use. The September 9, 2026 resale article reported a 25% average realized discount for customers on the platform. Your results depend on the time you sell, demand, prices, and fees.

Next steps

Use these guides to manage your compute after a sale:
  • Pools: allocation schedules
  • Orders: order states and fees
  • Instances: creating and terminating instances