---
updatedAt: 2026-04-08T16:17:15.000Z
agentTools:
  siteIndex: https://docs.affirm.com/llms.txt
  projectIndex: https://docs.affirm.com/payments/llms.txt
---

# API Reference for Split Capture

Learn more about Split Capture and the Transactions API, including the authorization, capture, void, refund, update, and read endpoints.

<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;
    color: black;
  }

  .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>
    </div>

  </div>
`}</HTMLBlock>

## Overview

Split Capture uses the Transactions API which represents Affirm loans issued to the end-user. You can use the Transactions API to interact with transactions via the `Transactions` object to change the state of a transaction, update metadata, or retrieve details.

| Endpoints                                                                                                            |
| :------------------------------------------------------------------------------------------------------------------- |
| <span style={{ color: "blue" }}>POST</span> [`v1/transactions`](https://docs.affirm.com/payments/docs/split-capture-api-reference#authorization)       |
| <span style={{ color: "blue" }}>POST</span>  [`v1/transactions/id/capture`](https://docs.affirm.com/payments/docs/split-capture-api-reference#capture) |
| <span style={{ color: "blue" }}>POST</span>  [`v1/transactions/id/void`](https://docs.affirm.com/payments/docs/split-capture-api-reference#void)       |
| <span style={{ color: "blue" }}>POST</span>  [`v1/transactions/id/refund`](https://docs.affirm.com/payments/docs/split-capture-api-reference#refund)   |
| <span style={{ color: "blue" }}>POST</span>  [`v1/transactions/id/update`](https://docs.affirm.com/payments/docs/split-capture-api-reference#update)   |
| <span style={{ color: "green" }}>GET</span>  [`v1/transactions/id`](https://docs.affirm.com/payments/docs/split-capture-api-reference#read)            |

## Authorization

Authorizing a transaction occurs after a user completes the Affirm checkout flow and returns to the merchant site. Authorizing the charge generates a `transaction_id` that will be used to reference it moving forward. You must authorize a transaction to fully create it.

### Endpoint

`<https://api.affirm.com/api/v1/transactions`>

### Header parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameter
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *Idempotency-Key** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: Unique identifiers pre-generated by the client and used by the server to recognize successive calls to the same endpoint. This is required for Split Capture and encouraged for single transaction functionality.
      </td>
    </tr>
  </tbody>
</Table>

### Body parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *transaction_id** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: Unique token used for authorization. Received to the `user_confirmation_url`
      </td>
    </tr>

    <tr>
      <td>
        * *order_id** `string`
        * Optional_: Identifies the order within the merchant's order management system that this transaction corresponds to. Only returned in the response if included in the request.
      </td>
    </tr>

    <tr>
      <td>
        * *reference_id** `string`
        * Optional_: A unique identifier that may be associated with each transaction event and reconciled with the system of record used by the merchant.
      </td>
    </tr>
  </tbody>
</Table>

### Request

```curl
curl https://sandbox.affirm.com/api/v1/transactions \
     -X POST \
     -u "<public_api_key>:<private_api_key>" \
     -H "Content-Type: application/json" \
     -H "Idempotency-Key: <idempotency_value>" \
     -d '{"transaction_id": "<checkout_token>","order_id": "<order_id_value>"}'
```

### Response

```json
"status": "authorized",
    "amount_refunded": 0,
    "provider_id": 1,
    "created": "2020-06-12T20:32:09Z",
    "order_id": "random",
    "checkout_id": "LBQFHCCGETZF21GY",
    "currency": "USD",
    "amount": 99999,
    "events": [
        {
            "currency": "USD",
            "amount": 99999,
            "type": "auth",
            "id": "95FD5182N72JJ20Y",
            "created": "2020-06-12T20:35:47Z"
        }
    ],
    "authorization_expiration": "2020-12-09T20:35:48Z",
    "id": "R1CN-7IIP"
}
```

## Capture

Capture the funds of an authorized transaction, similar to capturing a credit card transaction.

### Endpoint

<span style={{ color: "blue" }}>POST</span> `<https://api.affirm.com/api/v1/transactions/{transaction_id}/capture`>

### Header parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameter
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *Idempotency-Key** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: Unique identifiers pre-generated by the client and used by the server to recognize successive calls to the same endpoint. This is required for Split Capture and encouraged for single transaction functionality.
      </td>
    </tr>
  </tbody>
</Table>

