---
title: "Charge a billing agreement"
method: POST
path: "/paypal/billing_agreements/{id}/charge"
---

# Charge a billing agreement

`POST /paypal/billing_agreements/{id}/charge`

## Request

- Base URL: `https://gateway.pmnts-sandbox.io/v1.0`
- URL: `https://gateway.pmnts-sandbox.io/v1.0/paypal/billing_agreements/{id}/charge`
- Auth: HTTP basic

## Path parameters

- `id` string, required

## Headers

- `Content-Type` string

## Request body

- object
  - `amount` integer, required: A positive integer representing how much to charge, in the smallest currency unit (eg., 100 to charge $1.00, or 100 to Charge ¥100, a zero decimal currency)
  - `reference` string, required: Reference of the transaction
  - `currency` string, required: Three letter [ISO currency code](https://pmnts.readme.io/v1.0/docs/iso-currency-codes-1), in UPPERCASE
  - `purchases` object[], required: An array representing purchases. Please note that currently one item is accepted in this array.
    - `description` string: Description of the purchase
    - `soft_descriptor` string: The payment descriptor on account transactions on the customer's credit card statement, that PayPal sends to processors.
    - `items` object[]: An array of items that the customer purchases from the merchant
      - `name` string, required: Item name
      - `unit_amount` integer, required: Item unit amount
      - `qty` integer, required: The item quantity
      - `tax` integer: The item tax for each unit. If tax is specified, `purchase_units[].amount.breakdown.tax_total` is required. Must equal `tax * quantity` for all items.
      - `sku` string: The stock keeping unit (SKU) for the item
      - `category` string: Item category; Possible values: PHYSICAL_GOODS, DIGITAL_GOODS
    - `shipping_address` object
      - `method` string: Shipping address method, e.g. `Australia Post`
      - `address` object
        - `first_name` string, required
        - `last_name` string, required
        - `address_1` string, required
        - `address_2` string, required
        - `city` string, required
        - `state` string, required
        - `postcode` string, required
        - `country` string, required
    - `amount` object
      - `amount.item_total` integer: The subtotal for all items. Required if the request includes `purchase_units[].items[].unit_amount`. Must equal the sum of (`items[].unit_amount * items[].quantity`) for all items.
      - `amount.shipping` integer: The shipping fee for all items
      - `amount.tax_total` integer: The total tax for all items. Required if the request includes `purchase_units.items.tax`. Must equal the sum of (`items[].tax * items[].quantity`) for all items.
      - `amount.handling` integer: The handling fee for all items
      - `amount.shipping_discount` integer: The shipping discount for all items
      - `amount.discount` integer: The discount for all items
      - `amount.insurance` integer: The insurance fee for all items

## Response `200`

200

- object
  - `successful` boolean
  - `response` object
    - `id` string
    - `reference` string
    - `amount` integer
    - `decimal_amount` integer
    - `successful` boolean
    - `message` string
    - `currency` string
    - `transaction_id` string
    - `transaction_date` string
    - `intent` string
    - `paypal_reference` string
    - `invoice_id` string
    - `billing_agreement_id` string
    - `status` string
    - `payment_source` string
    - `authorized_amount` integer
    - `captured_amount` integer
    - `refunded_amount` integer
    - `authorizations` unknown[]
      - unknown
    - `captures` object[]
      - `id` string
      - `status` string
      - `captured` boolean
      - `amount` integer
      - `decimal_amount` integer
      - `successful` boolean
      - `currency` string
      - `transaction_id` string
      - `transaction_date` string
      - `invoice_id` string
      - `paypal_fee` integer
      - `seller_receivable_net_amount` integer
      - `note_to_payer` string
      - `is_final_capture` boolean
    - `refunds` unknown[]
      - unknown
    - `payer` object
      - `id` string
      - `email` string
      - `address` object
        - `country_code` string
    - `payee` object
      - `id` string
      - `email` unknown
  - `errors` unknown[]
    - unknown
  - `test` boolean

## Other responses

- `404`: 404
- `422`: 422

## Changes

- **2026-11-03** `a62ddbae3800`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/fatzebra/apis/gateway/changes/paypal/billing_agreements/:id/charge/post.md)

---

[API](https://skmtc.dev/fatzebra/apis/gateway.md) - [All operations](https://skmtc.dev/fatzebra/apis/gateway/llms.txt) - [OpenAPI document](https://skmtc.dev/fatzebra/apis/gateway/revisions/a62ddbae3800?raw)
