Top up personal credit
Creates a USDC or Rupiah top-up for your personal balance. Reuse the same Idempotency-Key if the request times out.
Access: API key: billing:write · Session: any role, own account.
- USDC funds USD credit. Doit requests use
currency: IDRand whole Rupiah. Balances are not exchanged. - You can have at most 5 unpaid USDC top-ups at a time and start 20 in 24 hours; beyond that the request returns
409 quota_exceeded. - For Doit, choose
payment_optionfor QRIS or a supported virtual account, or omit it for hosted selection. Native checkout requiresIdempotency-Key. - Use the exact USDC instructions or the original gateway checkout. Layerbeat covers processing fees.
- A browser redirect is not proof of payment. Credit appears only after verification; an uncertain checkout returns
202. - Refresh or replay the original payment instead of creating a replacement. API keys fund their creator's personal balance.
- Default USD limits are $5–$1,000. Native IDR limits are configured separately. Partial, excess and late USDC receipts remain credit.
- See the top-up guides for each payment method.
AuthorizationBearer <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.
Idempotency-Key?stringA unique string (for example a UUID). Repeating the same request with the same key returns the original result instead of buying again.
X-Org-ID?stringSessions only: act on this organization (you must be a member). Default: your first organization.
application/json- body
payment_option?|Original native Doit choice, immutable with the invoice amount and request identity. Only accepted with method doit, currency IDR and a durable Idempotency-Key. QRIS must omit bank; virtual_account requires a configured supported bank. Omission/null preserves hosted selection for older clients. Changing this choice under the same Idempotency-Key returns 409. Existing invoices remain recoverable when a choice is disabled for new payments.
currency?stringSelected personal credit balance. Never converts or combines balances.
"USD""IDR"method*string"usdc_solana""usdc_arc""doit"amount*stringNative funding amount. USDC uses USD decimals and funds USD only. Doit requires explicit currency IDR, uses whole Rupiah and adds exactly that amount to IDR credit; it never converts existing balances. Layerbeat absorbs processing fees.
Payment created
application/json- response
credit?display_idr_per_usd?stringImmutable original rate for displaying this USD credit in IDR. Omitted on legacy instructions or when unconfigured.
^[0-9]+$instructions_version?1Immutable instruction snapshot version; legacy rows may omit it.
1id*stringpurpose*stringNew intents are top-ups. The legacy vm_purchase value remains readable for historical records.
"vm_purchase""topup"method*stringusdc_tempo is used only by MPP agent top-ups.
"usdc_solana""usdc_arc""usdc_tempo"status*stringawaiting: nothing received. partial: some received. paid: complete. expired/canceled: closed (anything received is wallet balance).
"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*stringThe address to pay on the stated network.
reference*|Solana only: a unique reference key that identifies this payment (already inside payment_uri).
payment_uri*stringA link/QR payload for wallets: Solana Pay on Solana, an EIP-681 request on Arc.
network*expires_at*stringPay before this time.
date-timepaid_at*|date-timecreated_at*stringdate-timetransactions*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' \ -H 'Idempotency-Key: 7c1f1b0e-6f0c-4a5e-9c33-2d0c0f1c9a11' \ -H 'Content-Type: application/json' \ -d '{ "method": "usdc_solana", "currency": "USD", "amount": "25.00"}'{ "id": "pay_h3x9k2m7q4w6z8tfjn5r2bcdva", "purpose": "topup", "method": "usdc_solana", "status": "awaiting", "vm_id": null, "amount": { "usd": "12.00", "usdc": "12.003417" }, "received": { "usdc": "0.000000", "credited_usd": "0.00" }, "pay_to": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU", "reference": "J4Zq9mTt8Yd3nVwKpL2xRfH6bCsUeA5gQj7oWz1NhXy", "payment_uri": "solana:7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU?amount=12.003417&spl-token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&reference=J4Zq9mTt8Yd3nVwKpL2xRfH6bCsUeA5gQj7oWz1NhXy&label=VPS", "network": { "name": "USDC on Solana", "network": "solana", "asset": "USDC", "contract": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "decimals": 6 }, "expires_at": "2026-10-01T11:00:00Z", "paid_at": null, "created_at": "2026-10-01T10:00:00Z", "transactions": []}