curl --request PUT \
--url https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/balance-snapshots/{externalSnapshotId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"asOf": "2026-10-15T02:00:00Z",
"balances": [
{
"externalReceivableId": "REC_123",
"recoverableAmount": {
"amount": "1150.00",
"currency": "EUR"
},
"sourceRevision": 2
}
],
"sourcePosition": 41
}
'{
"acceptedAt": "2026-10-15T02:00:05.000Z",
"asOf": "2026-10-15T02:00:00Z",
"balances": [
{
"externalReceivableId": "REC_123",
"outcome": "applied",
"recoverableAmount": {
"amount": "1150.00",
"currency": "EUR"
},
"sourceRevision": 2
}
],
"externalSnapshotId": "SNAP_41",
"feedMode": "snapshot_only",
"sourcePosition": 41
}Record an ordered balance snapshot
Requires receivables:write. Accepts ordered Source balances for up to 100 Receivables, atomically; omitted Receivables are unaffected. In snapshot-only mode a newer authoritative balance becomes the Source position without being labelled a Payment or Credit. In transaction mode a snapshot is a checkpoint that applies no financial event twice; a difference is held, with both figures preserved. Confirmed Payments the Source has not acknowledged are overlaid only when confirmed after asOf; otherwise affected recovery and Payment actions are held. An identical retry returns 200 and changes nothing.
curl --request PUT \
--url https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/balance-snapshots/{externalSnapshotId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"asOf": "2026-10-15T02:00:00Z",
"balances": [
{
"externalReceivableId": "REC_123",
"recoverableAmount": {
"amount": "1150.00",
"currency": "EUR"
},
"sourceRevision": 2
}
],
"sourcePosition": 41
}
'{
"acceptedAt": "2026-10-15T02:00:05.000Z",
"asOf": "2026-10-15T02:00:00Z",
"balances": [
{
"externalReceivableId": "REC_123",
"outcome": "applied",
"recoverableAmount": {
"amount": "1150.00",
"currency": "EUR"
},
"sourceRevision": 2
}
],
"externalSnapshotId": "SNAP_41",
"feedMode": "snapshot_only",
"sourcePosition": 41
}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}$Caller-assigned identifier of this immutable snapshot.
^[A-Za-z0-9_-]{1,128}$Body
One uncompressed resource representation, limited to 256 KiB.
UTC time at which the Source produced these balances. Never earlier than the previous accepted snapshot.
^(?:(?:\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))$Incremental scope: Receivables omitted here are unaffected. Each Receivable appears at most once.
1 - 100 elementsShow child attributes
Show child attributes
Strictly increasing position of this snapshot in the Source's ordered feed, across the connection.
x <= 9007199254740991Response
Identical safe retry.
^(?:(?:\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))$^(?:(?:\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))$100Show child attributes
Show child attributes
^[A-Za-z0-9_-]{1,128}$transaction, snapshot_only x <= 9007199254740991