<!--
Sitemap:
- [Newton Agent NeoBank](/index)
- [Getting Started](/getting-started)
- [Onboard an Agent](/guides/onboard-an-agent)
- [Give an Agent a Budget](/guides/agent-budget)
- [Pay for an API](/guides/pay-for-an-api)
- [Issue a Card](/guides/issue-a-card)
- [Meter Your API](/guides/meter-your-api)
- [SDK Essentials](/reference/sdk)
- [ModularVault](/reference/sdk/modular-vault)
- [PlatformClient](/reference/sdk/platform-client)
- [FacilitatorClient](/reference/sdk/facilitator-client)
- [createX402Fetch](/reference/sdk/create-x402-fetch)
- [buildPolicyParams](/reference/sdk/build-policy-params)
- [Networks & Addresses](/reference/networks)
-->

# Issue a Card

Give an agent a virtual card it can use at any merchant — under the same kind of per-agent limits as the rest of its spending. The card settles normally; every swipe is checked against the agent's policy and recorded.

## How it works

1. You link a card program and issue a virtual card bound to an agent.
2. When the card is used, the agent's card policy — a daily limit and merchant rules — decides whether to approve, in real time.
3. The decision is recorded for a tamper-evident audit trail. The card itself settles off-chain, like any card.

## Set it up

Card setup runs through the platform:

```typescript
import { PlatformClient } from "@newton-xyz/isaac";

const platform = new PlatformClient({ /* baseUrl, apiKey */ });

// 1. Link your card program
await platform.linkCardProgram(vaultAddress, {
  program_id: "...",
  api_key: "...",
});

// 2. Issue a card for an agent
const card = await platform.createCard(vaultAddress, {
  agent_address: "0xAgentAddress",
  memo: "research agent card",
});

// 3. Set the card's spending policy — a daily limit and merchant rules
await platform.setCardPolicy(vaultAddress, {
  card_policy_params: {
    /* per-agent daily limit + allowed merchant categories */
  },
});
```

## Next

* **[Give an Agent a Budget](/guides/agent-budget)** — the same idea, for on-chain spending.