### Path parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *transaction_id** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: A unique identifier representing the transaction. The value is an alphanumeric string of 9 or 12 characters in length, depending on whether it represents an installment loan or a lease, respectively.
      </td>
    </tr>
  </tbody>
</Table>

### Body parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *amount** `int32` <span style={{ color: "Crimson" }}>REQUIRED</span>: Pass the amount to be captured. If you want to capture $50.80, the `amount` value would be 5080.
      </td>
    </tr>

    <tr>
      <td>
        * *order_id** `string`
        * Optional_: Identifies the order within the merchant's order management system that this transaction corresponds to. Only returned in the response if included in the request.
      </td>
    </tr>

    <tr>
      <td>
        * *reference_id** `string`
        * Optional_: A unique identifier that may be associated with each transaction event and reconciled with the system of record used by the merchant.
      </td>
    </tr>

    <tr>
      <td>
        * *shipping_carrier** `string`
        * Optional_: The shipping carrier (e.g. “USPS”) used to ship the items.
      </td>
    </tr>

    <tr>
      <td>
        * *shipping_confirmation** `string`
        * Optional_: The tracking number of the shipment.
      </td>
    </tr>
  </tbody>
</Table>

### Request

```curl
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/capture \
    -X POST \
    -u "<public_api_key>:<private_api_key>" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: <idempotency_value>" \
    -d '{"amount":<enter_amount>, "order_id": "<order_id_value>", "shipping_carrier": "<carrier_value>", "shipping_confirmation": "<shipping_confirmation_value>"}'
```

### Response

```json
{
    "fee": 22,
    "created": "2020-06-12T20:38:18Z",
    "order_id": "R1CN-7IIP",
    "shipping_confirmation": "shipping_confirmation_id",
    "shipping_carrier": "UPS",
    "currency": "USD",
    "amount": 1000,
    "type": "split_capture",
    "id": "02PWU4FLAU07GYW4"
}
```

## Void

Cancel an authorized transaction.

### Endpoint

<span style={{ color: "blue" }}>POST</span> `<https://api.affirm.com/api/v1/transactions/{transaction_id}/void`>

### Header parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameter
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *Idempotency-Key** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: Unique identifiers pre-generated by the client and used by the server to recognize successive calls to the same endpoint. This is required for Split Capture and encouraged for single transaction functionality.
      </td>
    </tr>
  </tbody>
</Table>

### Path parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *transaction_id** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: A unique identifier representing the transaction. The value is an alphanumeric string of 9 or 12 characters in length, depending on whether it represents an installment loan or a lease, respectively.
      </td>
    </tr>
  </tbody>
</Table>

### Body parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *amount** `int32` <span style={{ color: "Crimson" }}>REQUIRED</span>: Pass the amount to be voided. If you want to void $50.80, the `amount` value would be 5080.
      </td>
    </tr>

    <tr>
      <td>
        * *reference_id** `string`
        * Optional_: A unique identifier that may be associated with each transaction event and reconciled with the system of record used by the merchant.
      </td>
    </tr>
  </tbody>
</Table>

### Request

```curl
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/void \
    -X POST \
    -u "<public_api_key>:<private_api_key>" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: <idempotency_value>" \
    -d '{"amount":<enter_amount>}'
```

### Response

```json
{
    "currency": "USD",
    "amount": 2000,
    "type": "refund_voided",
    "id": "Y5NVH0OHZLHR20IA",
    "created": "2020-06-12T20:38:58Z"
}
```

## Refund

Refund a transaction.

### Endpoint

<span style={{ color: "blue" }}>POST</span> `<https://api.affirm.com/api/v1/transactions/{transaction_id}/refund`>

### Header parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameter
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *Idempotency-Key** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: Unique identifiers pre-generated by the client and used by the server to recognize successive calls to the same endpoint. This is required for Split Capture and encouraged for single transaction functionality.
      </td>
    </tr>
  </tbody>
</Table>

### Path parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *transaction_id** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: A unique identifier representing the transaction. The value is an alphanumeric string of 9 or 12 characters in length, depending on whether it represents an installment loan or a lease, respectively.
      </td>
    </tr>
  </tbody>
</Table>

