> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.gappify.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.gappify.com/_mcp/server.

# Get Journal Entries

GET https://api.gappify.com/v1/qje

Retrieve a list of Journal Entries based on specified filters.

Reference: https://developers.gappify.com/api-reference/outbound-from-gappify/journal-entries/get-qje-transactions

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://api.gappify.com/v1` (Production, default)
- `https://api.uat.gappifyinc.com/v1` (UAT)

## Request

### Query parameters

- `period` (date, optional) — Period for which the journal entry is being posted. Will be in the YYYY-MM-DD format. It will be set to the current period if not provided
- `status` (enum, optional) — Holds the status of the journal entry line. - `POSTED`: If the QJE Roundtrip integration is implemented, this status confirms that the JE has been successfully created in the ERP. - `UNPOSTED`: The QJE has been created from Transaction data but has not yet been submitted to the ERP. - `REJECTED`: The QJE Manager has rejected the QJE and sent it back to Transactions for review and updates. - `FAILED`: If the QJE Roundtrip integration is implemented, this status indicates that the JE was rejected by the ERP. Users can make the necessary corrections in Transactions and resubmit the QJE for processing. - `EXTRACTED`: The QJE Manager has clicked "Submit JE", and the QJE has been queued for processing in the ERP.
  - Allowed values: `POSTED`, `UNPOSTED`, `REJECTED`, `FAILED`, `EXTRACTED`
- `vendor_id` (string, optional) — Id of the Vendor/Supplier. This value will match the source/vendors:source_system_id.
- `created_at` (datetime, optional) — Journal Entry created date and time stamp.
- `updated_at` (datetime, optional) — Journal Entry updated date and time stamp.
- `exclude_pending` (boolean, optional) — Filters out records already in progress to avoid double processing. Must be combined with status=extracted, returns available records and marks them with a temporary Pending ID lock.
- `resubmitted` (boolean, optional) — Indicates if the Journal Entry was resubmitted after being rejected within Gappify. It is either 0 (False) or 1 (True).
- `reviewed` (boolean, optional) — Indicates if the Journal Entry was reviewed at any point. It is either 0 (False) or 1 (True).

## Response

### 200

List of Journal Entry retrieved successfully.

- `list of QJETransaction`

## Errors

### 401 Unauthorized Error

- `message` (string, required) — The error message
- `success` (boolean, required)

### 422 Unprocessable Entity Error

- `message` (string, required) — The error message
- `errors` (string, required) — The error details

### 404 Not Found Error

- `list of string`

### 500 Internal Server Error

- `list of string`

## Types

### QJETransaction

- `id` (integer, required) — Gappify generated unique identifier for the journal entry.
- `name` (string, required) — Vendor/Supplier name.
- `vendor_id` (string, required) — Id of the Vendor/Supplier. This value will match the source/vendors:source_system_id.
- `subsidiary` (string, required) — Subsidiary name linked to the journal entry. This value will match the name in source/coa:name.
- `subsidiary_id` (string, required) — Subsidiary id linked to the journal entry. This value will match the source/coa:source_system_id.
- `department` (string, required) — Department name linked to the journal entry. This value will match the source/coa:name.
- `department_id` (string, required) — Department ID linked to the journal entry. This value will match the source/coa:source_system_id.
- `glaccount` (string, required) — GLAccount name linked to the journal entry. This value will match the source/coa:name.
- `glaccount_id` (string, required) — GLAccount ID linked to the journal entry. This value will match the source/coa:source_system_id.
- `class` (string, required) — Class name linked to the journal entry. This value will match the name in source_coas.
- `class_id` (string, required) — Class id linked to the journal entry. This value will match the source_system_id in source_coas.
- `project` (string, required) — Project name linked to the journal entry. This value will match the name in source_coas.
- `project_id` (string, required) — Project id linked to the journal entry. This value will match the source_system_id in source_coas.
- `currency` (string, required) — Currency in which the transaction will be posted in the JE. Will match the name in the currency list of source_coas.
- `currency_id` (string, required) — Currency id in which the transaction will be posted in the JE. Will match the source_system_id in the currency list of source_coas.
- `debit` (double, required) — Journal entry debit amount based on transaction currency. Will be blank for the credit line.
- `credit` (double, required) — Journal entry credit amount based on transaction currency. Will be blank for the debit line.
- `je_date` (date, required) — Journal entry date as entered by the user when posting the lines. Will be in the YYYY-MM-DD format.
- `je_reversal_date` (date, required) — Journal entry reversal date as entered by the user when posting the lines. Will be in the YYYY-MM-DD format.
- `je_memo` (string, required) — Journal entry memo description/details as entered by the user when posting the lines.
- `line_description` (string, required) — Holds the value of the description field from the Transaction line record.
- `status` (enum, required) — Holds the status of the journal entry line. - `POSTED`: If the QJE Roundtrip integration is implemented, this status confirms that the JE has been successfully created in the ERP. - `UNPOSTED`: The QJE has been created from Transaction data but has not yet been submitted to the ERP. - `REJECTED`: The QJE Manager has rejected the QJE and sent it back to Transactions for review and updates. - `FAILED`: If the QJE Roundtrip integration is implemented, this status indicates that the JE was rejected by the ERP. Users can make the necessary corrections in Transactions and resubmit the QJE for processing. - `EXTRACTED`: The QJE Manager has clicked "Submit JE", and the QJE has been queued for processing in the ERP.
  - Allowed values: `POSTED`, `UNPOSTED`, `REJECTED`, `FAILED`, `EXTRACTED`
