Reverse a posted entry, recording why somebody disagreed with it
const url = 'https://example.com/v1/entities/example/entries/example/reverse';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"reason":"example","dt":"example","narration":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/v1/entities/example/entries/example/reverse \ --header 'Content-Type: application/json' \ --data '{ "reason": "example", "dt": "example", "narration": "example" }'Withdraw a posted entry without restating it; POST /entries/{id}/correct withdraws and restates.
Nothing is edited or deleted. The original stays posted and in the sums, an exact mirror is posted beside it, and both carry the actor that wrote them. A reversal that would land in a closed month is refused; reopen the month to fix it.
To move a statement line onto a different account, use POST /lines/{id}/reexplain, which does this and
the re-booking together so the line is never momentarily unexplained.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The entity this path is relative to
The entity this path is relative to
Request Bodyrequired
Section titled “Request Bodyrequired”Disagree with a posted entry: an exact mirror is posted beside it, and both stay standing.
reason is required and is recorded verbatim on the append-only audit action. A year later the numbers
speak for themselves, but why somebody disagreed is not recoverable from anywhere else.
object
Example generated
{ "reason": "example", "dt": "example", "narration": "example"}Responses
Section titled “Responses”Successful Response
object
The entry.reversed audit action’s event sequence
The mirror that was posted
object
object
Signed integer micro-units (millionths) as a base-10 string; never a JSON number.
object
object
Example
{ "entry": { "postings": [ { "amount_micros": "-12000000" } ] }}Bad Request
object
Example generated
{ "error": { "code": "example", "message": "example", "retryable": true, "details": [ {} ], "request_id": "example", "next_action": {} }}Unauthorized
object
Example generated
{ "error": { "code": "example", "message": "example", "retryable": true, "details": [ {} ], "request_id": "example", "next_action": {} }}Forbidden
object
Example generated
{ "error": { "code": "example", "message": "example", "retryable": true, "details": [ {} ], "request_id": "example", "next_action": {} }}Not Found
object
Example generated
{ "error": { "code": "example", "message": "example", "retryable": true, "details": [ {} ], "request_id": "example", "next_action": {} }}Conflict
object
Example generated
{ "error": { "code": "example", "message": "example", "retryable": true, "details": [ {} ], "request_id": "example", "next_action": {} }}Precondition Failed
object
Example generated
{ "error": { "code": "example", "message": "example", "retryable": true, "details": [ {} ], "request_id": "example", "next_action": {} }}Unprocessable Content
object
Example generated
{ "error": { "code": "example", "message": "example", "retryable": true, "details": [ {} ], "request_id": "example", "next_action": {} }}Internal Server Error
object
Example generated
{ "error": { "code": "example", "message": "example", "retryable": true, "details": [ {} ], "request_id": "example", "next_action": {} }}Service Unavailable
object
Example generated
{ "error": { "code": "example", "message": "example", "retryable": true, "details": [ {} ], "request_id": "example", "next_action": {} }}