Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions mintlify/openapi.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion mintlify/snippets/cards/implementation-overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ balance before approving each auth, so:
## Issuing and lifecycle

Issuance is a single `POST /cards` call. New cards start in
`PENDING_ISSUE` while the issuer provisions them and transition to
`PROCESSING` while the issuer provisions them and transition to
`ACTIVE` automatically — you observe both transitions via the
`CARD.STATE_CHANGE` webhook. Day-to-day operational changes are:

Expand Down
2 changes: 1 addition & 1 deletion mintlify/snippets/cards/intro.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ A card moves through five states:
| State | Meaning |
|-------|---------|
| `PENDING_KYC` | Cardholder has not finished KYC; the card cannot transact yet. |
| `PENDING_ISSUE` | Card has been requested and is being provisioned with the issuer. |
| `PROCESSING` | Card has been requested and is being provisioned with the issuer. |
| `ACTIVE` | Card is live and can authorize transactions. |
| `FROZEN` | Card is temporarily disabled. New authorizations are declined; in-flight settlements continue. |
| `CLOSED` | Card is permanently closed. Terminal, irreversible. |
Expand Down
6 changes: 3 additions & 3 deletions mintlify/snippets/cards/issuing-cards.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ one currency.
## The lifecycle

```text
PENDING_ISSUE ──► ACTIVE ──► FROZEN ──► ACTIVE ──► CLOSED
PROCESSING ──► ACTIVE ──► FROZEN ──► ACTIVE ──► CLOSED
│ │ ▲
│ └──────────────────────────────┘
Expand All @@ -41,7 +41,7 @@ PENDING_ISSUE ──► ACTIVE ──► FROZEN ──► ACTIVE ──► CLOSE

| State | When you see it |
|-------|-----------------|
| `PENDING_ISSUE` | Returned synchronously from `POST /cards`. The card cannot transact yet. |
| `PROCESSING` | Returned synchronously from `POST /cards`. The card cannot transact yet. |
| `ACTIVE` | Issuer provisioned the card. Reached via `CARD.STATE_CHANGE` webhook. |
| `FROZEN` | You called `PATCH /cards/{id}` with `state: "FROZEN"`. |
| `CLOSED` | You called `PATCH /cards/{id}` with `state: "CLOSED"` (or the issuer rejected provisioning). Terminal. |
Expand All @@ -51,7 +51,7 @@ issuance is gated on KYC up front.

## After issuance

`POST /cards` returns immediately with `state: "PENDING_ISSUE"`. The
`POST /cards` returns immediately with `state: "PROCESSING"`. The
issuer provisions the card asynchronously; on success a
`CARD.STATE_CHANGE` webhook fires with the activated `Card` resource
including the populated `last4`, `expMonth`, `expYear`, and
Expand Down
2 changes: 1 addition & 1 deletion mintlify/snippets/cards/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ curl -X POST "$GRID_BASE_URL/cards" \
}'
```

The card comes back in `state: "PENDING_ISSUE"` while the issuer
The card comes back in `state: "PROCESSING"` while the issuer
provisions it. In Sandbox, activation is near-instant for any
`platformCardId` whose last three characters aren't a magic suffix —
see the [Sandbox testing guide](/cards/platform-tools/sandbox-testing)
Expand Down
2 changes: 1 addition & 1 deletion mintlify/snippets/cards/sandbox-testing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ The last three characters of `platformCardId` (or `cardholderId` when

| Suffix | Behavior |
|--------|----------|
| `001` | Stays `PENDING_ISSUE` indefinitely (test the polling path) |
| `001` | Stays `PROCESSING` indefinitely (test the polling path) |
| `002` | Issuer provisioning rejected → `state: CLOSED`, `stateReason: "ISSUER_REJECTED"` |
| `005` | Delayed activation (~30s) before the `CARD.STATE_CHANGE` webhook fires |
| any other | Instant activation → `state: ACTIVE`, `last4` deterministic from the suffix |
Expand Down
4 changes: 2 additions & 2 deletions mintlify/snippets/cards/webhooks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ extends the Transaction model with a card destination type).

