swqos

Transaction relay, under your name.

Customers send signed Solana transactions to your address, prepaid in SOL. You set the price. We run the relay.

send a signed transactionHTTPS
curl -sS \
  https://send-acme.site.nodeshop.app/v1/transactions \
  -H "Authorization: Bearer $SWQOS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d "{\"transaction\":\"$TRANSACTION_BASE64\"}"

The host is the store’s own. Customers never see ours.

One hop from your customer to the leader.

  1. 01
    Customer signs

    They sign locally and keep their private keys. Only the signed bytes leave their machine.

  2. 02
    Your address

    The bytes go to your store's own send address with an API key. The host is yours, never ours.

  3. 03
    The relay

    The envelope is checked, one send is charged, and the exact bytes are forwarded over staked connections.

  4. 04
    The leader

    One hop to the block producer. If it does not land, the whole charge goes back to the customer.

A receipt means the signed bytes were accepted for forwarding. Whether they landed on chain is reported separately, in the customer’s transaction register.

Prepaid in SOL. No card, no subscription.

Plan fees go through your normal checkout. SWQoS never appears on that invoice: customers fund a balance from their own dashboard, for as much as they want.

  1. 01
    Open the tab

    Customers find SWQoS under Projects in your dashboard and receive an API key.

  2. 02
    Deposit SOL

    They send SOL from any wallet to the deposit address, with their own memo attached.

  3. 03
    Credit on finality

    The balance is credited once the deposit is finalized on chain. The memo is the only thing that credits an account.

  4. 04
    Spend it down

    Each send draws one send from the balance, shown in sends and in SOL at your price.

What is charged, and what is not.

This is the billing boundary your customers get. A send that does not land costs them nothing.

Charged
  • Accepted and forwarded

    One send at your price, held while landing is checked.

  • It lands

    The hold becomes final.

Refunded
  • It does not land

    The full charge returns to the customer's balance.

  • Forwarding fails

    Charged, then reversed automatically.

Free
  • Duplicate signature within 90 seconds

    Not charged.

  • Invalid transaction envelope

    Not charged.

  • Unknown or invalid API key

    Not charged.

  • Disabled account, or insufficient balance

    Not charged, and refused immediately.

operator economics

You keep 90% of the margin.

Wholesale cost is 0.00015 SOL per send. Stores start at 0.0002 SOL and can charge anything from the floor up. NodeShop takes 10% of what you add above cost, and nothing on the cost itself.

one send, at the default price0.0002 SOL
Wholesale cost
What the relay charges NodeShop
0.00015 SOL
NodeShop, 10% of margin
Margin is 0.00005 SOL
0.000005 SOL
You, 90% of margin
Recorded on every deposit
0.000045 SOL
deposit, SOLsendsyouNodeShop
  • 0.05002500.011250.00125
  • 0.10005000.02250.0025
  • 0.50002,5000.11250.0125
  • 1.00005,0000.22500.0250

At 0.0002 SOL per send. Your share is fixed when the deposit finalizes, so a later price change never rewrites an earlier deposit.

Work out what you would earn

what you sell
0.0002 SOL
floor, 0.00015 SOLdefault, 0.0002 SOL
100,000
10,0002,000,000

Counts landed sends. Sends that do not land are refunded to the customer and earn nothing for anyone.

you keep
4.5000 SOL
per month, at 100,000 sends
Customers pay
20.0000 SOL
Wholesale cost
15.0000 SOL
NodeShop share, 10% of margin
0.5000 SOL
You keep, 90% of margin
4.5000 SOL

Per send you keep 0.000045 SOL. NodeShop covers cost first, then takes 10% of the 0.00005 SOL margin.

An address for every store.

The send address follows your storefront, so your customers see your name and never ours. Certificates are issued automatically.

Your NodeShop address
send-acme.site.nodeshop.app

Live as soon as your store is. No DNS to touch.

Your own domain
send.acme.com

Available once your custom domain is connected.

Errors your customers will see.

Every refusal is explicit. Nothing is queued and nothing is silently dropped.

INVALID_BASE64400

The transaction is not valid base64.

INVALID_TRANSACTION400

The envelope is malformed or over 1,232 bytes.

INVALID_REQUEST400

A field is missing or malformed.

UNAUTHORIZED401

No Bearer credential was sent.

INVALID_API_KEY401

The key could not be decoded.

INSUFFICIENT_BALANCE402

The balance is empty. Deposit and try again.

ACCOUNT_DISABLED403

The account is switched off. Contact the store.

SUBMISSION_IN_PROGRESS409

The same signature is already in flight.

BILLING_UNAVAILABLE or AUDIT_UNAVAILABLE503

Retry with backoff. Nothing was charged.

UPSTREAM_UNAVAILABLE503

Retry. Any charge is reversed automatically.

Questions about SWQoS

What do I have to run?

Nothing. The relay, the send address, the balances and the deposit tracking are ours. You set a price and your customers do the rest.

What does it cost me?

0.00015 SOL for each send that is charged, and only then. If nobody sends, you owe nothing.

How is my share worked out?

On every finalized deposit, the part above wholesale cost is split 90 / 10. Your share is recorded with the deposit and shown in your console, fixed at the price in force when it arrived.

Can I sell below cost?

No. The floor is 0.00015 SOL per send and the console refuses anything under it. At the floor you earn nothing and neither do we.

Does it change my customers' transactions?

No. The exact bytes they submit are forwarded. Nothing is added, re-signed or reordered, so the signature in their receipt always matches what they built.

Does an accepted receipt mean the transaction landed?

No. It means the bytes were accepted for forwarding. Landing is tracked separately and shown in the customer's transaction register.

Which address do my customers use?

Your own: send-yourstore.site.nodeshop.app by default, or send.yourdomain.com once you connect a custom domain. Certificates are issued for you.

Can I turn it off?

Yes. It is on for every new store and one switch in your console removes it from your storefront and your customers' dashboards.