Palm USD Developers
API operational Get PUSD
Developers

Build with Palm USD.

PUSD is a fully-reserved, non-freezable USD stablecoin on Ethereum, Solana, BNB Chain, TRON, and ADI Chain. There is no proprietary SDK, no custom wallet, and no permission you need to ask for. If your code already works with USDC, it works with PUSD.

What you get out of the box

  • A standard ERC-20 / SPL / BEP-20 / TRC-20 token, with 6 decimals, on each chain
  • A non-freezable smart contract: no admin key, no blacklist, no pause function
  • A public, no-auth circulation API for reserves and supply data
  • Monthly ISAE 3000 (Revised) reserve attestations by a licensed CPA, published openly

What you do not need

  • No API key for read-only data. The circulation API is fully public.
  • No SDK install. The token is standard at every layer.
  • No bridge. Each chain has a native mint and redeem contract; nothing is wrapped.
curl https://api.palmusd.com/v1/circulation

Quickstart.

Pick a chain. Drop in the contract address. Read a balance. The whole thing is two imports and a function call.

1. Pick the chain you want

The PUSD token is deployed natively on Ethereum, Solana, BNB Chain, TRON, and ADI Chain. Each deployment uses 6 decimals, matching standard stablecoin precision.

2. Get the contract address

Live contract addresses for Ethereum, Solana, BNB Chain, and ADI Chain are listed in Contracts & chain IDs below. The TRON deployment publishes at mainnet on TRON. Never trust an address that is not listed in this document, signed by Palm Treasury, and reflected on the published reserves attestation.

3. Read a balance

Use any standard library for the chain. The right-hand panel shows the same call in cURL, JavaScript, and Python.

// JS via ethers.js
import { Contract, JsonRpcProvider, formatUnits } from 'ethers';
const PUSD = '0xfaf0cee6b20e2aaa4b80748a6af4cd89609a3d78';
const ABI  = ['function balanceOf(address) view returns (uint256)'];
const rpc  = new JsonRpcProvider('https://eth.llamarpc.com');
const pusd = new Contract(PUSD, ABI, rpc);
const raw  = await pusd.balanceOf('0x...');
console.log(formatUnits(raw, 6));
That is the entire integration. No webhooks to configure, no callbacks to register, no auth headers. PUSD reads exactly like any other ERC-20.

Contracts & chain IDs.

Verify before you sign. These are the only PUSD contract addresses. Any other deployment claiming to be Palm USD is not Palm USD.

Ethereum
Chain ID 1 · ERC-20 · 6 decimals
0xfaf0cee6b20e2aaa4b80748a6af4cd89609a3d78
Solana
Mainnet · SPL · 6 decimals · mint authority locked
CZzgUBvxaMLwMhVSLgqJn3npmxoTo6nzMNQPAnwtHF3s
BNB Chain
Chain ID 56 · BEP-20 · 6 decimals
0xfaf0cee6b20e2aaa4b80748a6af4cd89609a3d78
TRON
Mainnet · TRC-20 · 6 decimals
Address pending Tronscan ↗︎
ADI Chain
BLS Mainnet · EVM · 6 decimals
0x21B9AD9B15A9888cD57ACEEAc6Bd79093fA9D8E0

API overview.

A small, public, no-auth REST API for circulation, reserves, and peg data. JSON in, JSON out. Designed to be safely cacheable and trivially scriptable.

Base URL

https://api.palmusd.com

Authentication

None required for read endpoints. The API is intended for transparent, programmatic access by integrators, exchanges, custodians, journalists, and auditors. There is no API key to request.

Versioning

All endpoints sit under /v1/. Breaking changes ship as a new major version (/v2/) with the prior version maintained for a minimum 12 months.

Response format

JSON, UTF-8, with application/json; charset=utf-8 content type. Numeric amounts are returned as decimal strings to preserve precision (PUSD uses 6 decimals at the token level).

Rate limits

Read endpoints are aggressively cacheable. A soft rate limit of 60 requests per minute per IP applies to non-cached requests. Heavy users should set a User-Agent identifying their service.
Rate-limit headers and quota dashboard ship Q2 2026

Circulation

Returns the current circulating supply of PUSD across all live chains, with optional exclusion of one or more chains and a recomputed total.

Live
GEThttps://api.palmusd.com/v1/circulation

Query parameters

ParameterDescription
exclude string · optional One or more chain identifiers to exclude from the response. Accepts two equivalent forms: repeated values (?exclude=ETHEREUM&exclude=BSC) or a comma-separated list (?exclude=ETHEREUM,BSC). Excluded chains are removed from the chains array, and total_circulating is recomputed from the remaining entries so the payload stays internally consistent. Valid values: ETHEREUM, SOLANA, BSC, TRON, ADI

Response

Returns an object with the per-chain circulating amounts and the total (recomputed if any chain was excluded).

