---
title: "Submit Grant Request"
method: POST
path: "/v1/grant_requests/{id}/submit"
tags: ["Grant Requests"]
---

# Submit Grant Request

`POST /v1/grant_requests/{id}/submit`

Confirm that you have submitted the grant in your system.

Calling this endpoint moves the Grant Request's status to `submitted` and emits a `grant_request.updated` webhook event.

<Warning>
- The Grant Request must be in `pending` status. If the linked [Donor Account](/api/donor-accounts) is not yet `approved`, the Grant Request will be in `awaiting_account_decision` and this request returns status `412 Precondition Failed`.
- A Grant Request that is already `submitted` or `rejected` cannot be updated. Subsequent calls return status `409 Conflict`.
</Warning>

## Path parameters

- `id` string, required

## Request body

- object
  - `external_grant_id` string — The DAF's internal identifier for this grant. Setting this at submission time provides a useful audit trail and reconciliation key. Maximum length: 255 characters.
  - `comment` string — An optional comment recorded with the submission. Maximum length: 400 characters.

## Response `200`

The Grant Request was submitted.

- GrantRequest — A Grant Request is a donation intent submitted by a donor through the DAFpay payment option, addressed to a specific nonprofit. The DAF Provider is responsible for processing it in their own system and reporting the outcome back to DAFpay via the [Submit](/api/grant-requests/submit) or [Reject](/api/grant-requests/reject) endpoints. All amounts are in US dollars.
  - `id` string, required — The unique identifier for this Grant Request.
  - `donor_account_id` string, required — The ID of the [Donor Account](/api/donor-accounts) this Grant Request belongs to.
  - `giving_pool_id` string, nullable — The ID of the [Giving Pool](/api/giving_pools) the grant is being made from. Present when the donor selected a specific giving pool.
  - `status` 'awaiting_account_decision' | 'pending' | 'submitted' | 'rejected', required — The lifecycle status of a Grant Request. - `awaiting_account_decision`: The linked Donor Account is not yet `approved`. Advances automatically when the account is approved. - `pending`: The Donor Account is approved and the Grant Request is awaiting your decision. - `submitted`: You have submitted the grant in your system. Terminal. - `rejected`: You have rejected the grant and it will not be processed. Terminal.
  - `ein` string, required — The EIN of the recipient nonprofit.
  - `nonprofit_name` string — The name of the recipient nonprofit at the time of the Grant Request.
  - `amount_cents` integer, required — The grant amount in cents (USD).
  - `frequency` 'one_time' | 'monthly' | 'quarterly' | 'annual', required — How often the donor intends this grant to recur. Only frequencies enabled in your DAF Provider settings will appear on Grant Requests.
  - `form_url` string, uri, required — The URL of the page where the donor submitted the DAFpay gift.
  - `purpose` string, nullable — The donor's stated purpose for the grant.
  - `note` string, nullable — An optional note from the donor to the nonprofit.
  - `donor_contact` GrantRequestDonorContact — A snapshot of the donor's contact information captured for this Grant Request.
    - `name` string
    - `email` string, email
    - `phone` string
    - `address` GrantRequestDonorContactAddress — The donor's mailing address at the time of the Grant Request.
      - `line1` string
      - `line2` string, nullable
      - `city` string
      - `state` string
      - `zip` string
  - `rejection_reason` string, nullable — The reason provided when the Grant Request was rejected. Set when status transitions to `rejected`.
  - `created_at` string, date-time, required — Time when this object was created, expressed in RFC 3339 format.
  - `updated_at` string, date-time, required — Time when this object was last updated, expressed in RFC 3339 format.

## Other responses

- `400` — The request is invalid or contains invalid parameters
- `401` — Unauthorized. The request is missing the security (OAuth2 Bearer token) requirements and the server is unable to verify the identify of the caller.
- `403` — Access denied
- `404` — Resource Not Found
- `409` — Resource Conflicts
- `412` — Precondition Failed
- `500` — Internal Server Error

---

[API](https://skmtc.net/chariot-giving/apis/chariot-api.md) · [All operations](https://skmtc.net/chariot-giving/apis/chariot-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/chariot-giving/chariot-api/versions/dc28cadc066e/schema)
