> 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/grants/create/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.givechariot.com/_mcp/server. # Create Grant POST https://api.givechariot.com/v1/grants Content-Type: application/json Create and submit a new grant. This should be used to capture a grant intent from an authorized DAFpay workflow session and submit the grant request to the DAF sponsor. On initial creation of the grant, this request will return a 201 Created status. On subsequent requests, the request will return status 200 OK. Error handling: * The grant must be captured within 15 minutes of authorization otherwise the request will return status `410 Gone`. * If this request is submitted while this grant is already being processed, the request will return status `409 Conflict`. * The amount must be in whole dollar increments (rounded to the nearest hundred) as currently DAFs only accept whole dollar grants otherwise the request will return status `400 Bad Request`. * The amount must be greater than or equal to the minimum grant amount for the DAF otherwise the request will return status `400 Bad Request`. * The amount must be less than or equal to the user's DAF account balance otherwise the request will return status `400 Bad Request`. * Any inputs exceeding the maximum allowed length will be automatically truncated. Reference: https://docs.givechariot.com/api/grants/create ## 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 ### Body (application/json) This endpoint expects an object. - `workflowSessionId` (string, required) — The identifier of the donor's DAFpay Workflow Session. See [Capturing Grant Intents](/guides/dafpay/integrating-dafpay/integration#capturing-grant-intents) for how to get this value from the DAFpay `CHARIOT_SUCCESS` event. - `amount` (double, required) — The grant amount in cents that will be processed by Chariot and submitted to the DAF. This amount must be in whole dollar increments (rounded to the nearest hundred) as currently all DAFs only accept whole dollar grant amounts. - `applicationFeeAmount` (double, optional) — This parameter specifies the fee your platform plans to take from the grant in cents. This is a fee in addition to Chariot's processing fee. With application fees, Chariot collects the fee you determine from the nonprofit and passes it to your platform. Please note that platform fees are only taken when the grant is successfully received by the nonprofit. The sum of Chariot's fee and the applicationFeeAmount cannot exceed 5% of the grant's amount. If the fee limit is exceeded, a `400 Bad Request` error will be returned. - `donor` (V1GrantsPostRequestBodyContentApplicationJsonSchemaDonor, optional) - `note` (string, optional) — A note the donor wants to send to the nonprofit. Maximum length: 400 characters. - `designation` (string, optional) — The designation to include on the grant. If this is left blank, "Where needed most" will be used. Note that including a custom designation may cause the grant approval process to take longer. Maximum length: 100 characters. ## Response ### 200 The grant - `id` (string, required) — The unique identifier for the object - `workflowSessionId` (string, required) — ID of the Connect Workflow Session associated with this grant - `fundId` (string, required) — ID of the donor advised fund - `amount` (double, required) — The grant amount expressed in units of whole cents - `trackingId` (string, optional) — The tracking ID for the grant - `donor_account_id` (string, optional) — ID of the [Donor Account](/api/donor-accounts) that this grant was submitted from. Present on grants submitted by donors who authenticated through the DAFpay Donor Account flow. Grants submitted without a linked Donor Account will not have this field set. - `donation_id` (string, optional) — ID of the [Donation](/api/donations) produced by this grant. Populated once the grant has produced a donation. Newly-created grants and grants that have not yet produced a donation do not have this field set. - `externalGrantId` (string, optional) — ID of the grant associated with the donor advised fund - `createdAt` (datetime, optional) — Time when this object was created; expressed in RFC 3339 format - `updatedAt` (datetime, optional) — Time when this object was last updated; expressed in RFC 3339 format - `status` (string, optional) — The status of the grant - `feeDetail` (GrantFeeDetail, optional) — The fee detail of the grant - `metadata` (map from string to string, optional) — A map of arbitrary string keys and values to store information about the object - `firstName` (string, optional) — The donor's first name - `lastName` (string, optional) — The donor's last name - `phone` (string, optional) — The donor's phone number - `email` (string, optional) — The donor's email - `note` (string, optional) — An note inputted by the user at submisson - `statuses` (list of GrantStatus, optional) — The list of grant statuses for this grant - `paymentChannel` (enum, optional) — The payment channel for the grant. This is useful to know how the grant will be sent. The payment channel will be one of the following: - dafpay_network: Grant will be sent to the DAFPay Network 501(c)(3) nonprofit organization (EIN: 93-1372175). The DAFPay Network will then review and process the grant and send the funds to the intended recipient. - direct: Grant will be sent directly to the intended recipient. - Allowed values: `dafpay_network`, `direct` - `address` (GrantAddress, optional) - `userFriendlyId` (string, optional, deprecated) — Often referred to as the "Chariot ID", this is the ID that will be included in the payment from the DAF provider. ### 201 Created - `id` (string, required) — The unique identifier for the object - `workflowSessionId` (string, required) — ID of the Connect Workflow Session associated with this grant - `fundId` (string, required) — ID of the donor advised fund - `amount` (double, required) — The grant amount expressed in units of whole cents - `trackingId` (string, optional) — The tracking ID for the grant - `donor_account_id` (string, optional) — ID of the [Donor Account](/api/donor-accounts) that this grant was submitted from. Present on grants submitted by donors who authenticated through the DAFpay Donor Account flow. Grants submitted without a linked Donor Account will not have this field set. - `donation_id` (string, optional) — ID of the [Donation](/api/donations) produced by this grant. Populated once the grant has produced a donation. Newly-created grants and grants that have not yet produced a donation do not have this field set. - `externalGrantId` (string, optional) — ID of the grant associated with the donor advised fund - `createdAt` (datetime, optional) — Time when this object was created; expressed in RFC 3339 format - `updatedAt` (datetime, optional) — Time when this object was last updated; expressed in RFC 3339 format - `status` (string, optional) — The status of the grant - `feeDetail` (GrantFeeDetail, optional) — The fee detail of the grant - `metadata` (map from string to string, optional) — A map of arbitrary string keys and values to store information about the object - `firstName` (string, optional) — The donor's first name - `lastName` (string, optional) — The donor's last name - `phone` (string, optional) — The donor's phone number - `email` (string, optional) — The donor's email - `note` (string, optional) — An note inputted by the user at submisson - `statuses` (list of GrantStatus, optional) — The list of grant statuses for this grant - `paymentChannel` (enum, optional) — The payment channel for the grant. This is useful to know how the grant will be sent. The payment channel will be one of the following: - dafpay_network: Grant will be sent to the DAFPay Network 501(c)(3) nonprofit organization (EIN: 93-1372175). The DAFPay Network will then review and process the grant and send the funds to the intended recipient. - direct: Grant will be sent directly to the intended recipient. - Allowed values: `dafpay_network`, `direct` - `address` (GrantAddress, optional) - `userFriendlyId` (string, optional, deprecated) — Often referred to as the "Chariot ID", this is the ID that will be included in the payment from the DAF provider. ## 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. ### 410 Gone Error Resource Gone or Expired - `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 ### V1GrantsPostRequestBodyContentApplicationJsonSchemaDonor - `firstName` (string, optional) — The first name of the donor. Maximum length: 255 characters. - `lastName` (string, optional) — The last name of the donor. Maximum length: 255 characters. - `email` (string, optional) — The email address of the donor. Maximum length: 255 characters. - `phone` (string, optional) — The phone number of the donor. Maximum length: 255 characters. - `address` (GrantAddress, optional) ### GrantFeeDetail The fee detail of the grant - `total` (double, optional) — The total fee amount expressed in units of cents - `contributions` (list of ContributionFeeDetail, optional) — The list of fee contributions for this grant ### GrantStatus - `id` (string, required) — The unique identifier for the object - `createdAt` (datetime, required) — Time when this object was created; expressed in RFC 3339 format - `status` (enum, required) — The status of the grant. * awaiting_account_approval: The linked Donor Account is not yet `approved`. The grant advances automatically when the Account is approved. * awaiting_daf_submission: The Account is approved and the grant is ready for the DAF to submit in their system. * initiated: The DAF has submitted the grant. Terminal. * canceled: The DAF has canceled the grant. Terminal. - Allowed values: `awaiting_account_approval`, `awaiting_daf_submission`, `initiated`, `canceled` - `comment` (string, optional) — The user comment for the update ### GrantAddress - `line1` (string, optional) — Address line 1 (e.g. street, PO Box, or company name). Maximum length: 255 characters. - `line2` (string, optional) — Address line 2 (e.g. apartment, suite, unit, or building). Maximum length: 255 characters. - `city` (string, optional) — City, district, suburb, town, or village.. Maximum length: 255 characters. - `state` (string, optional) — State, county, province, or region. Maximum length: 255 characters. - `postalCode` (string, optional) — ZIP or postal code. Maximum length: 255 characters. ### ContributionFeeDetail - `name` (string, required) — The name of the party charging the fee. This is an informational field. If you need to differentiate between fees charged by different parties, you should use the `feeType` field. - `amount` (double, required) — The fee contribution amount expressed in units of cents - `feeType` (enum, optional) — This indicates the source of a fee contribution. * chariot: Chariot's processing fee * daf: The DAF's processing fee * fundraising_application: The fundraising application's processing fee - Allowed values: `chariot`, `daf`, `fundraising_application` ## Examples ### Simple grant output **Request** ```json { "workflowSessionId": "string", "amount": 15000 } ``` **Response** ```json { "id": "1e60800e-849b-43d1-870e-57afc8d75473", "workflowSessionId": "cfe09e64-6a74-4dab-a565-361185a6f248", "fundId": "daf-id", "amount": 15000, "createdAt": "2021-08-10 15:00:00.000", "updatedAt": "2021-08-11 15:34:00.000", "status": "Initiated" } ``` ### Simple grant output **Request** ```json { "workflowSessionId": "string", "amount": 15000 } ``` **Response** ```json { "id": "1e60800e-849b-43d1-870e-57afc8d75473", "workflowSessionId": "cfe09e64-6a74-4dab-a565-361185a6f248", "fundId": "daf-id", "amount": 15000, "createdAt": "2021-08-10 15:00:00.000", "updatedAt": "2021-08-11 15:34:00.000", "status": "Initiated" } ```