Prepare the supplier claim letter and evidence (ANALYST+, dashboard user)
const url = 'https://api.invogi.com/v1/recoveries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/claim-pack';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"route":"REFUND","offsetInvoiceIds":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"],"contactName":"example","contactId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","templateId":"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://api.invogi.com/v1/recoveries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/claim-pack \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "route": "REFUND", "offsetInvoiceIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "contactName": "example", "contactId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "templateId": "example" }'Deterministic, from stored records only, for the open balance. Invogi
never sends it: the user reviews it and sends it from their own mail
system, then logs the contact. Generating it is recorded on the case,
with the template and contact used. templateId picks the letter
(default builtin:CLAIM, the reviewed claim letter; see
/recovery-templates). contactId addresses it to one of the
supplier’s contacts: it fills the greeting and to.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
Must be among the case’s offsetCandidates
Ignored when contactId is given
One of the case supplier’s contacts
Builtin:CLAIM, builtin:FOLLOW_UP, builtin:FINAL_REMINDER, or a workspace template id; a STATEMENT_REQUEST letter is refused (400)
Responses
Section titled “Responses”The claim pack
object
object
The chosen contact’s email
object
Example
{ "template": { "purpose": "CLAIM" }}Invalid request
object
object
Example
{ "error": { "code": "NOT_FOUND" }}API key lacks required scope/role
object
object
Example
{ "error": { "code": "NOT_FOUND" }}Resource not found
object
object
Example
{ "error": { "code": "NOT_FOUND" }}Conflicting idempotency key or resource processing state
object
object
Example
{ "error": { "code": "NOT_FOUND" }}