Layerbeat

Pay an agent credit top-up with x402

POST
/v1/billing/top-ups/x402

Adds USD credit through an x402 USDC payment on Solana. Reuse the same request body and Idempotency-Key when submitting payment.

Access: API key: billing:write · Session: any role, own account.

Authorization

headerAuthorizationBearer <token>

Send Authorization: Bearer <token>. A token is an API key (lb_live_…, scoped, for programs) or a session (lb_sess_…, from signup or login, for people). See Authentication above.

Header Parameters

Idempotency-Key*string

Persist one identity for the entire funding attempt and every retry, across workspaces.

Length1 <= length <= 128
X-Org-ID?string

Sessions only: act on this organization (you must be a member). Default: your first organization.

PAYMENT-SIGNATURE?string

Base64-encoded x402 V2 PaymentPayload with the partially signed Solana transaction. Never log this authorization.

Lengthlength <= 16384

Request Body

application/json
  1. body
amount*UsdString

USD amount, parsed as integer cents without rounding.

Match^[0-9]+([.][0-9]{1,2})?$

Response Body

Finalized receipts have credited the authenticated user's personal wallet. A replay returns the original payment.

application/json
  1. response
credit?
display_idr_per_usd?string

Immutable original rate for displaying this USD credit in IDR. Omitted on legacy instructions or when unconfigured.

Match^[0-9]+$
instructions_version?1

Immutable instruction snapshot version; legacy rows may omit it.

Value in1
id*string
purpose*string

New intents are top-ups. The legacy vm_purchase value remains readable for historical records.

Value in"vm_purchase""topup"
method*string

usdc_tempo is used only by MPP agent top-ups.

Value in"usdc_solana""usdc_arc""usdc_tempo"
status*string

awaiting: nothing received. partial: some received. paid: complete. expired/canceled: closed (anything received is wallet balance).

Value in"awaiting""partial""paid""expired""canceled"
vm_id*|

Null for new top-ups; retained only for historical direct-payment VM orders.

amount*
received*

What has arrived so far.

pay_to*string

The address to pay on the stated network.

reference*|

Solana only: a unique reference key that identifies this payment (already inside payment_uri).

payment_uri*string

A link/QR payload for wallets: Solana Pay on Solana, an EIP-681 request on Arc.

network*
expires_at*string

Pay before this time.

Formatdate-time
paid_at*|
Formatdate-time
created_at*string
Formatdate-time
transactions*array<>

On-chain transfers credited to this payment, oldest first. Empty until a transfer is credited.

curl -X POST 'https://layerbeat.com/v1/billing/top-ups/x402' \  -H 'Idempotency-Key: agent-topup-20261006-01' \  -H 'PAYMENT-SIGNATURE: eyJ4NDAyVmVyc2lvbiI6Mn0=' \  -H 'Content-Type: application/json' \  -d '{  "amount": "5.00"}'
{  "id": "pay_h3x9k2m7q4w6z8tfjn5r2bcdva",  "purpose": "topup",  "method": "usdc_solana",  "status": "paid",  "vm_id": null,  "amount": {    "usd": "5.00",    "usdc": "5.003417"  },  "received": {    "usdc": "5.003417",    "credited_usd": "5.00"  },  "pay_to": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",  "reference": "J4Zq9mTt8Yd3nVwKpL2xRfH6bCsUeA5gQj7oWz1NhXy",  "payment_uri": "solana:7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU?amount=5.003417&spl-token=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU&reference=J4Zq9mTt8Yd3nVwKpL2xRfH6bCsUeA5gQj7oWz1NhXy&label=VPS",  "network": {    "name": "USDC on Solana (devnet)",    "network": "solana-devnet",    "asset": "USDC",    "contract": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",    "decimals": 6  },  "expires_at": "2026-10-06T11:00:00Z",  "paid_at": "2026-10-06T10:01:00Z",  "created_at": "2026-10-06T10:00:00Z",  "transactions": [    {      "id": "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW",      "explorer_url": "https://solscan.io/tx/5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"    }  ]}