Grant Requests

Submit Grant Request

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>
post/v1/grant_requests/{id}/submit

Path parameters

idstring required

The unique ID of the Grant Request.

Request body

external_grant_idstring

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.

commentstring

An optional comment recorded with the submission. Maximum length: 400 characters.

Example request

{
  "external_grant_id": "ACME-GRANT-2026-00481"
}

Response

The Grant Request was submitted.

idstring required

The unique identifier for this Grant Request.

donor_account_idstring required

The ID of the Donor Account this Grant Request belongs to.

giving_pool_idstring nullable

The ID of the Giving Pool 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.
einstring required

The EIN of the recipient nonprofit.

nonprofit_namestring

The name of the recipient nonprofit at the time of the Grant Request.

amount_centsinteger 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_urlstring uri required

The URL of the page where the donor submitted the DAFpay gift.

purposestring nullable

The donor's stated purpose for the grant.

notestring nullable

An optional note from the donor to the nonprofit.

rejection_reasonstring nullable

The reason provided when the Grant Request was rejected. Set when status transitions to rejected.

created_atstring date-time required

Time when this object was created, expressed in RFC 3339 format.

updated_atstring date-time required

Time when this object was last updated, expressed in RFC 3339 format.

Example response

{
  "id": "grant_req_01jpjenf5q6cawy43yxfcrxhct",
  "donor_account_id": "donor_account_01jpjenf5q6cawy43yxfcrxhct",
  "giving_pool_id": "0bf40881-8ee2-47fb-98ca-f58c7999aa34",
  "ein": "12-3456789",
  "nonprofit_name": "American Red Cross",
  "amount_cents": 10000,
  "form_url": "https://example.org/donate",
  "created_at": "2026-04-01T09:00:00Z",
  "updated_at": "2026-04-01T12:00:00Z"
}

Changes

