curl --request POST \
--url https://{organization}.rescueconsole.com/api/animals/adoptions/{id}/payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount_cents": 15000,
"method": "card",
"gateway": "stripe",
"gateway_reference": "ch_3Q8contoso0042",
"received_on": "2026-09-18"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount_cents: 15000,
method: 'card',
gateway: 'stripe',
gateway_reference: 'ch_3Q8contoso0042',
received_on: '2026-09-18'
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/adoptions/{id}/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/adoptions/{id}/payments"
payload = {
"amount_cents": 15000,
"method": "card",
"gateway": "stripe",
"gateway_reference": "ch_3Q8contoso0042",
"received_on": "2026-09-18"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"payment": {
"id": "<string>",
"adoption_id": "<string>",
"kind": "payment",
"amount_cents": 2,
"method": "cash",
"received_on": "2023-12-25",
"reference": "<string>",
"verified_at": "2023-11-07T05:31:56Z",
"verified_by_person_id": "<string>",
"voided_at": "2023-11-07T05:31:56Z",
"voided_by_person_id": "<string>",
"void_reason": "<string>",
"recorded_by_person_id": "<string>",
"notes": "<string>",
"gateway": "stripe",
"gateway_reference": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"amounts": {
"fee_cents": 123,
"paid_cents": 123,
"pending_cents": 123,
"balance_cents": 123,
"donation_cents": 123
}
}{
"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)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Record a payment or refund
Records money received, or money given back (kind refund). A payment is recorded, not received: it counts as paid only once it is verified. Send verified: true to verify it at once, for cash handed over in person. It is recorded as entered by the person who made the key. Not on a reversed adoption. Needs write on Animals.
curl --request POST \
--url https://{organization}.rescueconsole.com/api/animals/adoptions/{id}/payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount_cents": 15000,
"method": "card",
"gateway": "stripe",
"gateway_reference": "ch_3Q8contoso0042",
"received_on": "2026-09-18"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount_cents: 15000,
method: 'card',
gateway: 'stripe',
gateway_reference: 'ch_3Q8contoso0042',
received_on: '2026-09-18'
})
};
fetch('https://{organization}.rescueconsole.com/api/animals/adoptions/{id}/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/animals/adoptions/{id}/payments"
payload = {
"amount_cents": 15000,
"method": "card",
"gateway": "stripe",
"gateway_reference": "ch_3Q8contoso0042",
"received_on": "2026-09-18"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"payment": {
"id": "<string>",
"adoption_id": "<string>",
"kind": "payment",
"amount_cents": 2,
"method": "cash",
"received_on": "2023-12-25",
"reference": "<string>",
"verified_at": "2023-11-07T05:31:56Z",
"verified_by_person_id": "<string>",
"voided_at": "2023-11-07T05:31:56Z",
"voided_by_person_id": "<string>",
"void_reason": "<string>",
"recorded_by_person_id": "<string>",
"notes": "<string>",
"gateway": "stripe",
"gateway_reference": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"amounts": {
"fee_cents": 123,
"paid_cents": 123,
"pending_cents": 123,
"balance_cents": 123,
"donation_cents": 123
}
}{
"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)"
}{
"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_.
Path Parameters
The adoption's ID.
Body
In whole cents, and always positive.
x >= 1cash, check, card, ach, online, other payment, refund A check number, the last four digits of a card, or anything else to find it by.
Today unless you say.
true verifies it now, as the person who made the key: for cash handed over in person.
The payment processor it came through.
stripe, square, zeffy, paypal, venmo, cashapp, other The processor's own ID for the payment. Needs gateway.
Response
The payment, and the adoption's money now.