> Fetch the complete documentation index at: https://docs.polymarket.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Polymarket USD
> pUSD — the collateral token used for all trading on Polymarket
**pUSD** (Polymarket USD) is the collateral token used for all trading on Polymarket. It's a standard ERC-20 token on Polygon, backed by USDC. The smart contract — which enables the withdrawal functionality — enforces the backing. No algorithmic peg, no fractional reserve.
<Note>
**Day to day, nothing changes.** You load funds, see a balance, trade, and
withdraw. pUSD is the technical settlement layer underneath the same
experience you're used to.
</Note>
***
## Why pUSD
The protocol settles all trading activity in native USDC, providing a more capital efficient, scalable, and institutionally aligned settlement standard as the platform continues to grow.
pUSD is a standard ERC-20 wrapper that represents a USDC claim. Wrapping and unwrapping are enforced onchain by the `CollateralOnramp` and `CollateralOfframp` contracts.
***
## Key facts
| | |
| -------------- | ----------------------- |
| Token standard | ERC-20 |
| Network | Polygon mainnet |
| Decimals | 6 |
| Backing | USDC (enforced onchain) |
| Transferable | Yes — standard ERC-20 |
pUSD is designed to function within Polymarket. There are no current plans to list it on external exchanges.
See the [Contracts](/resources/contracts) page for all collateral-related contract addresses.
***
## Wrapping — USDC.e → pUSD
Use the **CollateralOnramp** to wrap USDC.e into pUSD.
```solidity theme={null}
function wrap(address _asset, address _to, uint256 _amount) external
```
**Parameters**
* `_asset` — address of the asset being wrapped. Must be USDC.e.
* `_to` — recipient of the minted pUSD. Does not have to be `msg.sender`.
* `_amount` — amount to wrap, in USDC.e base units (6 decimals).
**Requirements**
* The caller must first approve the **CollateralOnramp** contract (not the pUSD token) to spend USDC.e.
* Reverts with `OnlyUnpaused()` if the admin has paused USDC.e.
### Example
<CodeGroup>
```typescript TypeScript theme={null}
import {
createWalletClient,
createPublicClient,
http,
parseAbi,
parseUnits,
} from "viem";
import { polygon } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);