- `period` (date, required) — Period for which the journal entry is being posted. Will be in the YYYY-MM-DD format.
- `po_source_system_id` (integer, required) — Purchase order Id on the journal entry for accrual manager lines originating from purchase order lines. It should match source/purchase_order:source_system_id
- `po_number` (string, required) — Purchase order number on the journal entry for accrual manager lines originating from purchase order lines.
- `po_line_id` (string, required) — Purchase order line Id on the journal entry for accrual manager lines originating from purchase order lines.
- `po_line_description` (string, required) — Purchase order line description on the journal entry for accrual manager lines originating from purchase order lines.
- `po_line_amount` (double, required) — Purchase order line amount on the journal entry for accrual manager lines originating from purchase order lines.
- `created_at` (datetime, required) — QJE created date and time stamp.
- `updated_at` (datetime, required) — QJE updated date and time stamp.
- `external_id` (string, required) — Combination of Subsidiary, Transaction Currency, Date.
- `location` (string, required) — Location name linked to the journal entry. This value will match the name in source_coas.
- `location_id` (string, required) — Location id linked to the journal entry. This value will match the source_system_id in source_coas.
- `preparer` (string, required) — Email of the user that prepared the QJE (Transaction to QJE).
- `group_id` (string, required) — Identifier shared by the debit/credit line pair. Use this value when updating status via POST /qje/status-batch.
- `posted_by` (string, required) — Email of the user that posted the journal entry.
- `posted_at` (datetime, required) — Datetime stamp of when the journal entry was flagged as posted. Auto updated when JE is updated with a non null je_id.
- `region` (string, required) — Region name linked to the journal entry. This value will match the name in source_coas.
- `region_id` (string, required) — Region ID linked to the journal entry. This value will match the name in source_coas.
- `je_id` (string, required) — Record Id of the resulting journal entry in the customer ERP. This value will be used to create link between Gappify QJE and Customers journal entry. Upon successful creation in the ERP system, update Gappify with a valid non null value to change status to POSTED.
- `service_start_date` (date, required) — Purchase order line start date on the journal entry for accrual manager lines originating from purchase order lines. This field can also hold transaction level start date as provided by Vendors.
- `service_end_date` (date, required) — Purchase order line end date on the journal entry for accrual manager lines originating from purchase order lines. This field can also hold transaction level end date as provided by Vendors.
- `company` (string, required) — Company name linked to the journal entry. This value will match the name in source_coas.
- `company_id` (string, required) — Company id linked to the journal entry. This value will match the source_system_id in source_coas.
- `intercompany` (string, required) — Intercompany name linked to the journal entry. This value will match the name in source_coas.
- `intercompany_id` (string, required) — Intercompany id linked to the journal entry. This value will match the source_system_id in source_coas.
- `channel` (string, required) — Channel name linked to the journal entry. This value will match the name in source_coas.
- `channel_id` (string, required) — Channel id linked to the journal entry. This value will match the source_system_id in source_coas.
- `je_reject_reason` (string, required) — Reason if the QJE was ever rejected or is currently in rejected status within Gappify.
- `rejected_by` (string, required) — Email of the user that rejected the journal entry within Gappify.
- `rejected_at` (datetime, required) — Datetime stamp of when the journal entry was flagged as rejected within Gappify.
- `threshold_support_document` (string, required) — Supporting details (can be words or url) for the journal entry.
- `product` (string, required) — Product name linked to the journal entry. This value will match the name in source_coas.
- `product_id` (string, required) — Product id linked to the journal entry. This value will match the source_system_id in source_coas.
- `je_batch` (string, required) — Unique reference to a JE outbound file.
- `resubmitted` (boolean, required) — Indicates if the QJE was resubmitted after being rejected within Gappify.
- `deleted_at` (datetime, required) — Indicates timestamp of when the JE is soft deleted
- `reviewed` (boolean, required) — Indicates if the QJE was reviewed at any point.
- `reporting_amount` (double, required) — The Reporting currency converted amount as available on the transaction line.
- `subsidiary_amount` (double, required) — The Subsidiary currency converted amount as available on the transaction line.
- `reporting_currency` (string, required) — The Reporting currency stamped on the transaction line. This value is derived from the Company settings.
- `subsidiary_currency` (string, required) — The Subsidiary currency stamped on the transaction line.
- `reporting_currency_id` (string, required) — The Reporting currency id as linked to COA currency values.
- `subsidiary_currency_id` (string, required) — The Subsidiary currency id as linked to COA currency values.
- `po_line_amount_usd` (double, required) — Purchase order line amount in USD currency on the journal entry for accrual manager lines originating from purchase order lines.
- `po_balance_usd` (double, required) — Purchase order line balance amount in USD currency on the journal entry for accrual manager lines originating from purchase order lines.
- `error_details` (string, required) — Update the field with error details upon failure to POS JE to the respective system.
- `prepaid_account` (string, required) — GL account name used for prepaid expenses when posting prepaid journal entries. Links to source_coas name.
- `prepaid_account_id` (string, required) — GL account ID used for prepaid expenses when posting prepaid journal entries. Links to source_coas source_system_id.
- `is_prepaid` (boolean, required) — Indicates whether the journal entry line represents a prepaid expense transaction.
- `custom_text_1` (string, required) — User-defined custom text field
- `custom_text_2` (string, required) — User-defined custom text field
- `custom_text_3` (string, required) — User-defined custom text field
- `custom_text_4` (string, required) — User-defined custom text field
- `custom_text_5` (string, required) — User-defined custom text field
- `custom_date_1` (date, required) — User-defined custom date field
- `custom_date_2` (date, required) — User-defined custom date field
- `custom_date_3` (date, required) — User-defined custom date field
- `custom_date_4` (date, required) — User-defined custom date field
- `custom_date_5` (date, required) — User-defined custom date field
- `custom_numeric_1` (float, required) — User-defined custom numeric field
- `custom_numeric_2` (float, required) — User-defined custom numeric field
- `custom_numeric_3` (float, required) — User-defined custom numeric field
- `custom_numeric_4` (float, required) — User-defined custom numeric field
- `custom_numeric_5` (float, required) — User-defined custom numeric field

