curl --request POST \
--url https://{organization}.rescueconsole.com/api/animals/reconciliations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"label": "Stripe payout, 1 September",
"gateway": "stripe",
"period_start": "2026-08-25",
"period_end": "2026-08-31",
"lines": [
{
"external_reference": "ch_3Q8contoso0042",
"occurred_on": "2026-08-27",
"description": "Adoption fee",
"amount_cents": 15000
},
{
"external_reference": "re_3Q8contoso0007",
"occurred_on": "2026-08-29",
"description": "Refund",
"amount_cents": -5000
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
label: 'Stripe payout, 1 September',
gateway: 'stripe',
period_start: '2026-08-25',
period_end: '2026-08-31',
lines: [
{
external_reference: 'ch_3Q8contoso0042',
occurred_on: '2026-08-27',
description: 'Adoption fee',
amount_cents: 15000
},
{
external_reference: 're_3Q8contoso0007',
occurred_on: '2026-08-29',
description: 'Refund',
amount_cents: -5000
}
]
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/reconciliations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/reconciliations"
payload = {
"label": "Stripe payout, 1 September",
"gateway": "stripe",
"period_start": "2026-08-25",
"period_end": "2026-08-31",
"lines": [
{
"external_reference": "ch_3Q8contoso0042",
"occurred_on": "2026-08-27",
"description": "Adoption fee",
"amount_cents": 15000
},
{
"external_reference": "re_3Q8contoso0007",
"occurred_on": "2026-08-29",
"description": "Refund",
"amount_cents": -5000
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"reconciliation": {
"id": "<string>",
"label": "<string>",
"status": "open",
"line_count": 123,
"matched_count": 123,
"unmatched_count": 123,
"ignored_count": 123,
"verifiable_count": 123,
"matched_cents": 123,
"unmatched_cents": 123,
"gateway": "stripe",
"period_start": "2023-12-25",
"period_end": "2023-12-25",
"closed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Import a settlement file
Imports the lines of a payment processor’s settlement file, each already mapped to these fields. A line whose external_reference is the gateway reference of a payment that is not voided, and not matched in another import, is matched to it at once; every other line waits for a person. Importing never verifies a payment: a match is evidence, and verifying is a separate step. 5,000 lines at most: split a longer file by date range. A period date that is not a date is left empty. Needs write on Animals.
curl --request POST \
--url https://{organization}.rescueconsole.com/api/animals/reconciliations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"label": "Stripe payout, 1 September",
"gateway": "stripe",
"period_start": "2026-08-25",
"period_end": "2026-08-31",
"lines": [
{
"external_reference": "ch_3Q8contoso0042",
"occurred_on": "2026-08-27",
"description": "Adoption fee",
"amount_cents": 15000
},
{
"external_reference": "re_3Q8contoso0007",
"occurred_on": "2026-08-29",
"description": "Refund",
"amount_cents": -5000
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
label: 'Stripe payout, 1 September',
gateway: 'stripe',
period_start: '2026-08-25',
period_end: '2026-08-31',
lines: [
{
external_reference: 'ch_3Q8contoso0042',
occurred_on: '2026-08-27',
description: 'Adoption fee',
amount_cents: 15000
},
{
external_reference: 're_3Q8contoso0007',
occurred_on: '2026-08-29',
description: 'Refund',
amount_cents: -5000
}
]
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/reconciliations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/reconciliations"
payload = {
"label": "Stripe payout, 1 September",
"gateway": "stripe",
"period_start": "2026-08-25",
"period_end": "2026-08-31",
"lines": [
{
"external_reference": "ch_3Q8contoso0042",
"occurred_on": "2026-08-27",
"description": "Adoption fee",
"amount_cents": 15000
},
{
"external_reference": "re_3Q8contoso0007",
"occurred_on": "2026-08-29",
"description": "Refund",
"amount_cents": -5000
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"reconciliation": {
"id": "<string>",
"label": "<string>",
"status": "open",
"line_count": 123,
"matched_count": 123,
"unmatched_count": 123,
"ignored_count": 123,
"verifiable_count": 123,
"matched_cents": 123,
"unmatched_cents": 123,
"gateway": "stripe",
"period_start": "2023-12-25",
"period_end": "2023-12-25",
"closed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Authorizations
An API key from Settings, API keys. It starts with rc_live_.
Body
Name the import so it can be found again.
1 - 5000 elementsShow child attributes
Show child attributes
The processor the file came from.
stripe, square, zeffy, paypal, venmo, cashapp, other The first day the file covers. With period_end, it lets the import list payments recorded in that time that the file does not account for.
Response
The import, with its counts.
One import of a processor's settlement file, with its counts.
Show child attributes
Show child attributes