List settlements
curl --request GET \
--url https://api.grainledger.com/api/v1/settlements \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.grainledger.com/api/v1/settlements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.grainledger.com/api/v1/settlements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"settlements": [
{
"id": "settlement_1",
"provider": "MANUAL",
"externalId": "api-example",
"externalReference": "August online giving",
"estimatedArrivalDate": "2026-08-21T00:00:00.000Z",
"actualArrivalDate": null,
"recordedTotals": {
"gross": 1025,
"fees": 25,
"net": 1000,
"paymentCount": 8
},
"linkedContributionTotals": {
"gross": 1025,
"fees": 25,
"net": 1000,
"paymentCount": 8
},
"currency": "USD",
"settlementType": null,
"status": "PENDING",
"accounting": {
"disposition": "ELIGIBLE",
"reason": null,
"journalEntry": null
},
"bankLink": {
"isLinked": false,
"transaction": null
},
"dimensions": [],
"batches": [],
"isFrozen": false,
"createdAt": "2026-08-21T12:00:00.000Z",
"updatedAt": "2026-08-21T12:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"totalPages": 1
}
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}Settlements
List settlements
Returns recorded totals and independently calculated totals from linked contributions. dateFrom/dateTo filter the UTC calendar arrival day; dateTo is inclusive to callers.
GET
https://api.grainledger.com
/
api
/
v1
/
settlements
List settlements
curl --request GET \
--url https://api.grainledger.com/api/v1/settlements \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.grainledger.com/api/v1/settlements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.grainledger.com/api/v1/settlements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"settlements": [
{
"id": "settlement_1",
"provider": "MANUAL",
"externalId": "api-example",
"externalReference": "August online giving",
"estimatedArrivalDate": "2026-08-21T00:00:00.000Z",
"actualArrivalDate": null,
"recordedTotals": {
"gross": 1025,
"fees": 25,
"net": 1000,
"paymentCount": 8
},
"linkedContributionTotals": {
"gross": 1025,
"fees": 25,
"net": 1000,
"paymentCount": 8
},
"currency": "USD",
"settlementType": null,
"status": "PENDING",
"accounting": {
"disposition": "ELIGIBLE",
"reason": null,
"journalEntry": null
},
"bankLink": {
"isLinked": false,
"transaction": null
},
"dimensions": [],
"batches": [],
"isFrozen": false,
"createdAt": "2026-08-21T12:00:00.000Z",
"updatedAt": "2026-08-21T12:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"totalPages": 1
}
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}{
"code": "forbidden",
"message": "You do not have access to this organization.",
"error": "You do not have access to this organization."
}Authorizations
ApiKeyAuthGrainOAuth2BearerAuth
Organization API key created in Grain Settings → API. The key determines the organization and is limited to its assigned resource scopes. Write scopes imply the corresponding read scope.
Headers
Required with OAuth access tokens. Optional with organization API keys; if supplied, it must match the key's organization.
Query Parameters
Page number (1-based)
Required range:
x >= 1Giving records per page
Required range:
1 <= x <= 100Available options:
STRIPE, PUSHPAY, SUBSPLASH, TITHELY, PLANNING_CENTER, ROCK_RMS, RAMP, DIVVY, MANUAL Available options:
PENDING, IN_TRANSIT, DEPOSITED, MATCHED, RECONCILED, FAILED, CANCELLED Available options:
estimatedArrivalDate, totalGross, totalNet, createdAt Available options:
asc, desc Response
Paginated settlements
Hide child attributes
Hide child attributes
Available options:
GROSS, NET Hide child attributes
Hide child attributes
Available options:
ELIGIBLE, NEEDS_REVIEW, RECORDED_EXTERNALLY Hide child attributes
Hide child attributes
Last modified on August 23, 2026
⌘I