Changed in 5 of the 41 revisions of this API.35764

  • b87f7738d3361435See the full diff
    • removed the required property code from the response with the 400 status

      response-required-property-removed

    • removed the required property code from the response with the 401 status

      response-required-property-removed

    • removed the required property code from the response with the 403 status

      response-required-property-removed

    • removed the required property code from the response with the 404 status

      response-required-property-removed

    • removed the required property code from the response with the 409 status

      response-required-property-removed

    • removed the required property code from the response with the 412 status

      response-required-property-removed

    • removed the required property code from the response with the 500 status

      response-required-property-removed

    • removed the required property message from the response with the 400 status

      response-required-property-removed

    • removed the required property message from the response with the 401 status

      response-required-property-removed

    • removed the required property message from the response with the 403 status

      response-required-property-removed

    • removed the required property message from the response with the 404 status

      response-required-property-removed

    • removed the required property message from the response with the 409 status

      response-required-property-removed

    • removed the required property message from the response with the 412 status

      response-required-property-removed

    • removed the required property message from the response with the 500 status

      response-required-property-removed

    • media type application/json was changed to a more specific media type application/problem+json for the response status 400

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 401

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 403

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 404

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 409

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 412

      response-media-type-name-specialized

    • media type application/json was changed to a more specific media type application/problem+json for the response status 500

      response-media-type-name-specialized

    • added the required property detail to the response with the 400 status

      response-required-property-added

    • added the required property detail to the response with the 401 status

      response-required-property-added

    • added the required property detail to the response with the 403 status

      response-required-property-added

    • added the required property detail to the response with the 404 status

      response-required-property-added

    • added the required property detail to the response with the 409 status

      response-required-property-added

    • added the required property detail to the response with the 412 status

      response-required-property-added

    • added the required property detail to the response with the 500 status

      response-required-property-added

    • added the required property status to the response with the 400 status

      response-required-property-added

    • added the required property status to the response with the 401 status

      response-required-property-added

    • added the required property status to the response with the 403 status

      response-required-property-added

    • added the required property status to the response with the 404 status

      response-required-property-added

    • added the required property status to the response with the 409 status

      response-required-property-added

    • added the required property status to the response with the 412 status

      response-required-property-added

    • added the required property status to the response with the 500 status

      response-required-property-added

    • added the required property title to the response with the 400 status

      response-required-property-added

    • added the required property title to the response with the 401 status

      response-required-property-added

    • added the required property title to the response with the 403 status

      response-required-property-added

    • added the required property title to the response with the 404 status

      response-required-property-added

    • added the required property title to the response with the 409 status

      response-required-property-added

    • added the required property title to the response with the 412 status

      response-required-property-added

    • added the required property title to the response with the 500 status

      response-required-property-added

    • added the required property type to the response with the 400 status

      response-required-property-added

    • added the required property type to the response with the 401 status

      response-required-property-added

    • added the required property type to the response with the 403 status

      response-required-property-added

    • added the required property type to the response with the 404 status

      response-required-property-added

    • added the required property type to the response with the 409 status

      response-required-property-added

    • added the required property type to the response with the 412 status

      response-required-property-added

    • added the required property type to the response with the 500 status

      response-required-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • removed the optional property details from the response with the 400 status

      response-optional-property-removed

    • removed the optional property details from the response with the 401 status

      response-optional-property-removed

    • removed the optional property details from the response with the 403 status

      response-optional-property-removed

    • removed the optional property details from the response with the 404 status

      response-optional-property-removed

    • removed the optional property details from the response with the 409 status

      response-optional-property-removed

    • removed the optional property details from the response with the 412 status

      response-optional-property-removed

    • removed the optional property details from the response with the 500 status

      response-optional-property-removed

    • added the optional property details/items/debug to the response with the 400 status

      response-optional-property-added

    • added the optional property details/items/debug to the response with the 401 status

      response-optional-property-added

    • added the optional property details/items/debug to the response with the 403 status

      response-optional-property-added

    • added the optional property details/items/debug to the response with the 404 status

      response-optional-property-added

    • added the optional property details/items/debug to the response with the 409 status

      response-optional-property-added

    • added the optional property details/items/debug to the response with the 412 status

      response-optional-property-added

    • added the optional property details/items/debug to the response with the 500 status

      response-optional-property-added

    • added the optional property details/items/type to the response with the 400 status

      response-optional-property-added

    • added the optional property details/items/type to the response with the 401 status

      response-optional-property-added

    • added the optional property details/items/type to the response with the 403 status

      response-optional-property-added

    • added the optional property details/items/type to the response with the 404 status

      response-optional-property-added

    • added the optional property details/items/type to the response with the 409 status

      response-optional-property-added

    • added the optional property details/items/type to the response with the 412 status

      response-optional-property-added

    • added the optional property details/items/type to the response with the 500 status

      response-optional-property-added

    • added the optional property details/items/value to the response with the 400 status

      response-optional-property-added

    • added the optional property details/items/value to the response with the 401 status

      response-optional-property-added

    • added the optional property details/items/value to the response with the 403 status

      response-optional-property-added

    • added the optional property details/items/value to the response with the 404 status

      response-optional-property-added

    • added the optional property details/items/value to the response with the 409 status

      response-optional-property-added

    • added the optional property details/items/value to the response with the 412 status

      response-optional-property-added

    • added the optional property details/items/value to the response with the 500 status

      response-optional-property-added

  • 90671617b825217See the full diff
    • the code response's property type/format changed from number/ to string/ for status 400

      response-property-type-changed

    • the code response's property type/format changed from number/ to string/ for status 401

      response-property-type-changed

    • the code response's property type/format changed from number/ to string/ for status 403

      response-property-type-changed

    • the code response's property type/format changed from number/ to string/ for status 404

      response-property-type-changed

    • the code response's property type/format changed from number/ to string/ for status 409

      response-property-type-changed

    • the code response's property type/format changed from number/ to string/ for status 412

      response-property-type-changed

    • the code response's property type/format changed from number/ to string/ for status 500

      response-property-type-changed

    • removed the required property error from the response with the 400 status

      response-required-property-removed

    • removed the required property error from the response with the 401 status

      response-required-property-removed

    • removed the required property error from the response with the 403 status

      response-required-property-removed

    • removed the required property error from the response with the 404 status

      response-required-property-removed

    • removed the required property error from the response with the 409 status

      response-required-property-removed

    • removed the required property error from the response with the 412 status

      response-required-property-removed

    • removed the required property error from the response with the 500 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 400 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 401 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 403 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 404 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 409 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 412 status

      response-required-property-removed

    • removed the required property timestamp from the response with the 500 status

      response-required-property-removed

    • added the optional property details to the response with the 400 status

      response-optional-property-added

    • added the optional property details to the response with the 401 status

      response-optional-property-added

    • added the optional property details to the response with the 403 status

      response-optional-property-added

    • added the optional property details to the response with the 404 status

      response-optional-property-added

    • added the optional property details to the response with the 409 status

      response-optional-property-added

    • added the optional property details to the response with the 412 status

      response-optional-property-added

    • added the optional property details to the response with the 500 status

      response-optional-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • endpoint added

      endpoint-added