# Transactions

## List transactions by organization

**get** `/api/v1/transactions`

List transactions by organization

### Query Parameters

- `organization_id: string`

- `page: optional number`

- `per_page: optional number`

### Returns

- `data: array of object { id, amount, created_at, 10 more }`

  - `id: string`

  - `amount: number`

    Amount in minor units

  - `created_at: string`

  - `currency: string`

  - `from_account_id: string`

  - `organization_id: string`

  - `status: "pending" or "posted" or "failed"`

    - `"pending"`

    - `"posted"`

    - `"failed"`

  - `to_account_id: string`

  - `transaction_kind: "deposit" or "withdraw" or "transfer"`

    - `"deposit"`

    - `"withdraw"`

    - `"transfer"`

  - `updated_at: string`

  - `environment: optional string`

  - `failure_reason: optional string`

  - `idempotency_key: optional string`

- `pagination: object { page, per_page, total_count, total_pages }`

  - `page: number`

  - `per_page: number`

  - `total_count: number`

  - `total_pages: number`

### Example

```http
curl https://accounts-service-staging.up.railway.app/api/v1/transactions \
    -H "X-API-Key: $RAILS_API_KEY"
```

#### Response

```json
{
  "data": [
    {
      "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "amount": 0,
      "created_at": "2019-12-27T18:11:19.117Z",
      "currency": "currency",
      "from_account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "organization_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "status": "pending",
      "to_account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
      "transaction_kind": "deposit",
      "updated_at": "2019-12-27T18:11:19.117Z",
      "environment": "environment",
      "failure_reason": "failure_reason",
      "idempotency_key": "idempotency_key"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 1,
    "total_count": 0,
    "total_pages": 0
  }
}
```

## List account transactions

**get** `/api/v1/accounts/{account_id}/transactions`

List account transactions

### Path Parameters

- `account_id: string`

### Query Parameters

- `limit: optional number`

### Returns

- `id: string`

- `account_id: string`

- `amount: string`

- `balance_after: string`

- `created_at: string`

- `currency: string`

- `status: "pending" or "completed" or "failed" or "cancelled"`

  - `"pending"`

  - `"completed"`

  - `"failed"`

  - `"cancelled"`

- `transaction_type: "deposit" or "withdrawal" or "transfer" or 2 more`

  - `"deposit"`

  - `"withdrawal"`

  - `"transfer"`

  - `"recurring_payment"`

  - `"savings_withdraw"`

- `updated_at: string`

- `description: optional string`

- `external_recipient_id: optional string`

- `recipient_account_id: optional string`

- `reference_id: optional string`

### Example

```http
curl https://accounts-service-staging.up.railway.app/api/v1/accounts/$ACCOUNT_ID/transactions \
    -H "X-API-Key: $RAILS_API_KEY"
```

#### Response

```json
[
  {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "amount": "amount",
    "balance_after": "balance_after",
    "created_at": "2019-12-27T18:11:19.117Z",
    "currency": "currency",
    "status": "pending",
    "transaction_type": "deposit",
    "updated_at": "2019-12-27T18:11:19.117Z",
    "description": "description",
    "external_recipient_id": "external_recipient_id",
    "recipient_account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "reference_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
  }
]
```

## Retrieve transaction

**get** `/api/v1/transactions/{id}`

Retrieve transaction

### Path Parameters

- `id: string`

### Returns

- `Transaction object { id, account_id, amount, 10 more }`

  - `id: string`

  - `account_id: string`

  - `amount: string`

  - `balance_after: string`

  - `created_at: string`

  - `currency: string`

  - `status: "pending" or "completed" or "failed" or "cancelled"`

    - `"pending"`

    - `"completed"`

    - `"failed"`

    - `"cancelled"`

  - `transaction_type: "deposit" or "withdrawal" or "transfer" or 2 more`

    - `"deposit"`

    - `"withdrawal"`

    - `"transfer"`

    - `"recurring_payment"`

    - `"savings_withdraw"`

  - `updated_at: string`

  - `description: optional string`

  - `external_recipient_id: optional string`

  - `recipient_account_id: optional string`

  - `reference_id: optional string`

### Example

```http
curl https://accounts-service-staging.up.railway.app/api/v1/transactions/$ID \
    -H "X-API-Key: $RAILS_API_KEY"
```

#### Response

```json
{
  "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "amount": "amount",
  "balance_after": "balance_after",
  "created_at": "2019-12-27T18:11:19.117Z",
  "currency": "currency",
  "status": "pending",
  "transaction_type": "deposit",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "description": "description",
  "external_recipient_id": "external_recipient_id",
  "recipient_account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
  "reference_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
}
```

## Domain Types

### Transaction List Response

- `TransactionListResponse object { data, pagination }`

  - `data: array of object { id, amount, created_at, 10 more }`

    - `id: string`

    - `amount: number`

      Amount in minor units

    - `created_at: string`

    - `currency: string`

    - `from_account_id: string`

    - `organization_id: string`

    - `status: "pending" or "posted" or "failed"`

      - `"pending"`

      - `"posted"`

      - `"failed"`

    - `to_account_id: string`

    - `transaction_kind: "deposit" or "withdraw" or "transfer"`

      - `"deposit"`

      - `"withdraw"`

      - `"transfer"`

    - `updated_at: string`

    - `environment: optional string`

    - `failure_reason: optional string`

    - `idempotency_key: optional string`

  - `pagination: object { page, per_page, total_count, total_pages }`

    - `page: number`

    - `per_page: number`

    - `total_count: number`

    - `total_pages: number`

### Transaction List By Account Response

- `TransactionListByAccountResponse = array of Transaction`

  - `id: string`

  - `account_id: string`

  - `amount: string`

  - `balance_after: string`

  - `created_at: string`

  - `currency: string`

  - `status: "pending" or "completed" or "failed" or "cancelled"`

    - `"pending"`

    - `"completed"`

    - `"failed"`

    - `"cancelled"`

  - `transaction_type: "deposit" or "withdrawal" or "transfer" or 2 more`

    - `"deposit"`

    - `"withdrawal"`

    - `"transfer"`

    - `"recurring_payment"`

    - `"savings_withdraw"`

  - `updated_at: string`

  - `description: optional string`

  - `external_recipient_id: optional string`

  - `recipient_account_id: optional string`

  - `reference_id: optional string`
