---
title: "Charge card"
description: "Charges a saved card token. Use this for server-to-server charges when you already hold a card token — for example, for recurring or merchant-initiated transactions."
protocol: rest
method: POST
endpoint: "/v1/collections/cards/payment-intents/charge"
baseUrl: "https://api.gravv.xyz"
group: "Collections"
auth:
  label: "Api-Key"
  name: "Api-Key"
  in: header
---

# Charge card

<Endpoint method="POST" path="/v1/collections/cards/payment-intents/charge" />

Charges a saved card token. Use this for server-to-server charges when you already hold a card token — for example, for recurring or merchant-initiated transactions.

Billing fields are optional. Any field you omit falls back to the customer record on file. Fields you provide take precedence and are saved to the resulting charge record.

## Headers

<ParamField name="Idempotency-Key" header="Idempotency-Key" type="string" required>
  Required for POST requests. Reuse only for an identical retry.
</ParamField>

## Request Body

<ParamField name="first_name" body="first_name" type="string">
</ParamField>

<ParamField name="last_name" body="last_name" type="string">
</ParamField>

<ParamField name="email" body="email" type="string">
</ParamField>

<ParamField name="phone_number" body="phone_number" type="string">
  E.164 format
</ParamField>

<ParamField name="date_of_birth" body="date_of_birth" type="string">
  Accepts YYYY-MM-DD
</ParamField>

<ParamField name="billing_address1" body="billing_address1" type="string">
</ParamField>

<ParamField name="billing_city" body="billing_city" type="string">
</ParamField>

<ParamField name="billing_state" body="billing_state" type="string">
</ParamField>

<ParamField name="billing_zip" body="billing_zip" type="string">
</ParamField>

<ParamField name="billing_country" body="billing_country" type="string">
  ISO 3166-1 alpha-2
</ParamField>

<ParamField name="payment_intent_id" body="payment_intent_id" type="string" required>
</ParamField>

<ParamField name="card_token" body="card_token" type="string" required>
</ParamField>

### Request Examples

<RequestExample>

```json title="Request"
{
  "payment_intent_id": "pi_429f578b-...",
  "card_token": "tokn_80aebb6ea2594a74bc215a64",
  "first_name": "Jane",
  "last_name": "Doe",
  "email": "jane@example.com",
  "billing_address1": "123 Market St",
  "billing_city": "San Francisco",
  "billing_state": "CA",
  "billing_zip": "94105",
  "billing_country": "US"
}
```

</RequestExample>

## Responses

| Status | Description |
| --- | --- |
| `200` | Charge result |
| `400` | Bad request — invalid or missing parameters |

### 200 response


One of the following variants:

<Expandable title="Charge succeeded">
  <ResponseField name="payment_intent_id" type="string">
  </ResponseField>

  <ResponseField name="transaction_id" type="string">
  </ResponseField>

  <ResponseField name="status" type="string">

    Possible values: `succeeded`
  </ResponseField>

  <ResponseField name="requires_action" type="boolean">
  </ResponseField>

</Expandable>

<Expandable title="Charge failed">
  <ResponseField name="payment_intent_id" type="string">
  </ResponseField>

  <ResponseField name="status" type="string">

    Possible values: `failed`
  </ResponseField>

  <ResponseField name="requires_action" type="boolean">
  </ResponseField>

  <ResponseField name="failure_code" type="string">
  </ResponseField>

  <ResponseField name="failure_message" type="string">
  </ResponseField>

</Expandable>

<ResponseExample>

```json title="Succeeded"
{
  "payment_intent_id": "pi_429f578b-...",
  "transaction_id": "txn_a1b2c3d4-...",
  "status": "succeeded",
  "requires_action": false
}
```

```json title="Failed"
{
  "payment_intent_id": "pi_429f578b-...",
  "status": "failed",
  "requires_action": false,
  "failure_code": "card_declined",
  "failure_message": "Your card was declined"
}
```

</ResponseExample>

### 400 response

<ResponseField name="data" type="null">
</ResponseField>

<ResponseField name="error" type="string">
</ResponseField>

## Authorization

- **ApiKeyAuth**
