> For the complete documentation index, see [llms.txt](https://developers.publicmint.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.publicmint.io/api/reference/transactions.md).

# Transactions

The following endpoints are use to create and retrieve transactions from the system.

* [Get the list of all transactions](#get-the-list-of-all-transactions)
* [Get one specific transaction](#get-one-specific-transaction)
* [Create a new transaction](#create-a-new-transaction)

## The `transaction` object

The `transaction` object represents an operation (deposit or withdrawal) executed by it's identity owner.

#### Transaction entity model

<table><thead><tr><th width="230">Name</th><th width="150" align="center">Type</th><th>Description</th><th>Constraints</th></tr></thead><tbody><tr><td>amount</td><td align="center"><code>String</code></td><td>Transaction amount.</td><td><code>Not Null</code></td></tr><tr><td>appId</td><td align="center"><code>String</code></td><td>Application ID. Format: <code>uuid</code>.</td><td></td></tr><tr><td>code</td><td align="center"><code>String</code></td><td>Transaction code.</td><td>Enum:[<code>deposit:stablecoin:usdc</code>, <code>deposit:wire:usd</code>]</td></tr><tr><td>createdAt</td><td align="center"><code>DateTime</code></td><td>Transaction created at date.</td><td><code>Not Null</code></td></tr><tr><td>currency</td><td align="center"><code>String</code></td><td>Transaction currency.</td><td>Enum:[<code>USD</code>]</td></tr><tr><td>deletedAt</td><td align="center"><code>DateTime</code></td><td>Transaction deleted at date.</td><td></td></tr><tr><td>destinationAddress</td><td align="center"><code>String</code></td><td>Transaction destination address.</td><td></td></tr><tr><td>addressId</td><td align="center"><code>String</code></td><td>Transaction address id.</td><td></td></tr><tr><td>externalReference</td><td align="center"><code>String</code></td><td>Transaction external reference.</td><td></td></tr><tr><td>id</td><td align="center"><code>String</code></td><td>Transaction identifier. Format: <code>uuid</code>.</td><td><code>Not Null</code></td></tr><tr><td>identityId</td><td align="center"><code>String</code></td><td>Transaction identity owner. Format: <code>uuid</code></td><td></td></tr><tr><td>metadata</td><td align="center"><code>Object</code></td><td>Transaction metadata.</td><td></td></tr><tr><td>originAddress</td><td align="center"><code>String</code></td><td>Transaction origin address.</td><td></td></tr><tr><td>status</td><td align="center"><code>String</code></td><td>Transaction status.</td><td>Enum:[<code>pending</code>, <code>approved</code>, <code>confirmed</code>, <code>failed</code>, <code>canceled</code>, <code>review</code>]</td></tr><tr><td>transactionHash</td><td align="center"><code>String</code></td><td>Transaction hash.</td><td></td></tr><tr><td>type</td><td align="center"><code>String</code></td><td>Transaction type.</td><td>Enum:[<code>deposit</code>, <code>transfer</code>, <code>withdrawal</code>]</td></tr><tr><td>updatedAt</td><td align="center"><code>DateTime</code></td><td>Transaction updated at date.</td><td><code>Not Null</code></td></tr></tbody></table>

## Get the list of all transactions

`GET /transactions`

Get transactions list.

**Available filters**

| Name                |       Type       | Example                              |
| ------------------- | :--------------: | ------------------------------------ |
| addressId           |     `default`    | `filter[addressId]=foobar`           |
| code                | `default,in,nin` | `filter[code]=in:foobar`             |
| currency            | `default,in,nin` | `filter[currency]=nin:foobar`        |
| destinationAddress  | `default,in,nin` | `filter[destinationAddress]=foobar`  |
| earnDistributionId  |     `default`    | `filter[earnDistributionId]=foobar`  |
| id                  | `default,in,nin` | `filter[id]=foobar`                  |
| identityId          | `default,in,nin` | `filter[identityId]=foobar`          |
| originAddress       | `default,in,nin` | `filter[originAddress]=foobar`       |
| originTransactionId |     `default`    | `filter[originTransactionId]=foobar` |
| status              | `default,in,nin` | `filter[status]=in:foobar`           |
| transactionHash     | `default,in,nin` | `filter[transactionHash]=in:foobar`  |
| type                | `default,in,nin` | `filter[type]=in:foobar`             |

**Available sorts**

| Name      | Example                                                            |
| --------- | ------------------------------------------------------------------ |
| createdAt | <p><code>sort=createdAt</code><br><code>sort=-createdAt</code></p> |
| updatedAt | <p><code>sort=updatedAt</code><br><code>sort=-updatedAt</code></p> |

**Available includes**

| Name    | Example           |
| ------- | ----------------- |
| address | `include=address` |

**Paginate options**

| Name   | Description                                             | Example          |
| ------ | ------------------------------------------------------- | ---------------- |
| size   | Defines the number of results per page. Default = 30.   | `page[size]=2`   |
| number | Defines the number of the page to retrieve. Default = 1 | `page[number]=2` |
| all    | Return all identities without pagination                | `all=true`       |

**Response Options**

**200 OK**

Request example:

```
GET <hostname>/transactions
```

Response example:

```
{
  "data": [{
    "addressId": null,
    "amount": "10.00000000",
    "appId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "code": "deposit:internal:usd",
    "createdAt": "2020-10-28T17:40:55.501Z",
    "currency": "USD",
    "deletedAt": null,
    "destinationAddress": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
    "earnDistributionId": null,
    "externalReference": null,
    "id": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "identityId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "metadata": {},
    "originAddress": null,
    "status": "pending",
    "transactionHash": "0xb5c8bd9430b6cc87a0e2fe110ece6bf527fa4f170a4bc8cd032f768fc5219838",
    "type": "deposit",
    "updatedAt": "2020-10-28T17:40:55.501Z"
  }],
  "total": 1
}
```

## Get one specific transaction

`GET /transactions/:id`

Get transaction by id.

**Available includes**

| Name    | Example           |
| ------- | ----------------- |
| address | `include=address` |

**Response Options**

**400 Bad Request**

* validation\_failed
  * If id is invalid.

**404 Not Found**

* transaction\_not\_found

**200 OK**

Request example:

```
GET <hostname>/transactions/e7941059-74c6-4b3f-b029-d3aa03d1ea44
```

Response example:

```
{
  "data": {
    "addressId": null,
    "amount": "10.00000000",
    "appId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "code": "deposit:internal:usd",
    "createdAt": "2020-10-28T17:40:55.501Z",
    "currency": "USD",
    "deletedAt": null,
    "destinationAddress": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
    "earnDistributionId": null,
    "externalReference": null,
    "id": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "identityId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "metadata": {},
    "originAddress": null,
    "status": "pending",
    "transactionHash": "0xb5c8bd9430b6cc87a0e2fe110ece6bf527fa4f170a4bc8cd032f768fc5219838",
    "type": "deposit",
    "updatedAt": "2020-10-28T17:40:55.501Z"
  }
}
```

## Create a new transaction

`POST /transactions`

Creates a transaction.

**Request Parameters**

**Body parameters**

| Name               |   Type   | Description                                | Constraints                                                                | Required |
| ------------------ | :------: | ------------------------------------------ | -------------------------------------------------------------------------- | :------: |
| amount             | `String` | Transaction amount.                        | `Not null`                                                                 |  `true`  |
| chain              | `String` | Transaction chain.                         | \[`ALGO`,`AVAX`,`ETH`,`SOL`,`TRX`,`XLM`]. Only for stablecoin transactions |          |
| code               | `String` | Transaction code.                          | \[`deposit:stablecoin:usdc`,`deposit:wire:usd`]                            |  `true`  |
| currency           | `String` | Transaction currency                       | \[`USD`]                                                                   |  `true`  |
| destinationAddress | `String` | Transaction destination address.           |                                                                            |  `true`  |
| identityId         | `String` | Transaction identity owner. Format: `uuid` |                                                                            |  `true`  |
| originAddress      | `String` | Transaction origin address.                |                                                                            |          |
| paymentMethod      | `String` | Transaction payment method.                | \[`wire`,`internationalWire`]. Only for Wire transactions                  |          |

**Response Options**

**400 Bad Request**

* validation\_failed
  * If the required parameters are not provided.
  * If additional parameters are provided.
  * If some of the parameters type is invalid.
  * If some of the parameters constraints is not respected.

**422 Unprocessable Entity**

* chain\_is\_not\_available
  * If the request chain is not active.

**200 OK**

Request example:

```
POST <hostname>/transactions

{
  "amount": "10",
  "chain": "XLM",
  "code": "deposit:stablecoin:usdc",
  "currency": "USD",
  "destinationAddress": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
  "identityId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44"
}
```

Response example:

```
{
  "data": {
    "addressId": "e7941059-74c6-4b3f-b029-d3aa03d1ea42",
    "amount": "10.00000000",
    "appId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "code": "deposit:stablecoin:usdc",
    "createdAt": "2020-10-28T17:40:55.501Z",
    "currency": "USD",
    "deletedAt": null,
    "destinationAddress": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
    "externalReference": null,
    "id": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "identityId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "metadata": {
      "addressId": "e7941059-74c6-4b3f-b029-d3aa03d1ea42",
      "transactionDetails": {
        "address": "0x99c7656ec7ab88b098defb751b7401b5f6d8976f",
        "addressTag": "xyyz"
      }
    },
    "originAddress": null,
    "status": "pending",
    "transactionDetails": {
      "address": "0x99c7656ec7ab88b098defb751b7401b5f6d8976f",
      "addressTag": "xyyz"
    },
    "transactionHash": null,
    "type": "deposit",
    "updatedAt": "2020-10-28T17:40:55.501Z"
  }
}
```

Request example:

```
POST <hostname>/transactions

{
  "amount": "10",
  "code": "deposit:wire:usd",
  "currency": "USD",
  "destinationAddress": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
  "identityId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
  "paymentMethod": "wire"
}
```

Response example:

```
{
  "data": {
    "addressId": "e7941059-74c6-4b3f-b029-d3aa03d1ea42",
    "amount": "10.00000000",
    "appId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "code": "deposit:wire:usd",
    "createdAt": "2020-10-28T17:40:55.501Z",
    "currency": "USD",
    "deletedAt": null,
    "destinationAddress": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
    "externalReference": "e7941059-74c6-4b3f-b029-d3aa03d1ea43",
    "id": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "identityId": "e7941059-74c6-4b3f-b029-d3aa03d1ea44",
    "metadata": {
      "paymentMethod": "wire",
      "transactionDetails": {
        "bankName": "ROYAL BUSINESS BANK",
        "reference": "CUSCTW6GA",
        "swiftCode": "RBBCUS6L",
        "bankAccountName": "Prime Trust, LLC",
        "bankAccountNumber": "2030136050"
      }
    },
    "originAddress": null,
    "status": "pending",
    "transactionDetails": {
      "bankName": "ROYAL BUSINESS BANK",
      "reference": "CUSCTW6GA",
      "swiftCode": "RBBCUS6L",
      "bankAccountName": "Prime Trust, LLC",
      "bankAccountNumber": "2030136050"
    },
    "transactionHash": null,
    "type": "deposit",
    "updatedAt": "2020-10-28T17:40:55.501Z"
  }
}
```
