---
updatedAt: 2026-02-20T16:50:32.000Z
agentTools:
  siteIndex: https://docs.affirm.com/llms.txt
  projectIndex: https://docs.affirm.com/developers/llms.txt
---

# Read, Void, Refund, and Update Transactions

Explore that actions you can take when using Affirm's Transactions API. Learn about reading, voiding, refunding, and updating a transaction.

<HTMLBlock>{`
<style>
  .dropdown-menu {
    font-family: Arial, sans-serif;
    max-width: 250px;
    margin-left: auto; /* Align to the right */
  	margin-right: 0; /* Ensure it's flush to the right */
    border: 1px solid #ddd;
    border-radius: 8px;
    padding: 10px;
    background: #4A4AF4;
    overflow: hidden; /* Ensure the container grows with content */
  }

  .dropdown-item {
    margin-bottom: 10px;
  }

  .dropdown-toggle {
    display: block;
    width: 100%;
    text-align: left;
    padding: 10px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    cursor: pointer;
  }

  .dropdown-toggle:hover {
    background: #f0f0f0;
  }

  .dropdown-content {
    display: none;
    margin-top: 5px;
    padding: 10px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
  }

  .dropdown-item.open .dropdown-content {
    display: block;
  }

  .flag-icon {
    width: 20px;
    height: 20px;
    margin-right: 10px;
  }

  .product-item {
    margin-bottom: 5px;
  }

  .product-icon {
    width: 20px;
    height: 20px;
    margin-right: 10px;
  }
  
  .country-title {
    font-family: Arial, sans-serif;
    font-size:20px;
    text-align: center;
    font-weight: bold;
    color: #ffffff;
  } 

</style>
  <div class="dropdown-menu">
    <p class="country-title" alt="Countries where this product is available">Country Availability</p>

    <div class="dropdown-item">
      <button class="dropdown-toggle" onclick="toggleDropdown(event)" alt="Drop down menu displaying the available countries for this product">
        <b>Country List</b> ⬇️
      </button>
      <div class="dropdown-content">
        <div class="product-item">
          <img src="https://files.readme.io/a4c8b3d6596d943e2b93c82cb1d432a2edaf6998667835c2e97ef4a31d460c7e-us-circle-01.png" alt="USA" class="flag-icon">
          USA
        </div>
        <div class="product-item">
          <img src="https://files.readme.io/3ca294a1b4b8b8506c3ff32876abc6e3e33d0e65a509dab81398915094bdbc5c-61TcZ33ZrJL._AC_UY1000_.jpg" alt="Canada" class="flag-icon">
          Canada
        </div>
        <div class="product-item">
          <img src="https://files.readme.io/db98461fef617df7c9970e98f01150f067fcee1fc823a450f09056138b9f70be-united-kingdom-flag-rounded-icon-uk-flag-union-jack-vector.jpg" alt="UK" class="flag-icon">
          UK
        </div>
      </div>
    </div>

  </div>
`}</HTMLBlock>

## Overview

After creating a `transaction`, you can manage it through various states and integrate each of the actions into your order management system, which is where you fulfill orders and/or process payments, refunds, and cancelations.

<br />

![Read, Void, Refund, and Update a transaction](https://files.readme.io/8cebe7f-Transactions_Actions.png "Transactions Actions.png")

## Read

With the [`Read Transaction API`](https://docs.affirm.com/developers/reference/read_transaction), you can use the `id` returned from the `transaction` object to retrieve all checkout data and the transaction status of a specific transaction. Reading transaction information is useful for:

* Updating your records or order management system with the current state of a transaction before performing any actions on it.
* Keeping your system in sync with Affirm if your staff manually manage loans in the merchant dashboard.

You can read one or more transactions. When you don't specify an `id`, the response includes a list of transactions. You can define how the results are paginated using the `limit`, `before`, and `after` query parameters.

```curl
// Read a single transaction
curl https://sandbox.affirm.com/api/v1/transactions/id
     -X GET
     -u "public_key:private_key"
 
// Read multiple transactions
curl https://sandbox.affirm.com/api/v1/transactions/?limit=5&before=1234-ABCD
     -X GET
     -u "public_key:private_key"
```

## Void

When you [void an authorized transaction](https://docs.affirm.com/developers/reference/void_transaction), we:

* Permanently cancel the loan.
* Notify the user that the transaction was canceled.

To cancel or delete an authorized transaction, use the `id` associated with the transaction to void it. For example, this can occur when a user decides to cancel their order before it's fulfilled.

<Callout icon="❗️">
  **Note:** We can only void uncaptured loans.
</Callout>

```curl
curl https://sandbox.affirm.com/api/v1/transactions/id/void
     -X POST
     -u "(public_api_key):(private_api_key)"
```

## Refund

You can [refund a transaction](https://docs.affirm.com/developers/reference/refund_transaction) based on the original purchase, similar to refunding a credit card transaction. Affirm automatically calculates all interest and fees corresponding to the refunded amount.

You can also refund part of a transaction by specifying a specific amount. For partial refunds, you can apply any amount of refunds as long as there is a positive balance on the loan.

When a loan is fully refunded, it can’t be reinstated. You can refund the customer using the `Refund Transaction` request or the [Merchant Dashboard](https://www.affirm.com/dashboard/signin).

```curl
curl https://sandbox.affirm.com/api/v1/transactions/id/refund
     -X POST
     -u "(public_api_key):(private_api_key)"
     -H "Content-Type: application/json"
     -d '{"amount": 20000}'
```

## Update

You can use the [`Update Transaction`](https://docs.affirm.com/developers/reference/update_transaction) request to update a transaction with new fulfillment or order information, such as `shipping_confirmation`, `shipping_carrier`, or `order_id`. Settlement reports associate your internal order IDs with specific Affirm transactions.

```curl
curl https://sandbox.affirm.com/api/v1/transactions/id/update
     -X POST
     -u "(public_api_key):(private_api_key)"
     -H "Content-Type: application/json"
     -d '{"order_id": "order_125", "shipping_carrier": "USPS", "shipping_confirmation": "C12345678901234", "shipping": {"name":{ "full": "John Doe"},"address": {"line1": "123 Example Street", "state": "CA", "city": "San Francisco", "zipcode": "94107", "country": "USA"}}}'
```

# Sibling pages

* [Authorize and Capture Transactions](https://docs.affirm.com/developers/docs/manage-transactions.md)
* [Transaction States](https://docs.affirm.com/developers/docs/transaction-states.md)
* [Manage Split Capture Transactions](https://docs.affirm.com/developers/docs/split-capture-transactions.md)