Simulate a payroll deposit (sandbox only)

​

Builds a bank deposit webhook, signs it with the sandbox's own secret, and sends it through the same HTTPS edge production uses — the full pipeline runs (verify → normalize → enqueue → reconcile), no real bank involved. Identify the receiving donor account with enrollment_id (the enrollment whose donor finished identity verification in the hosted flow); Roster resolves the simulated account for you. The church and the enrollment must belong to the authenticated partner. status_code echoes what the webhook edge answered: a rejection surfaces as-is rather than being masked as success. A deposit to an enrollment that is not active yet is accepted and held, exactly as a real early deposit would be. The simulated bank records the credit before the notice is sent, so when the webhook edge cannot be reached the answer is 502 and the credit stays recorded: repeat the same request with the same Idempotency-Key to resend the same notice without a second credit.

Headers

  • Required on every POST, before any effect: 1–255 visible ASCII characters, no spaces. The key belongs to the first body sent with it on this operation for 30 days from the moment that request arrives, including while that request is running and after a 5xx or a timeout. On an operation that creates a resource (POST /v1/churches, POST /v1/churches/import, POST /v1/church_consents, POST /v1/donor_sessions, POST /v1/manage_sessions, POST /v1/refunds and POST /v1/webhook_endpoints), a key whose request succeeded keeps its body for as long as the resource it created exists. A creation replayed with the same key and body returns the original resource with 200 and changes nothing; a 4xx releases the key.

Body

required
application/json

Responses

  • application/json
  • application/problem+json
  • application/problem+json
  • application/problem+json
  • application/problem+json
  • application/problem+json
Request Example for post/sandbox/simulate/deposit
curl https://api.sandbox.rostergiving.com/sandbox/simulate/deposit \
  --request POST \
  --header 'Idempotency-Key: ' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '{
  "church_id": "",
  "enrollment_id": "",
  "account_ref": "",
  "amount": 1,
  "trace": ""
}'
{
  "status_code": 1,
  "simulated": {
    "event_type": "ach.credit.received",
    "trace": "string",
    "bank_ts": "2026-10-22T14:55:08.129Z"
  },
  "eligible_at": "2026-10-22T14:55:08.129Z",
  "next_run_at": "2026-10-22T14:55:08.129Z"
}