> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wurk.fun/llms.txt
> Use this file to discover all available pages before exploring further.

# Payment Methods

> Pay with native USDC on Solana or Base through x402

WURK accepts **x402 v2 payments in native USDC on Solana and Base mainnet**. Choose the network of your funded wallet. The [CLI quickstart](/quickstart) uses Solana; the [Node.js SDK](/sdks/node) also supports Base.

## Payment network and worker reward

| Payment network | Route prefix | Native USDC asset |
| - | - | - |
| Solana | `/solana/` | `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v` |
| Base | `/base/` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` |

The payment network and worker reward are separate choices. Basic rewards workers in WURK; Advanced and Preselection support WURK or USDC; Contest supports WURK, USDC, or SOL. Store purchases and direct hire reward USDC. A Base payment can fund a worker's Solana USDC platform balance.

A gross job budget includes the platform allocation. For example, an Advanced job with two positions at `perUser: "1.00"` has a 2.00 USDC gross reward budget and pays each approved winner 0.900000 USDC internally. The complete payable quote can also include an identification amount. Inspect that quote rather than calculating the payment from rewards alone.

## x402 payment flow

| Step | Request or response |
| - | - |
| Request a quote | Send the intended creation request without a payment signature |
| Inspect requirements | HTTP `402`, nonempty `accepts`, and `PAYMENT-REQUIRED` |
| Submit the approved payment | Repeat the original request with `PAYMENT-SIGNATURE` |
| Save the result | Preserve identifiers, private credentials, response, and any `PAYMENT-RESPONSE` receipt |
| Check completion | Read the original checkout or job status without creating another payment |

A `402` with empty `accepts` is a **free authentication challenge**. It does not ask for a transfer. See [authentication](/authentication).

Use the exact quoted amount, recipient, asset, network, resource, and metadata. USDC uses six decimal places: `1000000` atomic units equals 1 USDC. Preserve amounts as decimal strings or integers, avoiding floating-point rounding.

## Checkout families

Advanced with USDC rewards, every Contest, Store purchases, and direct hire use this sequence:

1. Save the exact input and a unique `idempotencyKey` of 8–128 letters, digits, or `._:-` characters. Generate and privately persist a 32-byte random base64url token before the first request.
2. Send `X-Checkout-Token` with the creation request. The unpaid response contains `checkout` and payable requirements. A canonical job or purchase appears after verified payment.
3. Sign the complete approved requirements and repeat the same method, endpoint, body, key, and token with `PAYMENT-SIGNATURE`.
4. Follow the returned `checkout.statusCheck` with the saved token and no payment signature. Wait for funding and work activation, separately from payment confirmation.

The [WURK SDK and CLI](/sdks/node) preserve the token, exact payment, and operation for you. No account login is accepted on create/pay requests. Verified payment determines the owner account. See [create a job](/api-reference/create-job), [create a Contest](/api-reference/create-contest), and [Store or hire](/api-reference/store-hire).

Solana checkout payments bind the transfer to the advertised memo. Base checkout payments must use the exact advertised `extra.wurkGuestNonce` in their EIP-3009 authorization. Preserve `extra.wurkGuestToken` on both networks. These are payment-binding fields; they do not ask you to choose a separate account mode. The WURK SDK supports them. A custom signer must retain them too; a generic signer that generates a replacement nonce cannot pay that Base quote correctly.

Basic, Advanced WURK, and Preselection use a payment-and-job-secret flow. Save their original payment and returned secret/status URL; the checkout `idempotencyKey` contract does not apply to those creation routes. Follow their [job-specific instructions](/concepts/job-types).

## Quote deadlines and recovery

USDC-reward, Store, and hire checkout quotes last thirty minutes. Contest quotes converting to SOL or WURK rewards last two minutes. Settlement must start with **more than sixty seconds remaining**; obey `payment.initiateBefore` as well as `expiresAt`.

| State | What to do |
| - | - |
| `awaiting_payment` | Inspect the saved quote and its remaining payment window |
| `processing` or `payment_submitted` | Wait and read the same checkout's status |
| `payment_review` | Follow recovery instructions and retain the original payment |
| `payment_confirmed` | Check funding and work state for activation |
| `expired` | Establish that no payment was submitted or entered settlement before considering a replacement |

An HTTP timeout, `202`, review response, or expiry after submission does not authorize another payment. Use the saved operation's recovery path. A receipt confirms a payment step; it does not prove that work is complete. See [job flow](/concepts/job-flow) and [recovery](https://wurkapi.fun/references/recovery.md).

## Discover services

Use the [x402 resource list](https://wurkapi.fun/.well-known/x402) and [Solana/Base OpenAPI](https://wurkapi.fun/openapi-x402.json) to find supported operations. The quote for your actual request determines the payable amount. The [endpoint reference](/api-reference/x402-network-endpoints) links service-specific inputs.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.