> For the complete documentation index, see [llms.txt](https://developer.paddle.com/llms.txt).

# Refund or credit a transaction

Create an adjustment to record a change to a billed or completed transaction, like a refund or credit. Most refunds for live accounts have to be approved by Paddle.

---

If you need to change a billed or completed transaction, you can create an adjustment. Adjustments let you refund or credit a transaction after it's been billed or completed.

Adjustments sit alongside transactions. The existing [transaction entity](https://developer.paddle.com/api-reference/transactions/overview.md) remains on your system unchanged for recordkeeping purposes.

## How it works

Billed and completed transactions are financial records, so they can't be deleted or changed. This is especially important when working with [manually-collected transactions](https://developer.paddle.com/build/invoices/create-issue-invoices.md) because they're considered issued invoices. Paddle assigns them an invoice number and sends them to customers, so any financial adjustments must be correctly recorded.

Use adjustments to refund or credit all or part of a transaction and its items. A transaction may have multiple adjustments where you've refunded or credited different items.

Paddle automatically sends a credit note to customers as a PDF so they have a record of a refund or credit. You can also download credit notes from the Paddle dashboard or generate a URL to them using the API.

### Refunds

Refunds let you return some or the total a transaction amount to customers. The money is returned to the original payment method that the customer used.

To keep the platform safe for everyone, most refunds for live accounts require approval from Paddle. They're created with the status of `pending_approval`, before moving to `approved` or `rejected` once reviewed.

For live accounts, Paddle automatically approves refunds when:

- Your account has been through [Paddle account verification](https://www.paddle.com/help/start/account-verification) and is active.
- The refund amount is less than or equal to 400 `USD`, or equivalent [in another currency](https://developer.paddle.com/concepts/sell/supported-currencies.md).
- The refund amount is less than your balance.
- The customer paid using a [payment method](https://developer.paddle.com/concepts/payment-methods/overview.md) other than [bank transfer](https://developer.paddle.com/concepts/payment-methods/wire-transfer.md).

For [sandbox accounts](https://developer.paddle.com/sdks/sandbox.md), Paddle automatically approves all refunds every ten minutes.

### Credits

Credits let you give customers some or the total of a transaction amount as a credit. You can create credits for manually-collected transactions (invoices) to reduce the amount due on issued invoices.

For example, if you [create and issue an invoice](https://developer.paddle.com/build/invoices/create-issue-invoices.md) then want to remove an item, you can create an adjustment for the item you want to remove. Paddle automatically applies the credit to the issued invoice, reducing the amount the customer owes.

When you credit the full value of a transaction, it's marked as `completed`. It's no longer due.

Credits don't need approval from Paddle.

{% callout type="info" %}
Credits in Paddle are always related to existing transactions. [They adjust an amount](https://developer.paddle.com/build/transactions/create-transaction-adjustments.md) that's been paid, or an amount that's due on an issued invoice. They're not promotional credits, which are credits given to customers for things like referral schemes or promotions.
{% /callout %}

### Chargebacks

When paying by [card](https://developer.paddle.com/concepts/payment-methods/credit-debit-card.md) and some other kinds of [payment methods](https://developer.paddle.com/concepts/payment-methods/overview.md), customers may dispute a charge with their payment method issuer. Issuers investigate disputes and may choose to reverse a charge. This is called a chargeback.

Paddle automatically creates adjustments for chargeback events for you:

- For some kinds of chargebacks, we get an early warning and create an adjustment with the type `chargeback_warning` for the disputed amount. The amount is refunded.
- For chargebacks where we don't get an early warning, we create an adjustment with the type `chargeback` for the disputed amount. The amount is refunded.
- The Paddle team contests chargebacks for you. Where a chargeback is contested successfully, Paddle creates an adjustment with the type `chargeback_reverse` to return the amount held.

### Revise customer information

[Revising customer information for a transaction](https://developer.paddle.com/build/sell/transactions/revise-transaction-customer-details.md) is another way you can describe updates to a transaction after it's been billed or completed. However, revising a transaction is for updating customer, address, and business information against a transaction.

When you revise customer information for a transaction, Paddle may create an adjustment if there are financial changes. For example, if you add a valid tax or VAT number, Paddle automatically creates an adjustment to refund any tax where applicable.

{% collapsible title="Ways you can update a completed or billed transaction" %}

{% feature-comparison level=4 %}

{% feature-column title="Revise a transaction" %}

{% feature-item %}
Describes customer information updates to a billed or completed transaction.
{% /feature-item %}

{% feature-item %}
For example, adding extra address details or adding a tax number.
{% /feature-item %}

{% feature-item %}
Revises customer, address, and business entities for the transaction.
{% /feature-item %}

{% feature-item %}
Customer receives a revised invoice PDF.
{% /feature-item %}

{% feature-item %}
Learn more: [Revise a transaction](https://developer.paddle.com/build/sell/transactions/revise-transaction-customer-details.md)
{% /feature-item %}

{% /feature-column %}

{% feature-column title="Create an adjustment" %}

{% feature-item %}
Describes financial updates to a billed or completed transaction.
{% /feature-item %}

{% feature-item %}
For example, refunding or crediting some or all line items for a transaction.
{% /feature-item %}

{% feature-item %}
Creates a new, separate adjustment entity related to the transaction.
{% /feature-item %}

{% feature-item %}
Customer receives a credit note PDF.
{% /feature-item %}

{% feature-item %}
Learn more: [Refund or credit a transaction](https://developer.paddle.com/build/transactions/create-transaction-adjustments.md)
{% /feature-item %}

{% /feature-column %}

{% /feature-comparison %}

In both cases, the existing [transaction entity](https://developer.paddle.com/api-reference/transactions/overview.md) remains on your system unchanged for recordkeeping purposes.

{% /collapsible %}

## Before you begin

To create an adjustment, you'll need to [get the transaction ID](https://developer.paddle.com/api-reference/transactions/list-transactions.md) for the transaction you want to refund or credit.

You can use the `status` query parameter when listing with the value `completed` to get a list of completed transactions for refunds, or `billed,past_due` to get billed and past due transactions for credits.

## Create a refund

Create an adjustment with the `action` of `refund` to return some or the total a transaction amount to customers.

{% tabs sync="interaction-preference" %}
{% tab-item title="Dashboard" %}

{% instruction-steps %}

1. Go to **Paddle > Transactions**.
2. Use the search box and the **Filter by** drop-down to find the transaction you want to create a credit for.
3. Click into the transaction, then click {% mock-button %}Refund
4. Choose a reason for the refund from the drop-down. To pass your own value, use the API instead.
5. Review the items list and enter the amount to refund for each item in the **Refund amount** box, then click Continue
6. Review your refund, then click Request refund to confirm.

{% /instruction-steps %}

{% /dashboard-instructions %}

{% /tab-item %}
{% tab-item title="API" %}

Create a refund using the API in three steps:

1. **Get a transaction and extract items** {% badge label="Optional" variant="outline" /%}  
   Get the transaction you want to refund and extract line item IDs for partial refunds.
2. **Create adjustment**  
   Send a request to create the refund adjustment.
3. **Handle refund status change** {% badge label="Optional" variant="outline" /%}  
   If you present refunds to customers in your app, handle refund approval or rejection.

{% callout type="info" %}
You can't create an adjustment for a transaction while it has an existing adjustment that's pending approval. Wait for the adjustment to become approved or rejected, then create your adjustment.
{% /callout %}

### Get a transaction and extract items {% step=true badge="Optional" %}

Send a `GET` request to the `/transactions/{transaction_id}` endpoint to get the transaction you want to refund.

Adjustments are for [transaction items](https://developer.paddle.com/api-reference/transactions/overview.md). You can refund the total for a transaction, or just some of its line items. If you only want to refund some of the transaction items, extract the line item details from the transaction first.

{% callout type="warning" %}
Transactions must be `completed` to create a refund for them. You can get completed transactions using [the list transactions operation](https://developer.paddle.com/api-reference/transactions/list-transactions.md), passing `completed` as a value to the `status` query parameter.
{% /callout %}

For each item in `transaction.details.line_items[]`, extract `id` and `totals.total` — you'll need these when building a partial refund request.

{% api-example method="GET" path="/transactions/{transaction_id}" href="/api-reference/transactions/get-transaction" %}

```json
{
  "data": {
    "id": "txn_01j1f27bnwg90nggkgkf52hy34",
    "status": "completed",
    "customer_id": "ctm_01j1f28efp7j4p1ae0hqnd144s",
    "address_id": "add_01j1f28egce2412sjnzp4pxdqg",
    "business_id": null,
    "custom_data": null,
    "origin": "web",
    "collection_mode": "automatic",
    "subscription_id": "sub_01j1f28ywb5hn78y2y5tym9y4k",
    "invoice_id": "inv_01j1f28yyr4abcmbf94g66p9ht",
    "invoice_number": "325-11071",
    "billing_details": null,
    "billing_period": {
      "starts_at": "2024-06-28T09:19:26.694403Z",
      "ends_at": "2024-07-28T09:19:26.694403Z"
    },
    "currency_code": "USD",
    "discount_id": null,
    "created_at": "2024-06-28T09:18:35.302514Z",
    "updated_at": "2024-06-28T09:19:28.520054Z",
    "billed_at": "2024-06-28T09:19:27.273799Z",
    "items": [
      {
        "price": {
          "id": "pri_01gsz8x8sawmvhz1pv30nge1ke",
          "description": "Monthly",
          "type": "standard",
          "name": "Monthly (per seat)",
          "product_id": "pro_01gsz4t5hdjse780zja8vvr7jg",
          "billing_cycle": {
            "interval": "month",
            "frequency": 1
          },
          "trial_period": null,
          "tax_mode": "account_setting",
          "unit_price": {
            "amount": "3000",
            "currency_code": "USD"
          },
          "unit_price_overrides": [],
          "custom_data": null,
          "quantity": {
            "minimum": 1,
            "maximum": 999
          },
          "status": "active",
          "created_at": "2023-02-23T13:55:22.538367Z",
          "updated_at": "2024-04-11T13:54:52.254748Z"
        },
        "quantity": 10
      },
      {
        "price": {
          "id": "pri_01h1vjfevh5etwq3rb416a23h2",
          "description": "Monthly",
          "type": "standard",
          "name": "Monthly (recurring addon)",
          "product_id": "pro_01h1vjes1y163xfj1rh1tkfb65",
          "billing_cycle": {
            "interval": "month",
            "frequency": 1
          },
          "trial_period": null,
          "tax_mode": "account_setting",
          "unit_price": {
            "amount": "10000",
            "currency_code": "USD"
          },
          "unit_price_overrides": [],
          "custom_data": null,
          "quantity": {
            "minimum": 1,
            "maximum": 100
          },
          "status": "active",
          "created_at": "2023-06-01T13:31:12.625056Z",
          "updated_at": "2024-04-12T10:42:45.476453Z"
        },
        "quantity": 1
      },
      {
        "price": {
          "id": "pri_01gsz98e27ak2tyhexptwc58yk",
          "description": "One-time addon",
          "type": "standard",
          "name": "One-time addon",
          "product_id": "pro_01gsz97mq9pa4fkyy0wqenepkz",
          "billing_cycle": null,
          "trial_period": null,
          "tax_mode": "account_setting",
          "unit_price": {
            "amount": "19900",
            "currency_code": "USD"
          },
          "unit_price_overrides": [],
          "custom_data": null,
          "quantity": {
            "minimum": 1,
            "maximum": 1
          },
          "status": "active",
          "created_at": "2023-02-23T14:01:28.391712Z",
          "updated_at": "2024-04-09T07:23:10.921392Z"
        },
        "quantity": 1
      }
    ],
    "details": {
      "tax_rates_used": [
        {
          "tax_rate": "0.08875",
          "totals": {
            "subtotal": "59900",
            "discount": "0",
            "tax": "5315",
            "total": "65215"
          }
        }
      ],
      "totals": {
        "subtotal": "59900",
        "tax": "5315",
        "discount": "0",
        "total": "65215",
        "grand_total": "65215",
        "fee": "3311",
        "credit": "0",
        "credit_to_balance": "0",
        "balance": "0",
        "earnings": "56589",
        "currency_code": "USD"
      },
      "adjusted_totals": {
        "subtotal": "59900",
        "tax": "5315",
        "total": "65215",
        "grand_total": "65215",
        "fee": "3311",
        "earnings": "56589",
        "currency_code": "USD"
      },
      "payout_totals": {
        "subtotal": "59900",
        "tax": "5315",
        "discount": "0",
        "total": "65215",
        "credit": "0",
        "credit_to_balance": "0",
        "balance": "0",
        "grand_total": "65215",
        "fee": "3311",
        "earnings": "56589",
        "currency_code": "USD"
      },
      "adjusted_payout_totals": {
        "subtotal": "59900",
        "tax": "5315",
        "total": "65215",
        "fee": "3311",
        "chargeback_fee": {
          "amount": "0",
          "original": null
        },
        "earnings": "56589",
        "currency_code": "USD"
      },
      "line_items": [
        {
          "id": "txnitm_01j1f28f89k9wfjwns16b1yqww",
          "price_id": "pri_01gsz8x8sawmvhz1pv30nge1ke",
          "quantity": 10,
          "totals": {
            "subtotal": "30000",
            "tax": "2662",
            "discount": "0",
            "total": "32662"
          },
          "product": {
            "id": "pro_01gsz4t5hdjse780zja8vvr7jg",
            "name": "AeroEdit Pro",
            "description": "Designed for professional pilots, including all features plus in Basic plus compliance monitoring, route optimization, and third-party integrations.",
            "type": "standard",
            "tax_category": "standard",
            "image_url": "https://paddle.s3.amazonaws.com/user/165798/bT1XUOJAQhOUxGs83cbk_pro.png",
            "custom_data": {
              "features": {
                "aircraft_performance": true,
                "compliance_monitoring": true,
                "flight_log_management": true,
                "payment_by_invoice": false,
                "route_planning": true,
                "sso": false
              },
              "suggested_addons": [
                "pro_01h1vjes1y163xfj1rh1tkfb65",
                "pro_01gsz97mq9pa4fkyy0wqenepkz"
              ],
              "upgrade_description": "Move from Basic to Pro to take advantage of aircraft performance, advanced route planning, and compliance monitoring."
            },
            "status": "active",
            "created_at": "2023-02-23T12:43:46.605Z",
            "updated_at": "2024-04-05T15:53:44.687Z"
          },
          "tax_rate": "0.08875",
          "unit_totals": {
            "subtotal": "3000",
            "tax": "266",
            "discount": "0",
            "total": "3266"
          }
        },
        {
          "id": "txnitm_01j1f28f89k9wfjwns1csjh996",
          "price_id": "pri_01h1vjfevh5etwq3rb416a23h2",
          "quantity": 1,
          "totals": {
            "subtotal": "10000",
            "tax": "887",
            "discount": "0",
            "total": "10887"
          },
          "product": {
            "id": "pro_01h1vjes1y163xfj1rh1tkfb65",
            "name": "Analytics addon",
            "description": "Unlock advanced insights into your flight data with enhanced analytics and reporting features. Includes customizable reporting templates and trend analysis across flights.",
            "type": "standard",
            "tax_category": "standard",
            "image_url": "https://paddle.s3.amazonaws.com/user/165798/97dRpA6SXzcE6ekK9CAr_analytics.png",
            "custom_data": null,
            "status": "active",
            "created_at": "2023-06-01T13:30:50.302Z",
            "updated_at": "2024-04-05T15:47:17.163Z"
          },
          "tax_rate": "0.08875",
          "unit_totals": {
            "subtotal": "10000",
            "tax": "887",
            "discount": "0",
            "total": "10887"
          }
        },
        {
          "id": "txnitm_01j1f28f89k9wfjwns1htt8bpw",
          "price_id": "pri_01gsz98e27ak2tyhexptwc58yk",
          "quantity": 1,
          "totals": {
            "subtotal": "19900",
            "tax": "1766",
            "discount": "0",
            "total": "21666"
          },
          "product": {
            "id": "pro_01gsz97mq9pa4fkyy0wqenepkz",
            "name": "Custom domains",
            "description": "Make AeroEdit truly your own with custom domains. Custom domains reinforce your brand identity and make it easy for your team to access your account.",
            "type": "standard",
            "tax_category": "standard",
            "image_url": "https://paddle.s3.amazonaws.com/user/165798/XIG7UXoJQHmlIAiKcnkA_custom-domains.png",
            "custom_data": null,
            "status": "active",
            "created_at": "2023-02-23T14:01:02.441Z",
            "updated_at": "2024-04-05T15:43:28.971Z"
          },
          "tax_rate": "0.08875",
          "unit_totals": {
            "subtotal": "19900",
            "tax": "1766",
            "discount": "0",
            "total": "21666"
          }
        }
      ]
    },
    "payments": [
      {
        "payment_attempt_id": "e525fb4b-198f-4c50-9ef8-abdba320baa4",
        "stored_payment_method_id": "c39eb66d-b1a6-4d1f-b352-ed82442b06bb",
        "payment_method_id": "paymtd_01j1f28vewjjgjhpkwh90r2fqw",
        "amount": "65215",
        "status": "captured",
        "error_code": null,
        "method_details": {
          "type": "card",
          "korea_local": null,
          "card": {
            "type": "visa",
            "last4": "4242",
            "expiry_month": 10,
            "expiry_year": 2025,
            "cardholder_name": "Sam Miller"
          }
        },
        "created_at": "2024-06-28T09:19:24.150496Z",
        "captured_at": "2024-06-28T09:19:26.694403Z"
      }
    ],
    "checkout": {
      "url": "https://magnificent-entremet-7ae0c6.netlify.app/default/overlay?_ptxn=txn_01j1f27bnwg90nggkgkf52hy34"
    },
    "receipt_data": null
  },
  "meta": {
    "request_id": "ea6e5746-0e88-48ed-b6d4-6d78acce5d1e"
  }
}
```

{% /api-example %}

### Create adjustment {% step=true %}

Send a `POST` request to the `/adjustments` endpoint to create the refund adjustment.

In your request, include:

- `type`: `full` to refund the complete transaction total, or `partial` to refund specific items.
- `transaction_id`: Paddle ID for the transaction to refund.
- `action: refund` to return the amount to the original payment method.
- `reason`: why you're refunding — shown in the Paddle dashboard and kept for recordkeeping.

For `partial` refunds, include an `items` array with `item_id` and `type` per item. For each item, use `type: full` to refund the whole item, or `type: partial` with an `amount` for a partial item refund.

{% callout type="info" %}
By default, `items[].amount` is inclusive of tax. Include `tax_mode: external` to say that amounts are exclusive of tax.
{% /callout %}

{% api-example method="POST" path="/adjustments" href="/api-reference/adjustments/create-adjustment" %}

```json
{
  "action": "refund",
  "type": "partial",
  "transaction_id": "txn_01j1f27bnwg90nggkgkf52hy34",
  "reason": "goodwill gesture",
  "items": [
    {
      "item_id": "txnitm_01j1f28f89k9wfjwns1htt8bpw",
      "type": "full"
    },
    {
      "item_id": "txnitm_01j1f28f89k9wfjwns1csjh996",
      "type": "partial",
      "amount": "5000"
    }
  ]
}
```

```json
{
  "data": {
    "id": "adj_01j1f9cx0g7skrg9kwsxmgxg5p",
    "action": "refund",
    "type": "partial",
    "transaction_id": "txn_01j1f27bnwg90nggkgkf52hy34",
    "subscription_id": "sub_01j1f28ywb5hn78y2y5tym9y4k",
    "customer_id": "ctm_01j1f28efp7j4p1ae0hqnd144s",
    "reason": "goodwill gesture",
    "currency_code": "USD",
    "status": "pending_approval",
    "items": [
      {
        "id": "adjitm_01j1f9cx0g7skrg9kwszsbbxs2",
        "item_id": "txnitm_01j1f28f89k9wfjwns1htt8bpw",
        "type": "full",
        "amount": "21666",
        "proration": null,
        "totals": {
          "subtotal": "19900",
          "tax": "1766",
          "total": "21666"
        }
      },
      {
        "id": "adjitm_01j1f9cx0g7skrg9kwt0gy6ftn",
        "item_id": "txnitm_01j1f28f89k9wfjwns1csjh996",
        "type": "partial",
        "amount": "5000",
        "proration": null,
        "totals": {
          "subtotal": "4592",
          "tax": "408",
          "total": "5000"
        }
      }
    ],
    "totals": {
      "subtotal": "24492",
      "tax": "2174",
      "total": "26666",
      "fee": "1354",
      "earnings": "23138",
      "currency_code": "USD"
    },
    "payout_totals": {
      "subtotal": "24492",
      "tax": "2174",
      "total": "26666",
      "fee": "1354",
      "earnings": "23138",
      "currency_code": "USD"
    },
    "created_at": "2024-06-28T11:23:56.842159Z",
    "updated_at": "2024-06-28T11:23:56.842159Z"
  },
  "meta": {
    "request_id": "b1a5ec3f-a134-4c0f-9601-2ae5ff7af6a8"
  }
}
```

{% /api-example %}

### Handle refund status change {% step=true badge="Optional" %}

Most refunds for live accounts are created with the `status` of `pending_approval` until reviewed by Paddle, but [some are automatically approved](#background-refunds). For [sandbox accounts](https://developer.paddle.com/sdks/sandbox.md), Paddle automatically approves refunds every ten minutes.

From `pending_approval`, adjustments move to either:

- `approved`  
   Refund approved by Paddle. The amount is refunded to the original payment method that the customer used. This may take a few days to process.
- `rejected`  
   Refund rejected by the Paddle team. Contact the Paddle seller support team if you'd like to understand more about why a refund was rejected.

The [`adjustment.updated`](https://developer.paddle.com/webhooks/adjustments/adjustment-updated.md) event occurs when the status of an adjustment changes. Subscribe to this event to get notified when adjustments are approved or rejected. If you've built a billing information page in your app, you might like to update the status of the refund on this page.

{% /tab-item %}
{% /tabs %}

## Create a credit

Create an adjustment with the `action` of `credit` to give customers some or the total of a manually-collected transaction (invoice) amount as a credit.

Create a credit using the API in two steps:

1. **Get a transaction and extract items** {% badge label="Optional" variant="outline" /%}  
   Get the transaction you want to credit and extract line item IDs for partial credits.
2. **Create adjustment**  
   Send a request to create the credit adjustment.

{% callout type="info" %}
You can only create credits for manually-collected transactions (invoices). You can't create credits for automatically-collected transactions.
{% /callout %}

### Get a transaction and extract items {% step=true stepReset=true badge="Optional" %}

Send a `GET` request to the `/transactions/{transaction_id}` endpoint to get the transaction you want to credit.

Adjustments are for [transaction items](https://developer.paddle.com/api-reference/transactions/overview.md). You can credit the total for a transaction, or just some of its line items. If you only want to credit some of the transaction items, extract the line item details from the transaction first.

{% callout type="info" %}
Transactions must be `billed` or `past_due` to create a credit for them. You can get billed and past due transactions using [the list transactions operation](https://developer.paddle.com/api-reference/transactions/list-transactions.md), passing `billed,past_due` as a value to the `status` query parameter.
{% /callout %}

For each item in `transaction.details.line_items[]`, extract `id` and `totals.total` — you'll need these when building a partial credit request.

{% api-example method="GET" path="/transactions/{transaction_id}" href="/api-reference/transactions/get-transaction" %}

```json
{
  "data": {
    "id": "txn_01j1fcdrmgxnp2vw6qxtpr44mf",
    "status": "billed",
    "customer_id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4",
    "address_id": "add_01hv8gq3318ktkfengj2r75gfx",
    "business_id": null,
    "custom_data": null,
    "origin": "api",
    "collection_mode": "manual",
    "subscription_id": "sub_01j1fcex1ygrbc34pxvkz58tw5",
    "invoice_id": "inv_01j1fcdsd9jj41dehanc2n7s5e",
    "invoice_number": "325-11075",
    "billing_details": {
      "enable_checkout": false,
      "payment_terms": {
        "interval": "day",
        "frequency": 14
      },
      "purchase_order_number": "PO-123",
      "additional_information": null
    },
    "billing_period": {
      "starts_at": "2024-04-12T00:00:00Z",
      "ends_at": "2025-04-11T23:59:00Z"
    },
    "currency_code": "USD",
    "discount_id": null,
    "created_at": "2024-06-28T12:16:51.341605Z",
    "updated_at": "2024-06-28T12:17:29.828052Z",
    "billed_at": "2024-06-28T12:17:27.293391Z",
    "items": [
      {
        "price": {
          "id": "pri_01gsz91wy9k1yn7kx82aafwvea",
          "description": "Annual",
          "type": "standard",
          "name": "Annual (per seat)",
          "product_id": "pro_01gsz4vmqbjk3x4vvtafffd540",
          "billing_cycle": {
            "interval": "year",
            "frequency": 1
          },
          "trial_period": null,
          "tax_mode": "account_setting",
          "unit_price": {
            "amount": "50000",
            "currency_code": "USD"
          },
          "unit_price_overrides": [],
          "custom_data": null,
          "quantity": {
            "minimum": 1,
            "maximum": 100
          },
          "status": "active",
          "created_at": "2023-02-23T13:57:54.249913Z",
          "updated_at": "2024-04-05T14:32:00.471447Z"
        },
        "quantity": 20
      },
      {
        "price": {
          "id": "pri_01gsz96z29d88jrmsf2ztbfgjg",
          "description": "Annual (recurring addon)",
          "type": "standard",
          "name": "Annual (recurring addon)",
          "product_id": "pro_01gsz92krfzy3hcx5h5rtgnfwz",
          "billing_cycle": {
            "interval": "year",
            "frequency": 1
          },
          "trial_period": null,
          "tax_mode": "account_setting",
          "unit_price": {
            "amount": "300000",
            "currency_code": "USD"
          },
          "unit_price_overrides": [],
          "custom_data": null,
          "quantity": {
            "minimum": 1,
            "maximum": 1
          },
          "status": "active",
          "created_at": "2023-02-23T14:00:40.265185Z",
          "updated_at": "2024-03-25T14:31:18.587603Z"
        },
        "quantity": 1
      },
      {
        "price": {
          "id": "pri_01gsz98e27ak2tyhexptwc58yk",
          "description": "One-time addon",
          "type": "standard",
          "name": "One-time addon",
          "product_id": "pro_01gsz97mq9pa4fkyy0wqenepkz",
          "billing_cycle": null,
          "trial_period": null,
          "tax_mode": "account_setting",
          "unit_price": {
            "amount": "19900",
            "currency_code": "USD"
          },
          "unit_price_overrides": [],
          "custom_data": null,
          "quantity": {
            "minimum": 1,
            "maximum": 1
          },
          "status": "active",
          "created_at": "2023-02-23T14:01:28.391712Z",
          "updated_at": "2024-04-09T07:23:10.921392Z"
        },
        "quantity": 1
      }
    ],
    "details": {
      "tax_rates_used": [
        {
          "tax_rate": "0.08875",
          "totals": {
            "subtotal": "1319900",
            "discount": "0",
            "tax": "117141",
            "total": "1437041"
          }
        }
      ],
      "totals": {
        "subtotal": "1319900",
        "tax": "117141",
        "discount": "0",
        "total": "1437041",
        "grand_total": "1437041",
        "fee": null,
        "credit": "0",
        "credit_to_balance": "0",
        "balance": "1437041",
        "earnings": null,
        "currency_code": "USD"
      },
      "adjusted_totals": {
        "subtotal": "1319900",
        "tax": "117141",
        "total": "1437041",
        "grand_total": "1437041",
        "fee": "0",
        "earnings": "0",
        "currency_code": "USD"
      },
      "payout_totals": null,
      "adjusted_payout_totals": null,
      "line_items": [
        {
          "id": "txnitm_01j1fcds3vh4rma21djdw6pd2f",
          "price_id": "pri_01gsz91wy9k1yn7kx82aafwvea",
          "quantity": 20,
          "totals": {
            "subtotal": "1000000",
            "tax": "88750",
            "discount": "0",
            "total": "1088750"
          },
          "product": {
            "id": "pro_01gsz4vmqbjk3x4vvtafffd540",
            "name": "AeroEdit Enterprise",
            "description": "The ultimate solution for organizations, featuring all Pro capabilities plus multi-user support, advanced data storage capabilities, plus personalized onboarding, dedicated account management, and the ability to pay via invoice.",
            "type": "standard",
            "tax_category": "standard",
            "image_url": "https://paddle.s3.amazonaws.com/user/165798/Ws808ziTS76a6YbnMkiK_enterprise.png",
            "custom_data": {
              "features": {
                "aircraft_performance": true,
                "compliance_monitoring": true,
                "flight_log_management": true,
                "payment_by_invoice": true,
                "route_planning": true,
                "sso": true
              },
              "suggested_addons": [],
              "upgrade_description": "Ready to reach new heights? Upgrade to enterprise to unlock single sign-on, payment by invoice, and dedicated account management."
            },
            "status": "active",
            "created_at": "2023-02-23T12:44:34.923Z",
            "updated_at": "2024-04-05T15:58:28.309Z"
          },
          "tax_rate": "0.08875",
          "unit_totals": {
            "subtotal": "50000",
            "tax": "4437",
            "discount": "0",
            "total": "54437"
          }
        },
        {
          "id": "txnitm_01j1fcds3vh4rma21djm79vf9e",
          "price_id": "pri_01gsz96z29d88jrmsf2ztbfgjg",
          "quantity": 1,
          "totals": {
            "subtotal": "300000",
            "tax": "26625",
            "discount": "0",
            "total": "326625"
          },
          "product": {
            "id": "pro_01gsz92krfzy3hcx5h5rtgnfwz",
            "name": "Reporting module",
            "description": "Get access to comprehensive reports and customizable analytics dashboards.",
            "type": "standard",
            "tax_category": "standard",
            "image_url": "https://paddle.s3.amazonaws.com/user/165798/qgyipKJwRtq98YNboipo_vip-support.png",
            "custom_data": null,
            "status": "active",
            "created_at": "2023-02-23T13:58:17.615Z",
            "updated_at": "2024-04-05T15:44:02.893Z"
          },
          "tax_rate": "0.08875",
          "unit_totals": {
            "subtotal": "300000",
            "tax": "26625",
            "discount": "0",
            "total": "326625"
          }
        },
        {
          "id": "txnitm_01j1fcds3vh4rma21djq3pd3e7",
          "price_id": "pri_01gsz98e27ak2tyhexptwc58yk",
          "quantity": 1,
          "totals": {
            "subtotal": "19900",
            "tax": "1766",
            "discount": "0",
            "total": "21666"
          },
          "product": {
            "id": "pro_01gsz97mq9pa4fkyy0wqenepkz",
            "name": "Custom domains",
            "description": "Make AeroEdit truly your own with custom domains. Custom domains reinforce your brand identity and make it easy for your team to access your account.",
            "type": "standard",
            "tax_category": "standard",
            "image_url": "https://paddle.s3.amazonaws.com/user/165798/XIG7UXoJQHmlIAiKcnkA_custom-domains.png",
            "custom_data": null,
            "status": "active",
            "created_at": "2023-02-23T14:01:02.441Z",
            "updated_at": "2024-04-05T15:43:28.971Z"
          },
          "tax_rate": "0.08875",
          "unit_totals": {
            "subtotal": "19900",
            "tax": "1766",
            "discount": "0",
            "total": "21666"
          }
        }
      ]
    },
    "payments": [],
    "checkout": {
      "url": null
    },
    "receipt_data": null
  },
  "meta": {
    "request_id": "cf64444f-9f31-4ed1-8a28-5752cea52723"
  }
}
```

{% /api-example %}

### Create adjustment {% step=true %}

Send a `POST` request to the `/adjustments` endpoint to create the credit adjustment.

In your request, include:

- `type`: `full` to credit the complete transaction total, or `partial` to credit specific items.
- `transaction_id`: Paddle ID for the transaction to credit.
- `action: credit` to give the amount as a credit to the customer.
- `reason`: why you're crediting this amount. This is shown in the Paddle dashboard and kept for recordkeeping.

For `partial` credits, include an `items` array with `item_id` and `type` per item. For each item, use `type: full` to credit the whole item, or `type: partial` with an `amount` for a partial item credit.

{% api-example method="POST" path="/adjustments" href="/api-reference/adjustments/create-adjustment" %}

```json
{
  "action": "credit",
  "transaction_id": "txn_01j1fcdrmgxnp2vw6qxtpr44mf",
  "type": "partial",
  "reason": "error",
  "items": [
    {
      "item_id": "txnitm_01j1fcds3vh4rma21djq3pd3e7",
      "type": "full"
    },
    {
      "item_id": "txnitm_01j1fcds3vh4rma21djm79vf9e",
      "type": "partial",
      "amount": "100000"
    }
  ]
}
```

```json
{
  "data": {
    "id": "adj_01j1fcvs6wpjbk0ymqbqcj7k2g",
    "action": "credit",
    "type": "partial",
    "credit_applied_to_balance": false,
    "transaction_id": "txn_01j1fcdrmgxnp2vw6qxtpr44mf",
    "subscription_id": "sub_01j1fcex1ygrbc34pxvkz58tw5",
    "customer_id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4",
    "reason": "error",
    "currency_code": "USD",
    "status": "approved",
    "items": [
      {
        "id": "adjitm_01j1fcvs6wpjbk0ymqbqgdf6pg",
        "item_id": "txnitm_01j1fcds3vh4rma21djq3pd3e7",
        "type": "full",
        "amount": "21666",
        "proration": null,
        "totals": {
          "subtotal": "19900",
          "tax": "1766",
          "total": "21666"
        }
      },
      {
        "id": "adjitm_01j1fcvs6wpjbk0ymqbvcz2945",
        "item_id": "txnitm_01j1fcds3vh4rma21djm79vf9e",
        "type": "partial",
        "amount": "100000",
        "proration": null,
        "totals": {
          "subtotal": "91848",
          "tax": "8152",
          "total": "100000"
        }
      }
    ],
    "totals": {
      "subtotal": "111748",
      "tax": "9918",
      "total": "121666",
      "fee": "0",
      "earnings": "111748",
      "currency_code": "USD"
    },
    "payout_totals": null,
    "created_at": "2024-06-28T12:24:30.191798Z",
    "updated_at": "2024-06-28T12:24:30.191798Z"
  },
  "meta": {
    "request_id": "c78e0f33-6b88-466e-aafc-0789ee305201"
  }
}
```

{% /api-example %}

## Generate a credit note document

Generate a credit note document as a PDF to give to a customer as a record of a refund or credit.

{% tabs sync="interaction-preference" %}
{% tab-item title="Dashboard" %}

{% instruction-steps %}

1. Go to **Paddle > Transactions**.
2. Use the search box and the **Filter by** drop-down to find a transaction with an adjustment that you'd like to download a credit note for.
3. Click into the transaction, then scroll to the credit section of the transaction page.
4. Click {% mock-button %}View credit note to open a PDF of the credit note.

{% /instruction-steps %}

{% /dashboard-instructions %}

{% /tab-item %}
{% tab-item title="API" %}

Send a `GET` request to the `/adjustments/{adjustment_id}/credit-note` endpoint to generate a URL to a credit note PDF for an adjustment.

{% api-example method="GET" path="/adjustments/{adjustment_id}/credit-note" href="/api-reference/adjustments/get-credit-note" %}

```json
{
  "data": {
    "url": "https://paddle-production-invoice-service-pdfs.s3.amazonaws.com/credit_notes/15839/crdnt_01j4scmgpbtbxap16573dtck9n/credit_notes_296-10016_Paddle-com.pdf"
  },
  "meta": {
    "request_id": "e34d4a9c-2088-447d-a3a1-1da5ce74f507"
  }
}
```

{% /api-example %}

{% /tab-item %}
{% /tabs %}