curl --request PUT \
--url https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/book-completions/{externalCompletionId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"asOf": "2026-10-15T01:00:00Z",
"batches": [
"BATCH_BOOK_1",
"BATCH_BOOK_2"
],
"expectedReceivableCount": 180,
"scope": "all_receivables",
"sourcePosition": 7
}
'Declare a verified complete book
Requires receivables:write. Declares that the listed batches carried the complete scoped book. PayPathIQ verifies that every listed batch belongs to this connection, finished with every record (including dependent records) accepted, and that the accepted Receivables match expectedReceivableCount; otherwise nothing changes. Open Receivables that existed before the earliest batch and are missing from the verified book are flagged and their recovery and Payment actions held. They are never settled, forgiven, closed or deleted, financial history is untouched, and unaffected Receivables continue. The flag is shown on the Receivable as financialPosition.missingFromCompleteBook. A later verified complete book that contains the Receivable, an authorized close, or an authorized correction to a zero balance clears only this restriction. An identical retry returns 200 and changes nothing. Batches alone never declare completeness, and incremental omissions have no effect.
curl --request PUT \
--url https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/book-completions/{externalCompletionId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"asOf": "2026-10-15T01:00:00Z",
"batches": [
"BATCH_BOOK_1",
"BATCH_BOOK_2"
],
"expectedReceivableCount": 180,
"scope": "all_receivables",
"sourcePosition": 7
}
'Authorizations
Integration-owned environment-specific API key. Never paste a production key into documentation tools.
Path Parameters
Stable non-sensitive Client code authorized by the Integration grant.
^[A-Za-z0-9_-]{1,128}$Caller-assigned identifier of this complete-book declaration. Reusing it with an identical body is a safe retry.
^[A-Za-z0-9_-]{1,128}$Body
One uncompressed resource representation, limited to 256 KiB.
UTC time at which the Source produced this book. Never later than the earliest listed batch submission.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$externalBatchIds that together carried every Receivable in the declared scope. Each must belong to this connection and have succeeded with every record accepted.
1 - 50 elements^[A-Za-z0-9_-]{1,128}$Exact number of distinct Receivables in the Source book. It must equal the distinct Receivables accepted by the listed batches, so a truncated load cannot be declared complete.
0 <= x <= 9007199254740991all_receivables: every Receivable of this connection's Source for this Client.
all_receivables Strictly increasing position of this declaration across the connection.
x <= 9007199254740991Response
Identical safe retry.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$50^[A-Za-z0-9_-]{1,128}$-9007199254740991 <= x <= 9007199254740991^[A-Za-z0-9_-]{1,128}$100Show child attributes
Show child attributes
True when more than 100 Receivables were flagged; omittedReceivableCount is the exact total.
-9007199254740991 <= x <= 9007199254740991all_receivables x <= 9007199254740991