| Type | Fires on |
|------|----------|
| `CARD.STATE_CHANGE` | `PENDING_ISSUE → ACTIVE`, `→ CLOSED (ISSUER_REJECTED)`, and every subsequent `ACTIVE ⇄ FROZEN` and `→ CLOSED` transition. |
| `CARD.STATE_CHANGE` | `PROCESSING → ACTIVE`, `→ CLOSED (ISSUER_REJECTED)`, and every subsequent `ACTIVE ⇄ FROZEN` and `→ CLOSED` transition. |
| `CARD.FUNDING_SOURCE_CHANGE` | Whenever `PATCH /cards/{id}` updates the `fundingSources` array. |

All three carry the standard envelope:
Expand Down Expand Up @@ -60,7 +60,7 @@ activation after issuance:

Common branches to handle in your consumer:

- `state: "ACTIVE"` after `PENDING_ISSUE` — the card is live; surface
- `state: "ACTIVE"` after `PROCESSING` — the card is live; surface
`panEmbedUrl` to the cardholder.
- `state: "CLOSED"`, `stateReason: "ISSUER_REJECTED"` — the issuer
rejected provisioning; offer to issue a new card.
Expand Down
12 changes: 6 additions & 6 deletions openapi.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions openapi/components/schemas/cards/CardState.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
type: string
enum:
- PENDING_KYC
- PENDING_ISSUE
- PROCESSING
- ACTIVE
- FROZEN
- CLOSED
Expand All @@ -11,7 +11,7 @@ description: |
| State | Description |
|-------|-------------|
| `PENDING_KYC` | The cardholder has not yet completed KYC. Cards in this state cannot transact. |
| `PENDING_ISSUE` | The card has been requested and is being provisioned with the issuer. |
| `PROCESSING` | The card has been requested and is being provisioned with the issuer. |
| `ACTIVE` | The card is live and can authorize transactions. |
| `FROZEN` | The card is temporarily disabled by the platform. New authorizations are declined with `CARD_PAUSED`. Existing settlements and refunds continue to reconcile. |
| `CLOSED` | The card is permanently closed. Terminal, irreversible state. |
2 changes: 1 addition & 1 deletion openapi/components/schemas/cards/CardStateReason.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ description: |

| Reason | Description |
|--------|-------------|
| `ISSUER_REJECTED` | The card issuer rejected provisioning during `PENDING_ISSUE`. |
| `ISSUER_REJECTED` | The card issuer rejected provisioning during `PROCESSING`. |
| `CLOSED_BY_PLATFORM` | The card was closed via `PATCH /cards/{id}` (`state: CLOSED`) by the platform. |
| `CLOSED_BY_GRID` | The card was closed by Grid (e.g. compliance or risk action). |
2 changes: 1 addition & 1 deletion openapi/paths/cards/cards.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ post:
with `CARDHOLDER_KYC_NOT_APPROVED`.


New cards start in `state: "PENDING_ISSUE"` while the card issuer
New cards start in `state: "PROCESSING"` while the card issuer
provisions the card. The `card.state_change` webhook fires on the
transition to `ACTIVE` (or to `CLOSED` with `stateReason:
"ISSUER_REJECTED"` if provisioning fails).
Expand Down
4 changes: 2 additions & 2 deletions openapi/webhooks/card-state-change.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ post:
summary: Card state change
description: >
Webhook that is called when a card's lifecycle state changes. Fires on
`PENDING_ISSUE → ACTIVE`, on `PENDING_ISSUE → CLOSED (ISSUER_REJECTED)`
`PROCESSING → ACTIVE`, on `PROCESSING → CLOSED (ISSUER_REJECTED)`
when issuer provisioning fails, and on every subsequent
`ACTIVE ⇄ FROZEN` and `→ CLOSED` transition.

Expand Down Expand Up @@ -42,7 +42,7 @@ post:
$ref: ../components/schemas/webhooks/CardStateChangeWebhook.yaml
examples:
activated:
summary: Card transitioned from PENDING_ISSUE to ACTIVE
summary: Card transitioned from PROCESSING to ACTIVE
value:
id: Webhook:019542f5-b3e7-1d02-0000-000000000020
type: CARD.STATE_CHANGE
Expand Down
Loading