# Goodstack Docs > Developer documentation for Goodstack verification, donation, and giving products. Canonical OpenAPI specification: https://reference.poweredbypercent.com/openapi.json ## changelog Blog - [Blog](/changelog.md): Blog ### archive Archive - [Archive](/changelog/archive.md): Archive ### authors - [Authors](/changelog/authors.md) ### goodstack-launch As part of our continued growth in supporting impactful businesses and good causes around the world, we're excited to announce that Percent is rebranding as Goodstack! - [Percent is becoming Goodstack](/changelog/goodstack-launch.md): As part of our continued growth in supporting impactful businesses and good causes around the world, we're excited to announce that Percent is rebranding as Goodstack! ### tags - [Tags](/changelog/tags.md) - [One post tagged with "goodstack"](/changelog/tags/goodstack.md) - [One post tagged with "rebrand"](/changelog/tags/rebrand.md) ## search - [Search the documentation](/search.md) ## docs ### api - [Activities](/docs/api/activities.md): Activities - [Add a Organisation to a Category](/docs/api/add-a-organisation-to-a-category.md): Add a Organisation to a Category - [Agent Verification Events](/docs/api/agent-verification-events.md): Agent Verification Events - [Agent Verifications](/docs/api/agent-verifications.md): Agent Verifications - [Apply to a grant program](/docs/api/apply-to-a-grant-program.md): Creates a candidate for an application-type grant program. Needs no credentials. Requests are rate limited per IP address. - [Budgets](/docs/api/budgets.md): Budgets - [Bulk operations](/docs/api/bulk-operations.md): Apply up to 100 user operations in a single request. Each operation is a - [Campaigns](/docs/api/campaigns.md): Campaigns - [Cancel a Donation](/docs/api/cancel-a-donation.md): Applicable only to `direct` type Donations created directly through the [Create A Donation API](./create-a-donation). - [Cancel a Monitoring Subscription](/docs/api/cancel-a-monitoring-subscription.md): Cancel a Monitoring Subscription - [Cancel an Eligibility Subscription](/docs/api/cancel-an-eligibility-subscription.md): Cancel an Eligibility Subscription - [Categories](/docs/api/categories.md): Categories - [Countries](/docs/api/countries.md): Countries - [Country Compliance Check Events](/docs/api/country-compliance-check-events.md): Country Compliance Check Events - [Create a Category](/docs/api/create-a-category.md): Create a Category - [Create a donation](/docs/api/create-a-donation.md): Creates a new Donation of type `direct`. We will request payment from you for the Donations aggregated over a period. Goodstack and our associated foundations will then handle the ongoing safe and efficient disbursement of funds to the nonprofit. - [Create a Donation Session](/docs/api/create-a-donation-session.md): To create a Donation Session you must supply the `organisationId` of the nonprofit you want to let your user donate to. - [Create a GiftAid Declaration](/docs/api/create-a-gift-aid-declaration.md): Create a GiftAid Declaration - [Create a Monetary Donation Verification](/docs/api/create-a-monetary-donation-verification.md): Creates a new monetary donation verification for a partner. - [Create a Monitoring Subscription](/docs/api/create-a-monitoring-subscription.md): Create a Monitoring Subscription - [Create a User](/docs/api/create-a-user.md): Create a User - [Create a Validation Invite](/docs/api/create-a-validation-invite.md): Create a Validation Invite - [Create a Validation Request](/docs/api/create-a-validation-request.md): Create a Validation Request - [Create a Validation Request Document](/docs/api/create-a-validation-request-document.md): Uploads a document and updates the Validation Request to refer to that document. Valid file formats for documents are `jpg`, `png` and `pdf`. The maximum file size is 5MB. `heic`/`heif` photos are accepted too and are converted to `jpg` on upload. - [Create a Validation Submission](/docs/api/create-a-validation-submission.md): Create a Validation Submission - [Create a Webhook Subscription](/docs/api/create-a-webhook-subscription.md): Create a Webhook Subscription. Specify the event types to subscribe to and the URL where the notifications will be sent, the URL must be https. - [Create an Agent Verification](/docs/api/create-an-agent-verification.md): Create an Agent Verification - [Create an Eligibility Subscription](/docs/api/create-an-eligibility-subscription.md): Create an Eligibility Subscription - [Create Validation Submission Document](/docs/api/create-validation-submission-document.md): Uploads a Validation Submission document. Valid file formats for documents are `jpg`, `png` and `pdf`. The maximum file size is 5MB. `heic`/`heif` photos are accepted too and are converted to `jpg` on upload. - [Deactivate a user](/docs/api/deactivate-a-user.md): Soft-delete (deactivate) a user. The user must belong to the partner the SCIM key is bound to. - [Delete a Category](/docs/api/delete-a-category.md): Delete a Category - [Delete a Webhook Subscription](/docs/api/delete-a-webhook-subscription.md): Delete a Webhook Subscription - [Donation Events](/docs/api/donation-events.md): Donation Events - [Donation Match Request](/docs/api/donation-match-request.md): Donation Match Request - [Donation Sessions](/docs/api/donation-sessions.md): Donation Sessions - [Donation Wallets](/docs/api/donation-wallets.md): Donation Wallets - [Donations](/docs/api/donations.md): Donations - [Edit a Category](/docs/api/edit-a-category.md): Edit a Category - [Edit a Donation](/docs/api/edit-a-donation.md): Update the recipient organisation, metadata of a Donation. The recipient organisation can only be changed for `direct` type Donations created directly through the [Create A Donation API](./create-a-donation) that are in an `ACTIVE` status. - [Edit a Webhook Subscription](/docs/api/edit-a-webhook-subscription.md): Edit a Webhook Subscription - [Edit an Agent Verification](/docs/api/edit-an-agent-verification.md): Update an Agent Verifications metadata. - [Edit an Eligibility Subscription](/docs/api/edit-an-eligibility-subscription.md): Update an Eligibility Subscription's metadata. - [Eligibility Subscription Events](/docs/api/eligibility-subscription-events.md): Eligibility Subscription Events - [Eligibility Subscriptions](/docs/api/eligibility-subscriptions.md): Eligibility Subscriptions - [Employees](/docs/api/employees.md): Employees - [Fundraising](/docs/api/fundraising.md): Fundraising - [Gamification](/docs/api/gamification.md): Gamification - [Get a Monetary Donation Verification by ID](/docs/api/get-a-monetary-donation-verification-by-id.md): Retrieves a monetary donation verification by its ID for the authenticated partner. - [Get organisation branding](/docs/api/get-organisation-branding.md): Retrieve branding information for a specific organisation - [List candidates for a grant program](/docs/api/get-program-candidates.md): Fetches paginated candidate data for a grant program, enriched with organisation details, state transitions, and form submissions. Requires partner secret key authentication and the Grants scope. - [List form questions for a grant program](/docs/api/get-program-form-questions.md): Returns the form questions of each task template in the grant program, grouped by task template. Document questions are not included. Task templates without questions are not included. Task templates with the external audience are last. Requires the Grants scope and the grants:read permission. - [List task assignees for the partner](/docs/api/get-task-assignees.md): Returns the accounts that the task auto-assignment rules of the partner assign tasks to. Requires the Grants scope and the grants:read permission. - [Get Validation Submission Documents](/docs/api/get-validation-submission-documents.md): Get Validation Submission Documents - [Gift Aid](/docs/api/gift-aid.md): Gift Aid - [Giving Donations](/docs/api/giving-donations.md): Giving Donations - [Goodstack Services](/docs/api/goodstack-services.md): # Introduction - [Grants](/docs/api/grants.md): Grants - [List Account Achievements](/docs/api/list-account-achievements.md): Get a paginated list of Account Achievements - [List Account Budget state changes](/docs/api/list-account-budget-state-changes.md): Returns a list of all changes to an account's budget over time. Each entry represents - [List Activity Tags](/docs/api/list-activity-tags.md): List Activity Tags - [List Agent Verifications](/docs/api/list-agent-verifications.md): List Agent Verifications - [List an Organisations Milestones](/docs/api/list-an-organisations-milestones.md): List an Organisations Milestones - [List available Countries](/docs/api/list-available-countries.md): This endpoint will return all the Countries that Goodstack currently supports. If hasRegistry is true, it will return the subset of Countries that Goodstack currently has nonprofit data for. - [List Campaigns](/docs/api/list-campaigns.md): Get a paginated list of Campaigns - [List Categories](/docs/api/list-categories.md): List Categories - [List Donation Match Requests](/docs/api/list-donation-match-requests.md): Get a paginated list of Donation Match Requests for the authenticated partner. - [List Donation Sessions](/docs/api/list-donation-sessions.md): List Donation Sessions - [List Donation Wallet state changes](/docs/api/list-donation-wallet-state-changes.md): Returns a list of all state changes to a donation wallet's balance over time. Each entry - [List Donations](/docs/api/list-donations.md): Retrieve a list of donations. - [List Eligibility Subscriptions](/docs/api/list-eligibility-subscriptions.md): List Eligibility Subscriptions - [List Fundraisers](/docs/api/list-fundraisers.md): Get a paginated list of Fundraisers - [List Donations](/docs/api/list-giving-donations.md): Retrieve a paginated list of donations with optional filtering and organisation expansion. - [List Monitoring Subscriptions](/docs/api/list-monitoring-subscriptions.md): List Monitoring Subscriptions - [List Registries](/docs/api/list-registries.md): List Registries - [List resource types](/docs/api/list-resource-types.md): Discovery endpoint listing the supported resource types. The `User` - [List supported schemas](/docs/api/list-supported-schemas.md): Discovery endpoint listing the supported SCIM schemas: the Core User, - [List users](/docs/api/list-users.md): Return a paginated, optionally filtered and sorted list of users that - [List Validation Requests](/docs/api/list-validation-requests.md): List Validation Requests - [List Validation Submissions](/docs/api/list-validation-submissions.md): List Validation Submissions - [List Volunteering Opportunities](/docs/api/list-volunteering-opportunities.md): Get a paginated list of Volunteering Opportunities - [List Volunteering Opportunity Participants](/docs/api/list-volunteering-opportunity-participants.md): Get a paginated list of Volunteering Opportunity Participants - [List Volunteering Time Logs](/docs/api/list-volunteering-time-logs.md): Get a paginated list of Volunteering Time Logs - [List Webhook Subscriptions](/docs/api/list-webhook-subscriptions.md): List Webhook Subscriptions - [List Workplace Giving Employee Profiles](/docs/api/list-workplace-giving-employee-profiles.md): List Workplace Giving Employee Profiles - [Monetary Donation Verification Events](/docs/api/monetary-donation-verification-events.md): Monetary Donation Verification Events - [Monetary Donation Verifications](/docs/api/monetary-donation-verifications.md): Monetary Donation Verifications - [Monitoring Subscription Events](/docs/api/monitoring-subscription-events.md): Monitoring Subscription Events - [Monitoring Subscriptions](/docs/api/monitoring-subscriptions.md): Monitoring Subscriptions - [Org name search](/docs/api/org-name-search.md): Org name search - [Organisation](/docs/api/organisation.md): Organisation - [Organisation Branding](/docs/api/organisation-branding.md): Organisation Branding - [Organisations](/docs/api/organisations.md): Organisations - [Registries](/docs/api/registries.md): Registries - [Remove a Organisation from a Category](/docs/api/remove-a-organisation-from-a-category.md): Remove a Organisation from a Category - [Replace a user](/docs/api/replace-a-user.md): Replace a user's attributes. Attributes omitted from the request are - [Retrieve a Category](/docs/api/retrieve-a-category.md): Retrieve a Category - [Retrieve a Donation](/docs/api/retrieve-a-donation.md): Retrieve a donation by its ID. - [Retrieve a Monitoring Subscription](/docs/api/retrieve-a-monitoring-subscription.md): Retrieve a Monitoring Subscription - [Retrieve a Registry](/docs/api/retrieve-a-registry.md): Retrieve a Registry - [Retrieve a schema](/docs/api/retrieve-a-schema.md): Retrieve a single schema definition by its URN. - [Retrieve a User](/docs/api/retrieve-a-user.md): Retrieve a User - [Retrieve a Validation Request](/docs/api/retrieve-a-validation-request.md): Retrieve a Validation Request - [Retrieve a Validation Submission](/docs/api/retrieve-a-validation-submission.md): Retrieve a Validation Submission - [Retrieve a Webhook Subscription](/docs/api/retrieve-a-webhook-subscription.md): Retrieve a Webhook Subscription - [Retrieve an Activity Tag](/docs/api/retrieve-an-activity-tag.md): Retrieve an Activity Tag - [Retrieve an Agent Verification](/docs/api/retrieve-an-agent-verification.md): Retrieve an Agent Verification - [Retrieve an Organisation](/docs/api/retrieve-an-organisation.md): Retrieve an Organisation - [Retrieve an Organisation by country code, registry and registryId](/docs/api/retrieve-an-organisation-by-country-code-registry-and-registry-id.md): Retrieve an Organisation by country code, registry and registryId - [Retrieve an Organisation profile info](/docs/api/retrieve-an-organisation-profile-info.md): Retrieve an Organisation profile info - [Retrieve an single Eligibility Subscription](/docs/api/retrieve-an-single-eligibility-subscription.md): Retrieve an single Eligibility Subscription - [Retrieve donation session](/docs/api/retrieve-donation-session.md): Retrieve donation session - [Retrieve GiftAid id for User](/docs/api/retrieve-gift-aid-id-for-user.md): Returns the most recent gift aid id for a given user, returns 404 not found if no gift aid exists. - [Retrieve partner's configurations](/docs/api/retrieve-partners-configurations.md): Retrieve partner's configurations - [Retrieve service provider configuration](/docs/api/retrieve-service-provider-configuration.md): Discovery endpoint describing the SCIM features supported by the service - [Retrieve specific configuration](/docs/api/retrieve-specific-configuration.md): Retrieve specific configuration - [SCIM](/docs/api/scim.md): SCIM - [Create a user](/docs/api/scim-create-user.md): Provision a new user for the partner the SCIM key is bound to. - [Retrieve a user](/docs/api/scim-retrieve-user.md): Retrieve a single user by id. The user must belong to the partner the SCIM key is bound to. - [Search for Validation Submissions with specific org name](/docs/api/search-for-validation-submissions-with-specific-org-name.md): Search for Validation Submissions with specific org name - [Search Organisations](/docs/api/search-organisations.md): Search for nonprofits. The Organizations Search API provides up to 1,000 results for each search query, accessible via pagination. - [Set an Image for a Category](/docs/api/set-an-image-for-a-category.md): Set an Image for a Category - [Set User to support an Organisation](/docs/api/support-organisation.md): For Donations created through the [Create A Donation API](./create-a-donation), A User can be set to donate to a particular Organisation by default using this API. If a Donation is made with a userId, the Donation will be associated with the Organisation the User is supporting at the time of Donation. If the userId is omitted or the User has not been set to donate to an Organisation by default then the organisationId must be included in the body. - [Update a user](/docs/api/update-a-user.md): Apply a SCIM PATCH operation set to a user. - [Update donor details for donation session](/docs/api/update-donor-details-for-donation-session.md): Updates the email address, name, consent preferences, and/or gift note for any donations linked to the specified donation session. - [Users](/docs/api/users.md): Users - [Validation Invites](/docs/api/validation-invites.md): Validation Invites - [Validation Request Documents](/docs/api/validation-request-documents.md): Validation Request Documents - [Validation Request Events](/docs/api/validation-request-events.md): Validation Request Events - [Validation Requests](/docs/api/validation-requests.md): Validation Requests - [Validation Submission Configuration](/docs/api/validation-submission-configuration.md): Validation Submission Configuration - [Validation Submission Documents](/docs/api/validation-submission-documents.md): Validation Submission Documents - [Validation Submission Events](/docs/api/validation-submission-events.md): Validation Submission Events - [Validation Submissions](/docs/api/validation-submissions.md): Validation Submissions - [Volunteering](/docs/api/volunteering.md): Volunteering - [Agent verification was approved](/docs/api/webhook-agent-verification-approved.md): Triggered when an agent verification has been approved by Goodstack. - [Agent verification pending review](/docs/api/webhook-agent-verification-pending-review.md): Agent has passed email verification and is awaiting Goodstack review. - [Agent verification pending user verification](/docs/api/webhook-agent-verification-pending-user-verification.md): Agent has passed Goodstack review, and is awaiting email verification. - [Agent verification was rejected](/docs/api/webhook-agent-verification-rejected.md): Triggered when an agent verification has been rejected by Goodstack. - [Country compliance check result was stored](/docs/api/webhook-country-compliance-check-updated.md): Triggered when the result of the country compliance check is stored for an organisation in one of - [Donation cancelled](/docs/api/webhook-donation-cancelled.md): The donation process has been terminated, either by the donor or due to system issues. - [Donation record created](/docs/api/webhook-donation-created.md): A new donation record has been successfully created in the system. - [Donation disbursed](/docs/api/webhook-donation-disbursed.md): The donated funds have been transferred to the intended nonprofit. - [Payment received for hosted donation](/docs/api/webhook-donation-hosted-payment-received.md): Payment has been received from the user for a hosted donation. - [Donation payment successful](/docs/api/webhook-donation-payment-successful.md): The payment for the donation has been successfully completed and verified. - [Donation reassigned](/docs/api/webhook-donation-reassigned.md): The donation has been reassigned to another organisation, either because it has failed compliance, we are unable to pay the organisation or the organisation has been merged with another id. - [Donation settled](/docs/api/webhook-donation-settled.md): The donated funds have been received and reconciled by the partner foundation. - [Eligibility subscription was updated](/docs/api/webhook-eligibility-subscription-updated.md): Triggered when an eligibility subscription has been updated. - [Monetary donation verification progressed](/docs/api/webhook-monetary-donation-verification-progressed.md): Triggered when a monetary donation verification has progressed, such as a check succeeding, failing, the verification being approved, rejected, expired, or reopened. - [Monetary donation verification received](/docs/api/webhook-monetary-donation-verification-received.md): Triggered when a new monetary donation verification has been received and created. - [Monitoring subscription was updated](/docs/api/webhook-monitoring-subscription-updated.md): Triggered when a monitoring subscription has been updated. - [Webhook Subscriptions](/docs/api/webhook-subscriptions.md): Webhook Subscriptions - [Validation request was approved](/docs/api/webhook-validation-request-approved.md): Triggered when a validation request has been approved by Goodstack. - [Validation request was rejected](/docs/api/webhook-validation-request-rejected.md): Triggered when a validation request has been rejected by Goodstack. - [Validation submission was created](/docs/api/webhook-validation-submission-created.md): Triggered when a validation submission has been created. - [Validation submission has failed](/docs/api/webhook-validation-submission-failed.md): Triggered when a validation submission has failed validation checks. - [Validation submission has passed all checks](/docs/api/webhook-validation-submission-succeeded.md): Triggered when a validation submission has successfully passed all validation checks. - [Validation submission status has updated](/docs/api/webhook-validation-submission-updated.md): Triggered when a validation submission status has been updated. ### concepts Refer to the pages in this section for standard values, conventions and options for configuration and testing used across our product stack. - [Concepts](/docs/concepts.md): Refer to the pages in this section for standard values, conventions and options for configuration and testing used across our product stack. - [Currency reference](/docs/concepts/Donations/currencies.md): Account currency - [Localization](/docs/concepts/Donations/donation-locales.md): The following locales are supported in our donation API: - [Test cards](/docs/concepts/Donations/test-cards.md): The following card details can be used to test various different card transaction outcomes in the Hosted Donation Gateway sandbox environment. - [Test organizations](/docs/concepts/Donations/test-orgs.md): The following organisations are available for making donations in the sandbox. You can use these to test your integration. - [Countries](/docs/concepts/Platform/countries.md): The following countries are supported by our APIs and can also be retrieved via the List Countries endpoint. - [Formats](/docs/concepts/Platform/formats.md): Dates - [Webhooks](/docs/concepts/Platform/webhooks.md): Use webhooks to subscribe to updates on particular events that occur in Goodstack. Each time an event that you have subscribed to occurs, Goodstack submits a POST request to the designated webhook URL with information about the event. - [Additional fields](/docs/concepts/Verifications/additional-fields.md): This feature only applies to the hosted setup - [Applications inbox](/docs/concepts/Verifications/applications-inbox.md): Applications inbox is where you can see all the applications that came in for your product - [Agent Verification](/docs/concepts/Verifications/Checks/agent-verification.md): Agent Verification - [Compliance Checks](/docs/concepts/Verifications/Checks/compliance-checks.md): Compliance Checks - [Eligibility Review](/docs/concepts/Verifications/Checks/eligibility-review.md): Eligibility Review - [Validations Overview](/docs/concepts/Verifications/Checks/validations-overview.md): Validations Overview - [Discount redemption](/docs/concepts/Verifications/discount-redemption.md): This feature only applies to the hosted setup - [Outcome Emails](/docs/concepts/Verifications/outcome-emails.md): Outcome Emails ### guides Choose the guide that matches the workflow you want to build. Hosted guides are the fastest route to launch; API guides give you more control over the user experience. - [Solution guides](/docs/guides.md): Choose the guide that matches the workflow you want to build. Hosted guides are the fastest route to launch; API guides give you more control over the user experience. - [Nonprofit verification](/docs/guides/Cause verification.md): Use Goodstack to confirm that an organisation is a nonprofit or other approved cause, check the - [Nonprofit verification: API](/docs/guides/Cause verification/verification-api.md): Build a server-side nonprofit verification flow with Goodstack APIs. - [Nonprofit verification – hosted form implementation](/docs/guides/Cause verification/verification-hosted.md): The hosted setup for your nonprofit discount program enables you to have it set up in no time and with barely any engineering resource. - [Education Verification](/docs/guides/Education verification.md): Education Verification – Overview - [Education verification: API](/docs/guides/Education verification/edu-verification-api.md): Overview - [Monetary Donations – Overview](/docs/guides/Monetary donations.md): The Goodstack API enables you to leverage Goodstack’s global donation infrastructure in your product. You can ether fully integrate Goodstack into your product using our direct APIs or save time by using the Goodstack Hosted Donation Gateway. - [Donations API setup](/docs/guides/Monetary donations/donations-api.md): The API setup for monetary donations allows you to build a totally custom donation experience that will live in your product. If you don’t need a custom setup and are limited in engineering resource please have a look at our hosted setup. - [Donations hosted gateway setup](/docs/guides/Monetary donations/donations-hosted.md): The Goodstack Hosted Donation Gateway enables you to create a branded donation experience in your product, using only a few lines of code. ### use-cases Discover Goodstack use cases in this section. - [Use cases](/docs/use-cases.md): Discover Goodstack use cases in this section. - [Fundraising](/docs/use-cases/fundraising.md): Online charitable donations and fundraising have become increasingly popular methods for organizations to raise funds for their causes. With the rise of social media and online platforms, it has become easier than ever for individuals to donate to their favorite charities and for organizations to reach a larger audience. Online fundraising is a convenient and efficient way to support causes that you care about and make a positive impact on the world. - [Impact programs](/docs/use-cases/impact-program.md): Impact programs can support eligible good causes, through software discount and credit programs that can help them save money on the software they need for their day-to-day operations. - [Workplace giving](/docs/use-cases/workplace-giving.md): Workplace giving programs are initiatives that allow employees to donate to charitable organizations through their employer. These programs provide a convenient way for employees to support causes they care about while also encouraging a sense of community and social responsibility within the workplace. Workplace giving can take many forms, including payroll deductions, employer matching programs, and volunteer opportunities. By participating in workplace giving, employees can make a positive impact on their communities and beyond. ## Optional - [OpenAPI specification (JSON)](https://reference.poweredbypercent.com/openapi.json): Canonical OpenAPI specification for the Goodstack API