## Examples

**Response**

```json
[
  {
    "id": 1,
    "name": "name",
    "vendor_id": "vendor_id",
    "subsidiary": "subsidiary",
    "subsidiary_id": "subsidiary_id",
    "department": "department",
    "department_id": "department_id",
    "glaccount": "glaccount",
    "glaccount_id": "glaccount_id",
    "class": "class",
    "class_id": "class_id",
    "project": "project",
    "project_id": "project_id",
    "currency": "currency",
    "currency_id": "currency_id",
    "debit": 1.1,
    "credit": 1.1,
    "je_date": "2023-01-15",
    "je_reversal_date": "2023-01-15",
    "je_memo": "je_memo",
    "line_description": "line_description",
    "status": "POSTED",
    "period": "2023-01-15",
    "po_source_system_id": 1,
    "po_number": "po_number",
    "po_line_id": "po_line_id",
    "po_line_description": "po_line_description",
    "po_line_amount": 1.1,
    "created_at": "2024-01-15T09:30:00Z",
    "updated_at": "2024-01-15T09:30:00Z",
    "external_id": "external_id",
    "location": "location",
    "location_id": "location_id",
    "preparer": "preparer",
    "group_id": "group_id",
    "posted_by": "posted_by",
    "posted_at": "2024-01-15T09:30:00Z",
    "region": "region",
    "region_id": "region_id",
    "je_id": "je_id",
    "service_start_date": "2023-01-15",
    "service_end_date": "2023-01-15",
    "company": "company",
    "company_id": "company_id",
    "intercompany": "intercompany",
    "intercompany_id": "intercompany_id",
    "channel": "channel",
    "channel_id": "channel_id",
    "je_reject_reason": "je_reject_reason",
    "rejected_by": "rejected_by",
    "rejected_at": "2024-01-15T09:30:00Z",
    "threshold_support_document": "threshold_support_document",
    "product": "product",
    "product_id": "product_id",
    "je_batch": "je_batch",
    "resubmitted": true,
    "deleted_at": "2024-01-15T09:30:00Z",
    "reviewed": true,
    "reporting_amount": 1.1,
    "subsidiary_amount": 1.1,
    "reporting_currency": "reporting_currency",
    "subsidiary_currency": "subsidiary_currency",
    "reporting_currency_id": "reporting_currency_id",
    "subsidiary_currency_id": "subsidiary_currency_id",
    "po_line_amount_usd": 1.1,
    "po_balance_usd": 1.1,
    "error_details": "error_details",
    "prepaid_account": "prepaid_account",
    "prepaid_account_id": "prepaid_account_id",
    "is_prepaid": true,
    "custom_text_1": "custom_text_1",
    "custom_text_2": "custom_text_2",
    "custom_text_3": "custom_text_3",
    "custom_text_4": "custom_text_4",
    "custom_text_5": "custom_text_5",
    "custom_date_1": "2023-01-15",
    "custom_date_2": "2023-01-15",
    "custom_date_3": "2023-01-15",
    "custom_date_4": "2023-01-15",
    "custom_date_5": "2023-01-15",
    "custom_numeric_1": 1.1,
    "custom_numeric_2": 1.1,
    "custom_numeric_3": 1.1,
    "custom_numeric_4": 1.1,
    "custom_numeric_5": 1.1
  },
  {
    "id": 1,
    "name": "name",
    "vendor_id": "vendor_id",
    "subsidiary": "subsidiary",
    "subsidiary_id": "subsidiary_id",
    "department": "department",
    "department_id": "department_id",
    "glaccount": "glaccount",
    "glaccount_id": "glaccount_id",
    "class": "class",
    "class_id": "class_id",
    "project": "project",
    "project_id": "project_id",
    "currency": "currency",
    "currency_id": "currency_id",
    "debit": 1.1,
    "credit": 1.1,
    "je_date": "2023-01-15",
    "je_reversal_date": "2023-01-15",
    "je_memo": "je_memo",
    "line_description": "line_description",
    "status": "POSTED",
    "period": "2023-01-15",
    "po_source_system_id": 1,
    "po_number": "po_number",
    "po_line_id": "po_line_id",
    "po_line_description": "po_line_description",
    "po_line_amount": 1.1,
    "created_at": "2024-01-15T09:30:00Z",
    "updated_at": "2024-01-15T09:30:00Z",
    "external_id": "external_id",
    "location": "location",
    "location_id": "location_id",
    "preparer": "preparer",
    "group_id": "group_id",
    "posted_by": "posted_by",
    "posted_at": "2024-01-15T09:30:00Z",
    "region": "region",
    "region_id": "region_id",
    "je_id": "je_id",
    "service_start_date": "2023-01-15",
    "service_end_date": "2023-01-15",
    "company": "company",
    "company_id": "company_id",
    "intercompany": "intercompany",
    "intercompany_id": "intercompany_id",
    "channel": "channel",
    "channel_id": "channel_id",
    "je_reject_reason": "je_reject_reason",
    "rejected_by": "rejected_by",
    "rejected_at": "2024-01-15T09:30:00Z",
    "threshold_support_document": "threshold_support_document",
    "product": "product",
    "product_id": "product_id",
    "je_batch": "je_batch",
    "resubmitted": true,
    "deleted_at": "2024-01-15T09:30:00Z",
    "reviewed": true,
    "reporting_amount": 1.1,
    "subsidiary_amount": 1.1,
    "reporting_currency": "reporting_currency",
    "subsidiary_currency": "subsidiary_currency",
    "reporting_currency_id": "reporting_currency_id",
    "subsidiary_currency_id": "subsidiary_currency_id",
    "po_line_amount_usd": 1.1,
    "po_balance_usd": 1.1,
    "error_details": "error_details",
    "prepaid_account": "prepaid_account",
    "prepaid_account_id": "prepaid_account_id",
    "is_prepaid": true,
    "custom_text_1": "custom_text_1",
    "custom_text_2": "custom_text_2",
    "custom_text_3": "custom_text_3",
    "custom_text_4": "custom_text_4",
    "custom_text_5": "custom_text_5",
    "custom_date_1": "2023-01-15",
    "custom_date_2": "2023-01-15",
    "custom_date_3": "2023-01-15",
    "custom_date_4": "2023-01-15",
    "custom_date_5": "2023-01-15",
    "custom_numeric_1": 1.1,
    "custom_numeric_2": 1.1,
    "custom_numeric_3": 1.1,
    "custom_numeric_4": 1.1,
    "custom_numeric_5": 1.1
  }
]
```

**SDK Code**

```python
import requests

url = "https://api.gappify.com/v1/qje"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.gappify.com/v1/qje';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.gappify.com/v1/qje"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.gappify.com/v1/qje")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.gappify.com/v1/qje")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.gappify.com/v1/qje', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.gappify.com/v1/qje");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.gappify.com/v1/qje")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```