> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.givechariot.com/v2026-04-01/api/grant-requests/submit/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.givechariot.com/_mcp/server. # Submit Grant Request POST https://api.givechariot.com/v1/grant_requests/{id}/submit Content-Type: application/json 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. * 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`. Reference: https://docs.givechariot.com/api/grant-requests/submit ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Servers - `https://api.givechariot.com` (Production, default) - `https://sandboxapi.givechariot.com` (Sandbox) ## Request ### Path parameters - `id` (string, required) — The unique ID of the Grant Request. ### Body (application/json) This endpoint expects an object. - `external_grant_id` (string, optional) — 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, optional) — An optional comment recorded with the submission. Maximum length: 400 characters. ## Response ### 200 The Grant Request was submitted. - `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. - `status` (enum, 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. - Allowed values: `awaiting_account_decision`, `pending`, `submitted`, `rejected` - `ein` (string, required) — The EIN of the recipient nonprofit. - `amount_cents` (long, required) — The grant amount in cents (USD). - `frequency` (enum, required) — How often the donor intends this grant to recur. Only frequencies enabled in your DAF Provider settings will appear on Grant Requests. - Allowed values: `one_time`, `monthly`, `quarterly`, `annual` - `form_url` (string, required) — The URL of the page where the donor submitted the DAFpay gift. - `created_at` (datetime, required) — Time when this object was created, expressed in RFC 3339 format. - `updated_at` (datetime, required) — Time when this object was last updated, expressed in RFC 3339 format. - `giving_pool_id` (string, optional, 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. - `nonprofit_name` (string, optional) — The name of the recipient nonprofit at the time of the Grant Request. - `purpose` (string, optional, nullable) — The donor's stated purpose for the grant. - `note` (string, optional, nullable) — An optional note from the donor to the nonprofit. - `donor_contact` (GrantRequestDonorContact, optional) — A snapshot of the donor's contact information captured for this Grant Request. - `rejection_reason` (string, optional, nullable) — The reason provided when the Grant Request was rejected. Set when status transitions to `rejected`. ## Errors ### 400 Bad Request Error The request is invalid or contains invalid parameters - `type` (string, required) — A URI reference identifying the problem type. - `title` (string, required) — A short, human-readable summary of the problem type. - `status` (integer, required) — The HTTP status code for this error. - `detail` (string, required) — A human-readable explanation specific to this occurrence. ### 401 Unauthorized Error Unauthorized. The request is missing the security (OAuth2 Bearer token) requirements and the server is unable to verify the identify of the caller. - `type` (string, required) — A URI reference identifying the problem type. - `title` (string, required) — A short, human-readable summary of the problem type. - `status` (integer, required) — The HTTP status code for this error. - `detail` (string, required) — A human-readable explanation specific to this occurrence. ### 403 Forbidden Error Access denied - `type` (string, required) — A URI reference identifying the problem type. - `title` (string, required) — A short, human-readable summary of the problem type. - `status` (integer, required) — The HTTP status code for this error. - `detail` (string, required) — A human-readable explanation specific to this occurrence. ### 404 Not Found Error Resource Not Found - `type` (string, required) — A URI reference identifying the problem type. - `title` (string, required) — A short, human-readable summary of the problem type. - `status` (integer, required) — The HTTP status code for this error. - `detail` (string, required) — A human-readable explanation specific to this occurrence. ### 409 Conflict Error Resource Conflicts - `type` (string, required) — A URI reference identifying the problem type. - `title` (string, required) — A short, human-readable summary of the problem type. - `status` (integer, required) — The HTTP status code for this error. - `detail` (string, required) — A human-readable explanation specific to this occurrence. ### 412 Precondition Failed Error Precondition Failed - `type` (string, required) — A URI reference identifying the problem type. - `title` (string, required) — A short, human-readable summary of the problem type. - `status` (integer, required) — The HTTP status code for this error. - `detail` (string, required) — A human-readable explanation specific to this occurrence. ### 500 Internal Server Error Internal Server Error - `type` (string, required) — A URI reference identifying the problem type. - `title` (string, required) — A short, human-readable summary of the problem type. - `status` (integer, required) — The HTTP status code for this error. - `detail` (string, required) — A human-readable explanation specific to this occurrence. ## Types ### GrantRequestDonorContact A snapshot of the donor's contact information captured for this Grant Request. - `name` (string, optional) - `email` (string, optional) - `phone` (string, optional) - `address` (GrantRequestDonorContactAddress, optional) — The donor's mailing address at the time of the Grant Request. ### GrantRequestDonorContactAddress The donor's mailing address at the time of the Grant Request. - `line1` (string, optional) - `line2` (string, optional, nullable) - `city` (string, optional) - `state` (string, optional) - `zip` (string, optional) ## Examples **Request** ```json {} ``` **Response** ```json { "id": "grant_req_01jpjenf5q6cawy43yxfcrxhct", "donor_account_id": "donor_account_01jpjenf5q6cawy43yxfcrxhct", "status": "submitted", "ein": "53-0196605", "amount_cents": 10000, "frequency": "one_time", "form_url": "https://example.org/donate", "created_at": "2026-04-03T14:22:00Z", "updated_at": "2026-04-04T09:15:00Z", "giving_pool_id": "0bf40881-8ee2-47fb-98ca-f58c7999aa34", "nonprofit_name": "American Red Cross", "purpose": "Disaster relief", "note": "Thank you for your service.", "donor_contact": { "name": "Warren Buffet", "email": "warrenBuffet@example.com", "phone": "+12125550100", "address": { "line1": "3555 Farnam Street", "line2": null, "city": "Omaha", "state": "NE", "zip": "68131" } }, "rejection_reason": null } ```