### Body parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *amount** `int32` <span style={{ color: "Crimson" }}>REQUIRED</span>: Pass the amount to be refunded. If you want to refund $50.80, the `amount` value would be 5080.
      </td>
    </tr>

    <tr>
      <td>
        * *reference_id** `string`
        * Optional_: A unique identifier that may be associated with each transaction event and reconciled with the system of record used by the merchant.
      </td>
    </tr>
  </tbody>
</Table>

### Request

```curl
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id}/refund \
    -X POST \
    -u "<public_api_key>:<private_api_key>" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: <idempotency_value>" \
    -d '{"amount":<enter_amount>}'
```

### Response

```json
{
    "created": "2020-06-12T20:40:54Z",
    "fee_refunded": 22,
    "currency": "USD",
    "amount": 1000,
    "type": "refund",
    "id": "DKJYFG2LYG264LGK"
}
```

## Update

Update a transaction with new fulfillment or order information, such as shipment tracking number, shipping carrier, or order ID.

### Endpoint

<span style={{ color: "blue" }}>POST</span> `<https://api.affirm.com/api/v1/transactions/{transaction_id}`>

### Path parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *transaction_id** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: A unique identifier representing the transaction. The value is an alphanumeric string of 9 or 12 characters in length, depending on whether it represents an installment loan or a lease, respectively.
      </td>
    </tr>
  </tbody>
</Table>

### Body parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *order_id** `string`
        * Optional_: Identifies the order within the merchant's order management system that this transaction corresponds to. Only returned in the response if included in the request.
      </td>
    </tr>

    <tr>
      <td>
        * *reference_id** `string`
        * Optional_: A unique identifier that may be associated with each transaction event and reconciled with the system of record used by the merchant.
      </td>
    </tr>

    <tr>
      <td>
        * *shipping** `string`
        * Optional_: A `Contact` object containing the shipping information of the customer.
      </td>
    </tr>

    <tr>
      <td>
        * *shipping_carrier** `string`
        * Optional_: The shipping carrier (e.g. “USPS”) used to ship the items.
      </td>
    </tr>

    <tr>
      <td>
        * *shipping_confirmation** `string`
        * Optional_: The tracking number of the shipment.
      </td>
    </tr>
  </tbody>
</Table>

### Request

```curl
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id} \
	-X POST \
	-u "<public_api_key>:<private_api_key>" \
	-H "Content-Type: application/json" \
	-d '{"order_id": "JLKM4321", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223", "shipping": {"name":{ "full": "John Doe"}, "address": {"line1": "325 Pacific Ave", "state": "CA", "city": "San Francisco", "zipcode": "94111", "country": "USA"}}}'
```

### Response

```json
{
    "created": "2020-06-12T20:43:23Z",
    "order_id": "R1CN-7IIP",
    "shipping_confirmation": "shipping_confirmation_id_1591994603",
    "shipping_carrier": "UPS",
    "type": "update",
    "id": "L88BIOQTCQNP2JAZ"
}
```

## Read

Read the transaction information, current transaction status, and checkout data for one or more transactions. This is useful for updating your records or order management system with current transaction states before performing actions on them. It also allows you to keep your system in sync with Affirm if your staff manually manages loans in the merchant dashboard.

### Endpoint

<span style={{ color: "green" }}>GET</span> `<https://api.affirm.com/api/v1/transactions/{transaction_id}`>

### Path parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *transaction_id** `string` <span style={{ color: "Crimson" }}>REQUIRED</span>: A unique identifier representing the transaction. The value is an alphanumeric string of 9 or 12 characters in length, depending on whether it represents an installment loan or a lease, respectively.
      </td>
    </tr>
  </tbody>
</Table>

### Query parameters

<Table align={["left"]}>
  <thead>
    <tr>
      <th>
        Parameters
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * *expand** `string`
          A comma-separated set of related objects to expand in the response. Valid values are: `events`
      </td>
    </tr>
  </tbody>
</Table>

### Request

```curl
curl https://sandbox.affirm.com/api/v1/transactions/{transaction_id} \
    -X GET \
    -u "<public_api_key>:<private_api_key>"
```

### Response

```json
{
    "status": "partially_refunded",
    "amount_refunded": 1000,
    "provider_id": 1,
    "created": "2020-06-12T20:32:09Z",
    "order_id": "R1CN-7IIP",
    "checkout_id": "LBQFHCCGETZF21GY",
    "currency": "USD",
    "amount": 99999,
    "events": [],
    "authorization_expiration": "2020-12-09T20:35:48Z",
    "id": "R1CN-7IIP"
}
```