---
updatedAt: 2025-05-12T21:02:09.000Z
agentTools:
  projectIndex: https://cardsapidocs.thredd.com/v0.0/llms.txt
---

# Transaction Types

This section provides instructions on how to load or unload card funds in your card's currency and perform balance adjustments. If Thredd maintains the balance on cards on your behalf, you can manage balances using the Load / Unload card & adjust balance endpoint.

> 📘 Note
>
> Loads, unloads and balance adjustments are relevant to customers using *External Host Interface (EHI)* mode 3, where Thredd maintains the card balance and performs transaction authorisation.

Thredd can support the following transaction types:

* **Load** - used to add a positive balance onto a card
* **Unload** - used to remove or partially remove a balance from a card
* **BalanceAdjustment** - used to adjust the balance on a card up or down
* **TransferFunds** - used to transfer funds from one card to another

## Loading or Unloading a Card

### Step 1: Retrieve card details

Before loading a card, identify the corresponding Public Token for the card to be used.\
A card's public token is returned in the response to creating a card within the `publicToken` object.

### Step 2: Unload or load a card

After identifying the <Glossary>Public Token</Glossary> for the card and the amount you want to load onto the card, you can create a transaction to move the balance on or off the card. To do this, execute a POST request to the *transactions* endpoint with the corresponding `TransactionType`.

```json Example Load/Unload Card endpoint
{{base-url}}/cards/{{publicToken}}/transactions
```

> 📘 Note
>
> Certain card status values will not allow you to load a balance onto a card. For more information on card status values, see [Card Status](card-status).

Below are examples of a load and unload payload requests for the value of £10.00 GBP

```json Example Card load request payload
{
	"transactionType": "Load",
	"amount": 10.00,
	"currencyCode": "GBP",
	"loadedBy": "System",
	"description": "Card Top up for Lunch"
}
```
```json Example Card unload request payload
{
	"transactionType": "Unload",
	"amount": 10.00,
	"currencyCode": "GBP",
	"loadedBy": "System",
	"description": "Moving of funds"
}
```
```json Example Card balance adjustment payload
{
	"transactionType": "BalanceAdjustment",
	"amount": 5.23,
	"currencyCode": "GBP",
	"loadedBy": "System",
	"description": "Credit Adjustment"
}
```

A successful response will return a 200 with the card's load transaction and the updated balance in the response.

```json Example Load Card response
{
    "transaction": [
        {
            "transactionType": "Load",
            "transactionId": 6157564898,
            "amount": 1000,
            "currencyCode": "GBP",
            "publicToken": "103169969"
        }
    ],
    "balance": {
        "currencyCode": "GBP",
        "cardBalance": 1000,
        "pendingAmount": 0,
        "availableBalance": 1000
    }
}
```

> 👍 API Explorer
>
> See the [Load / Unload card & adjust balance](https://cardsapidocs.thredd.com/reference/load-or-unload-card) endpoint for more information.

## Balance Transfers

The *TransferFunds* transaction type enables you to transfer funds from the card specified in the Transaction endpoint, to a card specified in the body of the request. This enables users to transfer funds between cards in the Thredd system, and to facilitate loading cards from <Glossary>Master Virtual Cards</Glossary>.

```json Example Balance Transfer endpoint
{{base-url}}/cards/{{publicToken}}/transactions
```

The below is an example body for a transaction where the **TransactionType** has been set to *TransferFunds*.

```json Example TransferFunds body
{
"TransactionType": "TransferFunds",
"Amount": 10.00,
"CurrencyCode": "GBP",
"ToPublicToken": "987654321",
"User": "string",
"Description": "string"
}
```

If successful, A 200 response is returned with details on the transaction. In this example, a transfer of £10 has been made from the publicToken 123456789 (indicated by the **Unload** transactionType nest) to the 987654321 publicToken (indicated by the **Load** transactionType nest).

```json Example TransferFunds response
{
"balance": {
  "currencyCode": "GBP",
  "actualBalance": 10.00,
  "blockedAmount": 0.00,
  "availableBalance": 10.00 
  },
"transaction":[
  {
    "publicToken": 123456789,
    "transactionID": "string",
    "transactionType":"Unload",
    "amount": 10.00,
    "currencyCode":"GBP"
    },
    {
    "publicToken": 987654321,
    "transactionID": "string",
    "transactionType":"Load",
    "amount": 10.00,
    "currencyCode":"GBP"
    }
] 
}
```

## Balance Adjustment

You can use the *transactions* endpoint to adjust the balance of the card. This is done by using the Load and Unload transaction types to add and subtract from the card balance respectively.

The below example shows an endpoint request to adjust the balance a positive amount using the `Load `transaction type.

```json Example Load Card response
{
    "transaction": [
        {
            "transactionType": "Load",
            "transactionId": 6157564898,
            "amount": 1000,
            "currencyCode": "GBP",
            "publicToken": "103169969"
        }
    ],
    "balance": {
        "currencyCode": "GBP",
        "cardBalance": 1000,
        "pendingAmount": 0,
        "availableBalance": 1000
    }

```

The below example shows an endpoint request to adjust the balance a negative amount using the `Unload `transaction type.

```json Example Unload Card response
{
    "transaction": [
        {
            "transactionType": "Unload",
            "transactionId": 6157564898,
            "amount": 500,
            "currencyCode": "GBP",
            "publicToken": "103169969"
        }
    ],
    "balance": {
        "currencyCode": "GBP",
        "cardBalance": 500,
        "pendingAmount": 0,
        "availableBalance": 500
    }

```

> 👍 API Explorer
>
> See the [Load / Unload card & adjust balance](https://cardsapidocs.thredd.com/reference/load-or-unload-card) endpoint for more information.