curl --request POST \
--url https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"effectiveAt": "2026-08-29T12:00:00Z"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({effectiveAt: '2026-08-29T12:00:00Z'})
};
fetch('https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen"
payload = { "effectiveAt": "2026-08-29T12:00:00Z" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen"
payload := strings.NewReader("{\n \"effectiveAt\": \"2026-08-29T12:00:00Z\"\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.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"effectiveAt\": \"2026-08-29T12:00:00Z\"\n}")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"effectiveAt\": \"2026-08-29T12:00:00Z\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"financialType": "loan_balance",
"sourceRevision": 1,
"balanceBreakdown": {
"costs": {
"amount": "0.00",
"currency": "EUR"
},
"fees": {
"amount": "50.00",
"currency": "EUR"
},
"interest": {
"amount": "200.00",
"currency": "EUR"
},
"principal": {
"amount": "1000.00",
"currency": "EUR"
}
},
"creditUnion": {
"arrearsAmount": {
"amount": "1250.00",
"currency": "EUR"
},
"contractualInstalment": {
"amount": {
"amount": "125.00",
"currency": "EUR"
},
"frequency": "monthly"
},
"defaultDate": "2026-07-01",
"loanAccountReference": "loan-ref-example",
"loanType": "personal_loan",
"totalOutstandingAmount": {
"amount": "4000.00",
"currency": "EUR"
}
},
"dueDate": "2026-08-01",
"recoverableAmount": {
"amount": "1250.00",
"currency": "EUR"
},
"responsibleCustomers": [
{
"externalCustomerId": "CUS_123",
"role": "primary"
}
],
"sourceReference": "receivable-ref-example",
"financialPosition": {
"confirmedUnreconciledAmount": {
"amount": "0.00",
"currency": "EUR"
},
"receiptAcknowledgedAmount": {
"amount": "0.00",
"currency": "EUR"
},
"sourceAmount": {
"amount": "1250.00",
"currency": "EUR"
},
"workingAmount": {
"amount": "1250.00",
"currency": "EUR"
}
},
"externalReceivableId": "REC_123",
"status": "active",
"updatedAt": "2026-08-29T12:00:00Z"
}Reopen a Receivable
Reopen a closed Receivable. Requires receivables:write. Reopens a closed Receivable but never resumes recovery automation automatically. If the response is lost, GET the Receivable before deciding whether another command is needed.
curl --request POST \
--url https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"effectiveAt": "2026-08-29T12:00:00Z"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({effectiveAt: '2026-08-29T12:00:00Z'})
};
fetch('https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen"
payload = { "effectiveAt": "2026-08-29T12:00:00Z" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen"
payload := strings.NewReader("{\n \"effectiveAt\": \"2026-08-29T12:00:00Z\"\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.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"effectiveAt\": \"2026-08-29T12:00:00Z\"\n}")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/receivables/{externalReceivableId}/reopen");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"effectiveAt\": \"2026-08-29T12:00:00Z\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"financialType": "loan_balance",
"sourceRevision": 1,
"balanceBreakdown": {
"costs": {
"amount": "0.00",
"currency": "EUR"
},
"fees": {
"amount": "50.00",
"currency": "EUR"
},
"interest": {
"amount": "200.00",
"currency": "EUR"
},
"principal": {
"amount": "1000.00",
"currency": "EUR"
}
},
"creditUnion": {
"arrearsAmount": {
"amount": "1250.00",
"currency": "EUR"
},
"contractualInstalment": {
"amount": {
"amount": "125.00",
"currency": "EUR"
},
"frequency": "monthly"
},
"defaultDate": "2026-07-01",
"loanAccountReference": "loan-ref-example",
"loanType": "personal_loan",
"totalOutstandingAmount": {
"amount": "4000.00",
"currency": "EUR"
}
},
"dueDate": "2026-08-01",
"recoverableAmount": {
"amount": "1250.00",
"currency": "EUR"
},
"responsibleCustomers": [
{
"externalCustomerId": "CUS_123",
"role": "primary"
}
],
"sourceReference": "receivable-ref-example",
"financialPosition": {
"confirmedUnreconciledAmount": {
"amount": "0.00",
"currency": "EUR"
},
"receiptAcknowledgedAmount": {
"amount": "0.00",
"currency": "EUR"
},
"sourceAmount": {
"amount": "1250.00",
"currency": "EUR"
},
"workingAmount": {
"amount": "1250.00",
"currency": "EUR"
}
},
"externalReceivableId": "REC_123",
"status": "active",
"updatedAt": "2026-08-29T12:00:00Z"
}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}$Opaque Receivable identifier supplied by the Integration; capitalization must match.
^[A-Za-z0-9_-]{1,128}$Body
One uncompressed resource representation, limited to 256 KiB.
^(?:(?:\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))$Response
Lifecycle command applied. If the response is lost, read the Receivable before deciding whether to send another lifecycle command.
- Option 1
- Option 2
Each financial type requires exactly its industry context. The balance breakdown must sum exactly to recoverableAmount.
Show child attributes
Show child attributes
loan_instalment, accelerated_balance, loan_balance x <= 9007199254740991^(?:(?:\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])))$Show child attributes
Show child attributes
Customer identifiers must be unique and exactly one role must be primary.
1 - 8 elementsShow child attributes
Show child attributes
1 - 200^[A-Za-z0-9_-]{1,128}$active, paused, closed ^(?:(?:\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))$All four amounts are required when a breakdown is supplied; use 0.00 where needed.
Show child attributes
Show child attributes
At most one assertion per type; ordering is semantically irrelevant.
3Show child attributes
Show child attributes
Present on reads. sourceAmount is the declared accounting authority's position, workingAmount is the safe collection balance after confirmed allocated Payments, and confirmedUnreconciledAmount is the allocated confirmed amount the Source has not yet acknowledged. Unapplied funds appear in none of them.
Show child attributes
Show child attributes