chainsarray
List of objects, one per included chain. Each object has chain (string identifier) and circulating (decimal string in PUSD units).
total_circulatingstring
Sum of circulating values across all included chains, returned as a decimal string. If exclude was supplied, this value is the recomputed total of the remaining chains, not the global total.

Errors

StatusWhen
400bad request The exclude parameter contained one or more values that did not match a known chain identifier. The response body returns the offending value(s).
curl https://api.palmusd.com/v1/circulation
curl "https://api.palmusd.com/v1/circulation?exclude=ETHEREUM,BSC"

Circulation history.

Returns historical circulation across the same chain set. Identical exclude semantics: removed chains drop out, totals recompute.

Live
GEThttps://api.palmusd.com/v1/circulation/history

Query parameters

ParameterDescription
exclude string · optional Same semantics as /v1/circulation. Repeated or comma-separated. Excluded chains drop out of every point in the time series; total_circulating at every timestamp is recomputed accordingly.
Additional time-window parameters (from, to, interval) and pagination land alongside the published v1 reference. Q2 2026

Reserves.

Returns the current snapshot of reserve composition by tier, custodian, and instrument class, attested under ISAE 3000 (Revised) by a licensed CPA.

Coming Q2 2026
GEThttps://api.palmusd.com/v1/reserves

Will return: tier-by-tier composition (Cash & Callable Deposits, Commodity Murabaha, Quasi-sovereign Sukuk, Long-dated Sukuk), per-custodian breakdown, attestation date, attestation reference, and the URL of the signed PDF.

Until live, the canonical source is the monthly attestation linked from the Reserves page.

Peg snapshot.

Returns the current observed market peg, the reserve coverage ratio, and the timestamp of the last attestation.

Coming Q2 2026
GEThttps://api.palmusd.com/v1/peg

Will return: VWAP across primary venues, deviation from $1.00, reserve coverage ratio (always ≥ 1.0), timestamp, and a cryptographic signature over the snapshot for verification.

Errors.

Errors return standard HTTP status codes with a JSON body describing the failure.

StatusMeaning
200okRequest succeeded. Body contains the requested resource.
400bad requestThe request was malformed: typically an invalid query parameter such as an unknown chain in exclude.
404not foundThe endpoint or resource does not exist at this version.
429rate limitedThe soft rate limit was exceeded. Back off and retry.
500server errorAn unexpected server error. Safe to retry. Reach security@palmusd.com if persistent.

Error body shape

All errors return a JSON object with a stable shape:

{
  "error": {
    "code": "invalid_chain",
    "message": "Unknown chain in exclude parameter: DOGE",
    "details": { "invalid_values": ["DOGE"] }
  }
}

SDKs.

There is no Palm SDK, by design. PUSD is a standard token at every layer; whatever library already moves USDC for you will move PUSD without modification.

Recommended libraries

  • Ethereum / BNB Chain: ethers, viem, web3.js
  • Solana: @solana/web3.js + @solana/spl-token
  • TRON: tronweb
  • ADI: ethers, viem (EVM-compatible)
If you want a thin convenience wrapper that exposes the public API plus chain-aware balance helpers, the v1 npm + pip packages ship Q3 2026 as @palmusd/api and palmusd respectively. They are wrappers, not dependencies. Anything they do, you can do without them.

Audits & security.

Two assurance layers: smart-contract security audits, and monthly reserve attestations.

Smart contract audit

Audited by Leading cybersecurity companies. The full report, severity counts, and remediations will be linked here once the report is published.

Reserve attestation

Monthly attestation under ISAE 3000 (Revised) by a licensed CPA. Each attestation covers reserve composition, custody, and 1:1 backing. Reports are linked from the Reserves page within 10 business days of period end.

Responsible disclosure

Found a security issue? Email security@palmusd.com. Please do not file a public GitHub issue, social-media post, or chain-explorer comment until coordinated disclosure has happened. A formal bug bounty program with severity bands and bounty amounts will be published once smart contracts are publicly deployed.

Compliance lives at the perimeter, not in the contract. KYC at mint, KYB on distributors, sanctions screening at on/off-ramp. Once a token is in your wallet, no admin function exists that can freeze, blacklist, or pause it.

Status.

Real-time health of the API and chain integrations.

status.palmusd.com ships Q2 2026

Until the public status page launches, current API health is reflected in the pill at the top right of every page. Major incidents and planned maintenance are announced via the Newsroom.

What status will cover

  • API availability and latency by endpoint
  • Per-chain mint, redeem, and read-RPC health
  • Open and resolved incidents with full postmortems
  • Subscription via email and webhook

Changelog.

Material changes to the API, contracts, and reserve policy.

No public entries yet. New entries will publish here per release, with semantic-version dating and a one-paragraph summary of each change.