> ## Documentation Index
> Fetch the complete documentation index at: https://www.smartretry.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Charge future transaction

> Execute a scheduled future payment immediately, before its planned date.

`POST /v1/payments/recurring/future-transactions/charge/{terminal_friendly_id}`

Processes a future transaction right away, before its scheduled date. Use this endpoint when you need to execute an upcoming payment early - for example, when a customer upgrades their plan mid-cycle and you want to collect the prorated amount immediately.

<Warning>
  This endpoint executes the payment before its scheduled date. Once processed, the transaction moves to `completed` status and will not be charged again on its original scheduled date.
</Warning>

<Note>
  Safe retries for this POST endpoint use the `Idempotency-Key` header. Reuse the same key only when retrying the exact same request body. See [Idempotency](/docs/api-reference/idempotency).
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://terminal.smartretry.com/v1/payments/recurring/future-transactions/charge/ABC123 \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: YOUR_API_KEY' \
    --header 'Idempotency-Key: future-charge-20260401-001' \
    --data '{
      "future_transaction_id": "FT3D8E1C",
      "recurring_id": "RC9F4A2B"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://terminal.smartretry.com/v1/payments/recurring/future-transactions/charge/ABC123",
      headers={
          "Content-Type": "application/json",
          "x-api-key": "YOUR_API_KEY",
          "Idempotency-Key": "future-charge-20260401-001"
      },
      json={
          "future_transaction_id": "FT3D8E1C",
          "recurring_id": "RC9F4A2B"
      }
  )

  print(response.json())
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://terminal.smartretry.com/v1/payments/recurring/future-transactions/charge/ABC123",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "x-api-key": "YOUR_API_KEY",
        "Idempotency-Key": "future-charge-20260401-001"
      },
      body: JSON.stringify({
        future_transaction_id: "FT3D8E1C",
        recurring_id: "RC9F4A2B"
      })
    }
  );

  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

## Path parameters

<ParamField path="terminal_friendly_id" type="string" required>
  Your 6-character terminal identifier.
</ParamField>

## Request body

<ParamField body="future_transaction_id" type="string" required>
  The 8-character identifier of the future transaction to charge immediately.
</ParamField>

<ParamField body="recurring_id" type="string" required>
  The 8-character identifier of the recurring series this future transaction belongs to.
</ParamField>

<ParamField body="amount" type="number">
  Override the scheduled amount for this charge only, in major currency units (e.g., `19.99` for \$19.99). Minimum `0.01`, maximum `999999.99`. If omitted, the amount defined on the future transaction is used.
</ParamField>

## Response

<ResponseField name="transaction_id" type="string">
  Unique identifier of the resulting transaction (8 characters).
</ResponseField>

<ResponseField name="order_id" type="string">
  Order identifier for the resulting transaction (8 characters).
</ResponseField>

<ResponseField name="recurring_id" type="string">
  The identifier of the recurring series (8 characters).
</ResponseField>

<ResponseField name="future_transaction_id" type="string">
  The identifier of the future transaction that was charged (8 characters).
</ResponseField>

<ResponseField name="accepted" type="boolean">
  `true` if the charge was authorized. `false` if the transaction was declined. Always check this field - a `200` status does not guarantee the payment succeeded.
</ResponseField>

```json Example response theme={null}
{
  "transaction_id": "TX8A3F2C",
  "order_id": "OR7B9E1D",
  "recurring_id": "RC9F4A2B",
  "future_transaction_id": "FT3D8E1C",
  "accepted": true
}
```

<Tip>
  Before charging early, use the [future transaction status endpoint](/docs/api-reference/future-transactions/status) to confirm the transaction is still in `pending` status. Attempting to charge a transaction that is already `completed`, `processing`, or `cancelled` returns an error.
</Tip>
