curl --request POST \
--url https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"accounting_date": "2023-12-25"
}
'import requests
url = "https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse"
payload = { "accounting_date": "2023-12-25" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({accounting_date: '2023-12-25'})
};
fetch('https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accounting_date' => '2023-12-25'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse"
payload := strings.NewReader("{\n \"accounting_date\": \"2023-12-25\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accounting_date\": \"2023-12-25\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accounting_date\": \"2023-12-25\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"owner_type": "<string>",
"journal_id": "<string>",
"fiscal_period_id": "<string>",
"accounting_date": "2023-12-25",
"reference": "<string>",
"description": "<string>",
"source_type": "<string>",
"source_id": "<string>",
"source_event": "<string>",
"metadata": {},
"currency_code": "<string>",
"currency_exponent": 123,
"status": "<string>",
"reversal_of_entry_id": "<string>",
"refund_of_entry_id": "<string>",
"posted_at": "2023-11-07T05:31:56Z",
"lines": "<array>",
"attachments_count": 123,
"attachments": "<array>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"message": "<string>",
"errors": {}
}Reverse a journal entry (organization)
Organization space, on a chosen book. Cancels a posted entry by posting an opposite entry, dated as requested or on the original date; when the original’s period is closed the reversal goes to the next open period.
curl --request POST \
--url https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"accounting_date": "2023-12-25"
}
'import requests
url = "https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse"
payload = { "accounting_date": "2023-12-25" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({accounting_date: '2023-12-25'})
};
fetch('https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accounting_date' => '2023-12-25'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse"
payload := strings.NewReader("{\n \"accounting_date\": \"2023-12-25\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accounting_date\": \"2023-12-25\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.exowpee.com/v1/accounting/organization/books/{journalEntry}/journal-entries/{journal_entry}/reverse")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accounting_date\": \"2023-12-25\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"owner_type": "<string>",
"journal_id": "<string>",
"fiscal_period_id": "<string>",
"accounting_date": "2023-12-25",
"reference": "<string>",
"description": "<string>",
"source_type": "<string>",
"source_id": "<string>",
"source_event": "<string>",
"metadata": {},
"currency_code": "<string>",
"currency_exponent": 123,
"status": "<string>",
"reversal_of_entry_id": "<string>",
"refund_of_entry_id": "<string>",
"posted_at": "2023-11-07T05:31:56Z",
"lines": "<array>",
"attachments_count": 123,
"attachments": "<array>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"message": "<string>",
"errors": {}
}journal_entries.reverse
Conditions
- The accounting module must be included in the plan of the organization.
- In the organization space the caller needs an accounting access grant on the book named in the URL.
- The entry must belong to the selected book.
- An entry that is already reversed cannot be reversed again.
- An entry that is itself a reversal or a refund, or that has been refunded, cannot be reversed.
- Closing, result allocation and carry-forward entries of a fiscal year cannot be reversed here; the fiscal year reopen route does it.
- VAT declaration entries and fiscal event entries cannot be reversed here; their own delete or reverse routes post the correction.
- An entry with a line on the account of a cash register, a money account or a payment route cannot be reversed generically; a specialized correction is required.
- Depreciation and asset disposal entries are reversed together with the fixed asset register, and for them accounting_date, when sent, must be the entry’s own date.
- The entry must not hold a bank match on a statement that is no longer open.
- The reversal date must fall in a period that is not closed. When the period of the original entry is closed, the reversal is dated the first day of the next open period instead of the requested date. The same shift applies to an entry touching VAT accounts when the VAT of the target period is declared.
- A date sent in accounting_date that falls in a closed period (while the original’s period is open) is refused.
- Posts a reversing entry with every line direction exchanged, in the same journal, with source type reversal pointing to the original; it has reversal_of_entry_id set.
- Changes the status of the original entry to reversed.
- Releases the bank statement matches of the original entry, so those statement lines are unexplained again.
- Takes the original’s lines out of their matches, reopening the other lines of those groups, and matches them with the reversal lines instead.
- Copies the analytic allocations of the original onto the reversal.
- For depreciation and disposal entries, also rolls back the fixed asset register.
- When a business rule refuses the reversal on an organization or company book, a posting incident is recorded.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Identifier of the accounting book (the first path segment; the generated name is misleading). The entry is the second parameter, journal_entry.
Identifier of the journal entry (27-character KSUID).
Query Parameters
Response mode. Default none; none answers 204 No Content.
none, resource Comma-separated JSON keys of the root resource (id is always rendered). Available: id, owner_type, journal_id, fiscal_period_id, accounting_date, reference, description, source_type, source_id, source_event, metadata, currency_code, currency_exponent, status, reversal_of_entry_id, refund_of_entry_id, posted_at, created_at, updated_at, attachments_count.
Comma-separated include paths, each optionally followed by its fields in parentheses: units(id,sku),units.uomUnit(id,name). Max depth 6, max 40 paths. Available: lines, lines.account, attachments.
Body
Optional date the reversal counts for (YYYY-MM-DD). Default: the date of the original entry. When the original's period is closed the reversal is dated the first day of the next open period instead; a date in a closed period is refused; for depreciation and disposal entries it must equal the entry's own date.
Response
Resource (only with response=resource).
Identifier of the journal entry (27-character KSUID).
Kind of book the entry belongs to: organization, company or client.
Identifier of the journal the entry is posted in (27-character KSUID).
Identifier of the fiscal period covering the accounting date, set by the server (27-character KSUID).
Date the entry counts for in the books (YYYY-MM-DD).
Free-text reference given at posting, or copied from the original entry on a reversal; null when none.
Free-text description given at posting; on a reversal, a text naming the original entry; null when none.
Kind of record that generated the entry (for example reversal, opening_balances or recurring_entry, or a business flow); null for a manual entry.
Identifier of the record that generated the entry; null for a manual entry.
Event of the source record that generated the entry (for example reversed, opening or run: for a recurring occurrence); null for a manual entry.
Extra data stored by automatic postings, such as fee snapshots or the company identifier; null for most manual entries.
ISO 4217 currency code of the entry, taken from the fiscal year (for example XOF).
Number of decimal places of the currency (0 for XOF). An amount in minor units divided by 10 to this power gives the amount in the currency.
State of the entry: posted (in force), reversed (cancelled by a reversal entry) or refunded (refunded by a refund entry).
When the entry is a reversal, the identifier of the entry it cancels; otherwise null.
When the entry is a refund, the identifier of the entry it refunds; otherwise null.
Moment the entry was posted, ISO 8601, set by the server.
Debit and credit lines of the entry. Present only when requested with include=lines; amounts are integers in minor units (divide by 10 to the power currency_exponent).
Number of supporting documents attached to the entry.
Supporting documents of the entry. Present only when requested with include=attachments and the caller holds the entry_attachments.list permission.
Date and time the record was created (ISO 8601, UTC).
Date and time the record was last changed (ISO 8601, UTC).