# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
This site has an agentic ask interface you may use to query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.changeup.com/app/index.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

---

# Platform Overview

ChangeUp’s Donation Management System (DMS) is a robust suite of donation tools used by merchants, platforms, and banks, all accessible via app.changeup.com or the ChangeUp APIs.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FhGkuRg5XwJcNzbTKozLe%2FGeneric%20Checkout%20Simpler.png?alt=media&amp;token=e8f9620e-4392-46c8-9414-c1b983645377" alt=""><figcaption><p>Sample ChangeUp donation components in a checkout flow. The font and color styles are fully customizable.</p></figcaption></figure>

ChangeUp DMS is a streamlined solution that empowers customers or payers to add a donation to their payment with a single click. It is built in compliance with SOC 2 Type II, PCI-SAQ A, US Data Privacy Policy, and GDPR standards.

DMS is fully configurable by its users (brand partners, store owners, service providers, etc.), and since the architecture is an API-first approach, much of the functionality is available via the ChangeUp APIs, which assist partners in building applications using ChangeUp as the backbone.

**Whiteglove API Partner Accounts** accommodate *Child* accounts at the widget level to meet a variety of organizational structures. For instance, using the API, a *Partner* can enable complete control of the donation settings to a *Franchise* and the *Franchisees* for their donation management and reporting. The donation widgets have `widgetName`, `id`, and `metadata` settings. For reporting purposes, donation transactions relate to a widget ID. Whiteglove API Partners use these identifiers to organize the donation widgets within the partner's application environment. This method gives our partners independent control over their systems' structure and allows for flexible integration.

### Explore our guides and examples to integrate ChangeUp.

The system offers the following functionalities:

* [**Widgets**](/app/changeup-dms/widget-setup/create-a-widget)**:** Customizable front-end modules that capture donations. Multiple donate-at-checkout widgets can be created depending on what the system or giving campaign requires.
* [**Widget Settings**](/app/changeup-dms/widget-setup/configure-donate-at-checkout)**:** Each widget has its attributes, design, and functionality. Settings manage the configuration and provide embeddable code snippets. Users can select which charities are presented to customers/payers at checkout, how the donation amount is calculated (RoundUp, percentage of payment, or fixed amount), whether the merchants/brands match the donation, and much more.
* [**Integration**](/app/changeup-dms/widget-setup/install-widget)**:** The code and instructions required to integrate ChangeUp widgets into your application and report donation transactions to ChangeUp.
* [**Analytics**](/app/changeup-dms/reporting)**:** Widget-specific dashboards provide reports on donation data.
* [**Authentication and Account Management**](/app/account-settings/edit-company)**:** Manage users/multi-factor authentication, organization profile, and view activity logs.

<br>


# Setup a ChangeUp DMS account

ChangeUp DMS provides an admin dashboard that allows users to manage their donation components, reports, and team. The system is accessed by invitation only and is initially configured by a ChangeUp Administrator and then shared with the partner organization.&#x20;

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FY0gFDxehKZ6zMoJq2qf3%2F0.1%20Login.png?alt=media&amp;token=c38cbf64-372e-4e38-b479-e0b9d91106cb" alt=""><figcaption><p>Login to ChangeUp Commerce</p></figcaption></figure>

Once the partner has access, they can add their team users, create donation widgets, and view reports.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FOkIGqgtrrOcMTGrwBOKV%2F6.1%20AccountSettingsUsers.png?alt=media&amp;token=f44e280e-f7fa-4de6-b43a-4c47091ea557" alt=""><figcaption><p>User management in ChangeUp Commerce</p></figcaption></figure>

Once you've been notified with your account creation details, open a web browser, and visit <https://app.changeup.com> to Login.

<br>


# Implementation Overview

Implementing ChangeUp is straightforward. Follow this outline to be on the right track. Breaking down the project into three phases: **Planning**, **Integration**, and **Test & QA** historically work well.

## Checklist

### Planning

The planning phase is critical to get all stakeholders on the same page, set expectations, and uncover any risks as early as possible:

* [ ] **Define Teams** - With enterprise partners, this typically involves CSR, Product, UX/UI, Engineering, Accounting, and Legal.
* [ ] **Scoping Questions** - Decide on topics that ChangeUp will provide before integration starts.
* [ ] **Project Timeline** - Refine the project timeline based on discovery during scoping questions.

### Integration

This is where the hands-on work really starts. As long as planning has been completed, integration will go smoothly.

* [ ] Finalize UX/UI Design
* [ ] Plan for Downstream System&#x20;
* [ ] [Technical Implementation](#technical-implementation)

### Test & QA

ChangeUp widget(s) have been tested in the partner sandbox environment, and the flow of donations in internal partner systems is configured.

* [ ] Switch to [Live Environment](/app/changeup-dms/widget-setup/test-and-live-environments)
* [ ] Confirm Data Transfer from [Post Transaction](/app/changeup-dms/widget-setup/implement-the-post-checkout-webhook)
* [ ] QA and Launch 🚀

## Technical Implementation

Following the framework above, the steps to going live in your application are:

1. [Create a widget](/app/changeup-dms/widget-setup/create-a-widget)
2. [Configure the widget](/app/changeup-dms/widget-setup/configure-donate-at-checkout) with charities, donation type, and other settings
3. Copy [Installation](/app/changeup-dms/widget-setup/install-widget) code
4. Copy into your app
5. Test & QA
6. Go live


# Widget Setup

A widget is a small block of code (approx. 12k) generated by the DMS that enables embedding the donation functionality in your application.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2F8HpKfU37jGEy3jZD332q%2Fimage.png?alt=media&amp;token=a7ecb334-a48f-48c5-9200-d19c4c7bae62" alt="" width="350"><figcaption><p>Example donate-at-checkout widget featuring two charities and the supersize option active.</p></figcaption></figure>

There are four steps to create and install a donate-at-checkout widget:

{% content-ref url="/pages/RSBsAiwSyrhyBqjsX6Yx" %}
[Create a widget](/app/changeup-dms/widget-setup/create-a-widget)
{% endcontent-ref %}

{% content-ref url="/pages/4kWC8DIXff6zdBsiNmPh" %}
[Configure Donate-at-Checkout](/app/changeup-dms/widget-setup/configure-donate-at-checkout)
{% endcontent-ref %}

{% content-ref url="/pages/tHokMG4M06IrsKXFyteD" %}
[Install widget](/app/changeup-dms/widget-setup/install-widget)
{% endcontent-ref %}

{% content-ref url="/pages/9M7RBJYpLwDfahHoxbVf" %}
[Implement the post-checkout webhook](/app/changeup-dms/widget-setup/implement-the-post-checkout-webhook)
{% endcontent-ref %}


# Create a widget

{% hint style="info" %}
[Widget creation API Docs](https://documenter.getpostman.com/view/25013896/2sBXinGACm)
{% endhint %}

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FDjfguKuEz8REYCPn0ezM%2F2.0%20Components.png?alt=media&amp;token=6df1629d-08db-4303-9561-43e7192f5a2f" alt=""><figcaption><p>Component management dashboard</p></figcaption></figure>

### Determine Live or Test

Learn about the [different environments](broken://pages/ds48bIV74fY4NP5IdnRO) to decide where the widget should be created.

### Create New Widget

Clicking Create New Widget opens a modal where you name the new widget.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FznNHe9lfH6NbyhS7KPgZ%2FCreateNewDAC.png?alt=media&amp;token=f8bfad8b-c378-4994-a74d-ac939eab3389" alt="" width="375"><figcaption></figcaption></figure>

In the modal, add a recognizable name. This could be the name of a website where it will live or be tied to a specific giving campaign like Black History Month or Giving Tuesday. Something that will be clear to the rest of your team.

### Edit Widget

Once the widget is saved, Edit by clicking on the row or in the Actions column on the Donation Widget list.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FeMF6kgENVZNf6f5nhma2%2Fimage.png?alt=media&amp;token=38038d37-c7ff-4dd3-8e65-793849206142" alt=""><figcaption><p>Donate-at-Checkout Widget in the list.</p></figcaption></figure>

### Configure Widget

Now that widget has been created, all the controls for editing and configuring will be available. Jump to [Configure Donate-at-Checkout](/app/changeup-dms/widget-setup/configure-donate-at-checkout) for details.


# Configure Donate-at-Checkout

{% hint style="info" %}
[Widget configuration API docs](https://documenter.getpostman.com/view/25013896/2s93eeSA1U#c860eb4a-a2a4-4be9-9569-d67a094d87de)
{% endhint %}

With the widget created, the settings sections are broken down into:

* [Choose the charity or charities to support](#01-charities)
* [Manage the donation format and who is giving](#02-manage-donation)
* [Supersize options](#03-supersize)

## **01 Charities**

Search for charities, and choose up to three to display in the widget.

Search by name or EIN to find the organization you're looking for. In some cases, there will be multiple entries for the same charity (this is usually because there are different locations of the same organization) so be sure to know the city/town or country, as those will be revealed in the autocomplete menu.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fcp1n7BeBhpgGpWSRKfe1%2Fcharity-search.png?alt=media&amp;token=9222970c-6aab-4951-b766-ae2bfef779c2" alt="" width="563"><figcaption><p>Charity search autocomplete menu</p></figcaption></figure>

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FLKQIPG3LWJDRbcjwhM5g%2F3.0.0%20dac%20Beneficiary-02.png?alt=media&amp;token=d301a947-5a63-40ca-a5aa-f33bc26c66ad" alt=""><figcaption><p>Charity search with component preview on right.</p></figcaption></figure>

### **Activate Charity Descriptions**

Inform payers about the causes being supported by exposing short charity descriptions that pop up in a modal when the charity logos are clicked upon.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fkor0pAYAJWw69X0Wb60V%2FAdditional%20Settings.png?alt=media&amp;token=0095c9b5-d458-45ca-84ea-27c446561034" alt="" width="563"><figcaption></figcaption></figure>

## **02 Manage Donation**

Who makes the donation (merchant or customer, or merchant matching customer), donation format (RoundUp, percentage, or fixed amount), text settings, and display settings.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FUee7Tns7Ri6LtOe4t4no%2F3.1.1%20dac%20Customer%20RoundUp.png?alt=media&amp;token=c2e484f8-34cd-4f7c-b85d-c6218edcfd70" alt=""><figcaption><p>Manage the donation configuration.</p></figcaption></figure>

### Who Makes the Donation?

Define who will be funding the donation presented in the widget:

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FcJc5Z1EIDEQqrQfqXcqU%2F01%20Who%20Makes%20The%20Donation_.png?alt=media&amp;token=4acb9d95-918d-4b91-a795-0613d3da087f" alt=""><figcaption><p>Selection controls for who is making the donation.</p></figcaption></figure>

**Customer**: The customer donates, either RoundUp, Fixed Amount, or Percent. The amount is auto-calculated based on the shopping cart total and displayed in the widget.

**Customer + Merchant Matching**: If the customer elects to donate, then the Merchant matches the donation.

**Merchant**: The donation is made by the Merchant. An example of this may be "1% of sales" for a specific campaign or time of year (Pride, Black History Month, Breast Cancer, Women's Empowerment, etc.).

### What's the Donation Format?&#x20;

Define what type of donation is going to be presented in the widget:

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FNrbHDRWM86uKzFEZ0igW%2F02%20What%20is%20The%20Donation%20Format_.png?alt=media&amp;token=b6524753-48ef-4496-8faf-2b82d37dc82c" alt=""><figcaption><p>Selection controls for what the donation format is.</p></figcaption></figure>

**RoundUp**: Amount is calculated based on the cart's total, after shipping and taxes.

**Fixed Amount**: A predefined amount to charge as a donation. $1.00, $0.50, $3.00, etc.

**Percentage of Sale**: Calculates the percentage before shipping and taxes. Focused on the percentage of purchased products, for instance: 1%, 0.5%, 3%, etc.

### Display Settings

Options that affect the layout and whether charity logos are displayed. ChangeUp recommends displaying charity logos for a more engaging user experience.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FpUtrf08uYAPJnwYTQnWJ%2F03-Display-Settings.png?alt=media&amp;token=5c4df485-a6da-4e54-9aff-2d0a976bc3f4" alt=""><figcaption></figcaption></figure>

**Show charity logos at checkout**: Enable or hide charity logos in the widget.

**Opt-in checkbox placement**: There are two options for this setting. With heading, or with description:

<div><figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FmCODhkZizVB9CsDKxtAw%2Fopt-in-withDescription.png?alt=media&amp;token=bf183738-3aaa-4891-93c8-387085b10bc7" alt=""><figcaption><p>Opt-in with Description</p></figcaption></figure> <figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fdbs68nWokiDZuneg8MmF%2Fopt-in-withHeading.png?alt=media&amp;token=28a515db-003f-4635-b60b-f0fc40bfae41" alt=""><figcaption><p>Opt-in with Heading</p></figcaption></figure></div>

### Text Settings

Customize the text in the widget being created. The Donation/Format settings above have default text that suits the context. Edit the text at any time to publish to your widget. The Reset button reverts the text to the system defaults.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fha3hTB3l7puRrZDBBpyc%2F04-Widget-CustomizeText.png?alt=media&amp;token=9f332e43-922c-4ec7-8e38-836d695407f9" alt=""><figcaption><p>The blue item is a dynamic element that shows a calculated value.</p></figcaption></figure>

## **03 Supersize**

Configure an optional amount to add to a donation, for instance, either $1, $5, or $10.

**Supersize**: On or Off. Hides or shows the Supersize option in the widget

**Select Amount Options**: Choose amounts to be presented in the widget

**Customize Text**: Optional; edit the Supersize headline in a way that matches the brand; "Would you like to increase your donation?", "Add to your donation?"

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FggPe7NtOz1oA8662dLyw%2F3.2.1%20dac%20SupersizeOn.png?alt=media&amp;token=72db480d-b15d-4ad4-98ed-58f35624d521" alt=""><figcaption><p>Supersize feature activated in the preview window.</p></figcaption></figure>


# Install widget

## JavaScript Embeddable Widget

Once a widget is configured and saved, it is ready to be installed. The Integrate tab in the component Settings will provide the client-side JavaScript required to place the resulting embed code within the existing page layout.

The CSS is exposed within the Integrate section of the component for demonstration purposes. This should be integrated into the existing CSS structure within the destination application and can be modified to match the native styles of your platform or website.

Multiple donation widgets can be configured to handle different checkout flows (for example if one brand has multiple websites and wants to feature different charities on each), or A/B testing.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FVQ0TejVyk6bIbRSO8uCH%2F3.4%20dac%20Integrate-Integration.png?alt=media&amp;token=d901d6fa-ea9e-4864-8238-7944233853a1" alt=""><figcaption><p>Integration page showing embed code and widget preview.</p></figcaption></figure>

## Event listeners

In order to capture component actions, such as donation opt-in, opt-out, charity selected, etc., event listeners need to be set up. These event listeners will interact with your platform to add/remove/update the appropriate line items for the donation details.

For example, the cart subtotal needs to be sent to ChangeUp for RoundUp calculation to take place. Basic implementation code:

```html
<script async src="https://widget.changeup.com/changeup-donate-checkout.js"></script>

<script>

// listen for widget actions here
document.addEventListener('changeup-donate-checkout', function(event) {
  
  console.log('widgetState', event?.detail)  

  /* Widget state
  {
    "donateOpt": true, // whether they are opt-in or opt-out of the donation
    "causeId": "a051d439-8f97-471b-ab50-09...", // the id of the cause/charity that is selected
    "supersized": false, // whether supersized has been selected or not
    "userDonationAmount": .42, // what the user donation amount calculates to
    "partnerDonationAmount": 0 // what the partner donation calculates to
  }
  */

});

</script>

<!-- widget embedded here -->
<div
    data-island="changeup-donate-checkout"
    data-subtotal="$10.58"
    data-widget="2909be56-a106-42d5-9dd2-02a...."
    data-client="Client ID Here">
</div>
```


# Implement the post-checkout webhook

The post-checkout webhook is required to record the completion of the donation. The webhook will have a set of required and optional fields to capture relevant details for the donation. The donation webhook URL is unique to each widget in ChangeUp DMS. This webhook URL is meant to be called from a server, not the client (as the URL should be considered a secret).

{% hint style="info" %}
[View the API docs for more details on the post-donation webhook](https://documenter.getpostman.com/view/25013896/2s93eeSA1U#b66dfc71-c4dd-4281-bf90-40771f040014)
{% endhint %}

### Webhook Donation Recording and Reporting

Upon receiving the webhook, ChangeUp processes the incoming data to record the donation using a queuing system. Once processed, the donation details are recorded and stored for real-time reporting purposes. A “record” date can be adjusted in the widget settings for the donation widget to actualize the donation in the database. The reconciliation date allows for special policies such as refunds. Reports will identify donations as “pre-record” and “post-record” dates and can be used for reconciliation.

Reports can be filtered by donation widget and time range. Reports of all donation transactions can be downloaded for reconciliation purposes.

<br>


# Test and Live Environments

The DMS has two environments where donation widgets are created and managed: Test and Live. Set the toggle to the required environment when creating widgets for integration testing or building production-ready widgets.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2F3a8ikCz4niwgT2NE5Pet%2FLive-TestSwitch.png?alt=media&amp;token=7a429c1f-51ef-48e4-bcf4-8990d008d6da" alt=""><figcaption><p>Environment switch in different settings.</p></figcaption></figure>

### Sandbox Development

Widgets created under the Test Mode will only report data to Test reports and cannot, under any circumstances, be used on a production website. They will not work, and no donations will be collected.

### Production Applications

Switch to Live once ready to deploy production widgets that will record donations and charities and collect the data for [analytics](/app/changeup-dms/reporting).


# Deactivating a widget

1.To deactivate a widget first go to the widget menu and select the widget you want to deactivate:

![](https://cdn.filestackcontent.com/hQ4EkabLTSyZut7ky1lq)

2.Go to the right-hand menu, click the down arrow next to “Integrate”, and select deactivate Widget.&#x20;

<img src="https://cdn.filestackcontent.com/xHgQfiBS2KZBpESOO62g" alt="" width="188">

3.Once the widget is deactivated the status in the widget screen will change to red.

<img src="https://cdn.filestackcontent.com/G9RfDJRRR76RlcRuSwgq" alt="" width="188">


# Promoting a widget

If you have a widget that was created in “Test Mode” and you will like that Widget to be copied to the “Live Mode” with the same settings and configuration, follow these steps:&#x20;

1.Turn the “Test Mode” toggle on .

<img src="https://cdn.filestackcontent.com/5T5SBLQRygyS7AaNTvA4" alt="" width="188">

2.Select the widget you want to promote.

![](https://cdn.filestackcontent.com/4fX2RZeuR1SmpKtMaU9r)

3.Go to the right-hand menu, click the down arrow next to “Integrate”, and select “Copy to live”

<img src="https://cdn.filestackcontent.com/IQR37GITrGV7bzcTsYa7" alt="" width="375">

4\. When you switch back to "Live Mode" you will see the promoted widget in the widget list.&#x20;


# Checkout Preview

If you want to preview your widget on a test checkout page follow these steps.&#x20;

1.Select the widget you want to see the checkout preview.

![](https://cdn.filestackcontent.com/HoFQXwoNRymk0jKakbup)

2.Go to the right-hand menu, click the down arrow next to “Integrate”, and select “Checkout Preview”

<img src="https://cdn.filestackcontent.com/tPeBuwUdRemO0cqiKXM9" alt="" width="188">

3.Select and API Key

<img src="https://cdn.filestackcontent.com/x7qkaGjHQs2HjmLWH52t" alt="" width="375">

4.You can change the number of items in your cart. Everytime you refresh the page the items will randomly change .

![](https://cdn.filestackcontent.com/870CnB8QpGLGOUTlruYy)


# Reporting

Once transactions are reported to ChangeUp they are viewable in the Reports section

### Sample Reports

<div><figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fs6937aOt9rPzN02KH52Z%2FsampleReport.png?alt=media&amp;token=21e19f1f-ebb0-4596-80e7-0f9189c54d63" alt="Sample changeup donations report" width="450"><figcaption><p>Sample donation activity report</p></figcaption></figure> <figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FNxsTRLjkguNZchzlylzg%2FsampleTransactionReport.png?alt=media&amp;token=7fb5a6db-b9b8-4d49-80bc-1f06a546eb1a" alt=""><figcaption><p>Sample transaction level report</p></figcaption></figure></div>


# Viewing Reports

Go to the Reports tab from the main navigation at the top of the page.

The report shows a variety of findings. Filtering by date will refresh the page and refine the complete dashboard.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FaljpD2UEByhsKUyg9bdR%2Freports-date-picker.png?alt=media&amp;token=33216188-c849-4c8d-8e3e-1450132e494d" alt=""><figcaption><p>Date filter for the Reporting dashboard.</p></figcaption></figure>


# Download Data

There are two options for downloading report data, either at the chart level or a filtered transaction list.

### Chart Download

A menu icon is shown at the top right of the charts on the Reports page. Open the menu and select Download (when available). This will generate a CSV of just the chart's data as a downloaded file.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FWv3wkWziWBiN1xsfH3GK%2Fdownload-chart-data.png?alt=media&amp;token=3f1830bc-819c-40dc-813d-76468c1131c8" alt=""><figcaption><p>Chart menu allowing a Pivot or Download of the data being displayed.</p></figcaption></figure>

### Transaction List

From the Reports page, View All Transactions.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FO0NsA61Kct5UpQVXH307%2FView-All-transactions.png?alt=media&amp;token=5247a3ea-6498-4db1-90af-0f6451d5edf9" alt=""><figcaption><p>View All Transactions button.</p></figcaption></figure>

On the Reports > Transactions page, there is a Download button to the right of the date filters.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FurQWsV8LNdvvQB6oglUj%2Freport-transactions-list.png?alt=media&amp;token=e951f040-fbd5-43fd-93a7-f9c84971cfe4" alt=""><figcaption><p>Download menu with CSV option showing.</p></figcaption></figure>

Download as CSV to generate a copy of the filtered results shown in the table.


# Embed Reports

The following is example code for generating an embeddable URL for a report. Your account manager can assist with the dashboard, necessary filters, and the reporting API key. Custom reporting dashboards can be tailored to client specifications.

```javascript
const {createHmac} = require("crypto");

const key = 'Your ChangeUp Reporting Secret API Key';

// the dashboard you want to embed
const dashboard = 'dsh_01GRS8C4BVZ8X9N7E86Z82DQG9'

// compose the data object with filters and dashboard
const data = encodeURIComponent(
  JSON.stringify({
    dashboard,
    filters: {
      "Date Range": "last_month",
      "Aggregation": "day",
      "ClientId": "YourClientId",
      // more filters can be added based on dashboard design
    }
  })
);

// create the encrypted signature
const signature = createHmac("sha256", key).update(data).digest("hex");

// compose the embed url
const embedUrl = `https://reporting.changeup.com/embed/dashboard/${dashboard}?data=${data}&signature=${signature}`
java
```

### Sample Reports

<div><figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fs6937aOt9rPzN02KH52Z%2FsampleReport.png?alt=media&amp;token=21e19f1f-ebb0-4596-80e7-0f9189c54d63" alt="Sample changeup donations report" width="450"><figcaption><p>Sample donation activity report</p></figcaption></figure> <figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FNxsTRLjkguNZchzlylzg%2FsampleTransactionReport.png?alt=media&amp;token=7fb5a6db-b9b8-4d49-80bc-1f06a546eb1a" alt=""><figcaption><p>Sample transaction level report</p></figcaption></figure></div>


# Using Report Filters

1.Go to the main page and select reports.&#x20;

<img src="https://cdn.filestackcontent.com/ZHbSCGSDSvuU5FGA3Gqg" alt="" width="188">

2.You can select from the custom predefined date ranges or input a custom range.

<img src="https://cdn.filestackcontent.com/Jtg9w27SZSELDc4nO5zW" alt="" width="188">

3.You can also add extra filter by clicking “Add filter” you can filter by:&#x20;

* Cause
* Widget
* Donor (merchant or customer donation)

<img src="https://cdn.filestackcontent.com/EpJGEeeUTcqbXLvw99XA" alt="" width="188">

4.Once you have selected the filters the dashboard will refresh automatically.

![](https://cdn.filestackcontent.com/yjjlltdVSXZrRe65Q81D)


# Canceling a Transaction

There are three states that a transaction reported to ChangeUp can possibly have:

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FljvLpBsI99AxcSVsX2F1%2Ftransaction-status-icons.png?alt=media&amp;token=20001181-9815-4584-9f74-2a3e92588e48" alt="" width="375"><figcaption></figcaption></figure>

1. **Pending**: When a transaction has been reported but is delayed (according to the [post-checkout webhook](/app/changeup-dms/widget-setup/implement-the-post-checkout-webhook)), awaiting completion.
2. **Complete**: A transaction has passed the delay duration or has no delay and is finalized in the system. The transaction cannot be canceled and will be included in the monthly donation remittance.
3. **Canceled**: The transaction has been canceled before completion and is no longer included in the monthly donation total.

## How to cancel a transaction

### Navigate to Reports > View All Transactions

The View Transactions button is on the main Reports page in the top right side of the page.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2F90va7Hiy5HbDdDCQ7LmA%2Fcancel-transaction-step-0.png?alt=media&amp;token=e03b0b93-070b-4ad3-a308-8e2c09e4c581" alt=""><figcaption></figcaption></figure>

### Filter results

There may be hundreds or thousands of results. Filter by date to find the transaction in question.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FlvPYKwc4XeEzQ00zCjJ8%2Fcancel-transaction-step-1.png?alt=media&amp;token=a0f68dbd-e960-4a5e-9ea5-36f49c4fa486" alt=""><figcaption></figcaption></figure>

### Choose Transaction

Once the transaction has been found, open the item's menu.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FW1XiZTU4BJsUAtqqzsW4%2Fcancel-transaction-step-2.png?alt=media&amp;token=8f530816-255b-4fad-9109-d523ad75f47b" alt=""><figcaption></figcaption></figure>

### Cancel Transaction

Choose Cancel Transaction from the item menu.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2F0VwtSIIGLdMjaSl7I22a%2Fcancel-transaction-step-3.png?alt=media&amp;token=b07b4941-3708-411d-a7fa-d5a82a4922c2" alt=""><figcaption></figcaption></figure>

### Confirm Cancelation

Confirm this action; it cannot be undone once this transaction has been canceled.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FRx5ClNwTubqgLLvpcmyS%2Fcancel-transaction-step-4.png?alt=media&amp;token=542aeda7-143f-44ca-a2e8-91643bd3c0e2" alt=""><figcaption><p>Transaction cancelation confirmation.</p></figcaption></figure>

### See canceled transaction

Once the modal closes, the transaction will have a new status icon showing indicating the cancelation, this will ensure that it is not included in any donation remittance.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2F3RGPCWmumKJpsVUM6ZTN%2Fcancel-transaction-step-5.png?alt=media&amp;token=26ec9f83-7f60-43f6-b82b-587c7fa68010" alt=""><figcaption><p>A transaction that has been canceled.</p></figcaption></figure>


# View transactions details

To see the transaction details follow these steps:

1\. In the report home screen click on "View All Transactions"

<img src="https://cdn.filestackcontent.com/5WlLvnL1TkqJrwctbeJZ" alt="" width="188">

2\. The transaction will be displayed, you can filter by date range.

<img src="https://cdn.filestackcontent.com/SyALG8wvTfCiO55XGwDH" alt="" width="188">

3\. If. you want to download all the transaction in a CSV file click on "Download".

<img src="https://cdn.filestackcontent.com/gPlMVVJSJS8WieWu8S58" alt="" width="188">

4\. If you want to see a specific transaction detail click on the three dots and click "View Details"

<img src="https://cdn.filestackcontent.com/GU8ivNroQ12VHgtflZG9" alt="" width="188">

5\. The details will be displayed.

<img src="https://cdn.filestackcontent.com/J1YbUqARAWtN8ql3pKz4" alt="" width="375">


# Donation Invoicing

ChangeUp provides a monthly donation report. Upon approval of this report, remit the aggregate amount of donations to ChangeUp, who will manage the distribution of funds to the end charities.

ChangeUp also supports automated invoicing to partners and merchants.


# Edit Company

### Profile Menu > Account Settings > Company

Personalize the DMS account by adding company information and a logo.

Upload a logo image that is 150x150 and either a PNG, JPG or GIF.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2F2Qc1ackrKhhicWEeDXQ3%2F6.0%20AccountSettingsCompany.png?alt=media&amp;token=98d1e9e1-05e6-442e-9d4e-8ccaa45167ef" alt=""><figcaption><p>Company information page</p></figcaption></figure>


# Manage Users

### Profile Menu > Account Settings > Users

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fgem7IstGBfinNbdzBJDd%2F6.1%20AccountSettingsUsers.png?alt=media&amp;token=edec1903-0c84-4576-8a34-902926065d4d" alt=""><figcaption><p>User list</p></figcaption></figure>

From the User page, you may [Invite New Users](/app/account-settings/manage-users/invite-users).

From the ellipsis action menu on each row, if you have the correct permissions (as a User), you can:

* Reset Two-factor Authentication - Confirm you want to reset this user’s MFA settings. This will require them to reset their MFA the next time they log in.
* Resend a User Invitation - Resend the invitation for this user.
* Delete a User - Confirm you want to delete the user. This action cannot be undone.


# Invite Users

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2F0tVNzsz1DQy457gMGwyE%2Finvite-new-user.png?alt=media&amp;token=924a8727-af28-4c37-9cfb-8aecf320f0ad" alt=""><figcaption><p>Invite New User button</p></figcaption></figure>

Invite New User opens the Invitation modal:

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FmdpGRYrgsn3eRE3qA6DE%2FInviteUser.png?alt=media&amp;token=194bdda5-01b0-4be1-804d-136af3750c13" alt="" width="375"><figcaption><p>Invite New User modal window</p></figcaption></figure>

Enter the new user's Full Name, Email Address, and choose permissions:

| Permission | Access                                                                                                                                                      |
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| User       | Full access to the DMS account. Ability to create and manage widgets, add users, edit company info, and view reports.                                       |
| View Only  | Limited access to the DMS. This user is intended to be only a viewer for reports. They have no editing capabilities and cannot create new widgets or users. |

The Send Invitation button saves the information and transmits the invitation email to the new user. The invitation email will walk the new user through the steps required to set up their account, including [Two-factor Authentication](/app/account-settings/manage-users/two-factor-authentication).


# Two-factor Authentication

When you either set up Two-factor Authentication (2fa) for the first time or if it has been reset the following screen appears upon login.

Open a mobile device and using an authentication app (Google Auth, Duo, Authy, etc.) scan the code to add ChangeUp DMS to your auth app.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2F2oOsJ8BplmRYfXGT46uU%2Freset-2fa-step-0.png?alt=media&amp;token=f6b92959-e09f-4fbc-9941-d319fbf57c41" alt="" width="563"><figcaption><p>Scan QR code with authentication app</p></figcaption></figure>

Enter the six-digit code to Verify your account. Once the code verifies you will be automatically logged in to the DMS.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FQVPQWGZuTa7BCFqiwUZq%2Freset-2fa-step-1.png?alt=media&amp;token=cc5c6432-8726-4578-a11c-7a71c9d49545" alt="" width="563"><figcaption><p>Verify 2fa to login</p></figcaption></figure>


# Reset MFA

To reset the MFA (Multiple Factor Authentication) for a user follow these steps.

1.Go to the top right menu and click the green round  icon next to support:&#x20;

<img src="https://cdn.filestackcontent.com/dcjHSz9TPeIzPKeE2heA" alt="" width="188">

2.Select “Users” from the Menu

<img src="https://cdn.filestackcontent.com/lP4LbmA3RTyYxvojZYep" alt="" width="188">

3.Click the 3-doted menu of the user you want to reset the MFA.

<img src="https://cdn.filestackcontent.com/T4SoBkOxQAu3WH4ei8zA" alt="" width="188">

4\. Click “Confirm MFA Reset”&#x20;

<img src="https://cdn.filestackcontent.com/5bQ3hFvXQ46Du2Vpwf85" alt="" width="375">


# Forgot Password

If you forget your password, just click Forgot your password? On the login screen.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FcVGb51JBDBxVdz8vLhJ4%2Fstep-0.png?alt=media&amp;token=bb8a743c-1219-4faa-945e-8c6dc7a9645c" alt="" width="563"><figcaption><p>Forgot your password?</p></figcaption></figure>

A new page will open where you enter your email address so the system can send a password reset notification.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FgcN4dI4zzAbWSPtw0evs%2Fforgotpass-step-1.png?alt=media&amp;token=4dafcebf-a647-444a-bee5-5b157a9203aa" alt="" width="563"><figcaption><p>Reset Password</p></figcaption></figure>

If the email is in the ChangeUp system and attached to an account you will receive an email with a Create New Password link.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FgzztGf31fj4pmDZGDeYM%2Fforgotpass-step-3.png?alt=media&amp;token=450715a9-1291-4897-8c7b-d937c0a07559" alt="" width="563"><figcaption><p>Create New Password</p></figcaption></figure>

Opening the link brings you to the Change your Password screen. Enter a new password following the security requirements:

* Minimum 16 characters
* At least one uppercase and lowercase character
* At least one numeric character
* At least one special character (!, @, #, $, etc.)

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FbWRcVvOdNG71ah0wK4QR%2Fforgotpass-step-4.png?alt=media&amp;token=096067fa-fcfe-48db-aa8a-ecdb973454cb" alt="" width="563"><figcaption><p>Change your Password</p></figcaption></figure>

Once the new password meets the requirements all the hint text will turn green. Change Password.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FjYEQ9NjCw94OknWGMqqs%2Fforgotpass-step-5.png?alt=media&amp;token=ea521672-3a28-4485-a1f2-599d96142d3f" alt="" width="563"><figcaption><p>Change your Password complete</p></figcaption></figure>

Now you can Login to your account using the new credentials.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FlI5LpiI4ZEBIRDC0yiMX%2Fforgotpass-step-6.png?alt=media&amp;token=1bce6e2e-8c3f-43a7-b04b-344c418e3188" alt="" width="563"><figcaption></figcaption></figure>


# Invite users to my account

To invite new users to your account follow these steps:

1\. Go to the top right menu and click the green round  icon next to support:&#x20;

<img src="https://cdn.filestackcontent.com/dcjHSz9TPeIzPKeE2heA" alt="" width="188">

2\. Select “Users” from the Menu

<img src="https://cdn.filestackcontent.com/lP4LbmA3RTyYxvojZYep" alt="" width="188">

4\. Click “Invite New User”

<img src="https://cdn.filestackcontent.com/fkVQHQnQtGklxGVh2mFv" alt="" width="375">

5\. Complete the information requested and click “Send Invitation”

<img src="https://cdn.filestackcontent.com/yoihuDNTRLa8dLVUU1cu" alt="" width="375">


# Resending a user invitation

Invitation to the DMS expires 24 hours after being sent. If you need to resend an invitation here are the steps.&#x20;

1.Go to the top right menu and click the green round  icon next to support:&#x20;

<img src="https://cdn.filestackcontent.com/dcjHSz9TPeIzPKeE2heA" alt="" width="188">

2.Select “Users” from the Menu

<img src="https://cdn.filestackcontent.com/lP4LbmA3RTyYxvojZYep" alt="" width="188">

3.Click the 3-doted menu of the user you want to resend the invitation.

<img src="https://cdn.filestackcontent.com/T4SoBkOxQAu3WH4ei8zA" alt="" width="188">

4.Click “Resend Invitation”&#x20;

<img src="https://cdn.filestackcontent.com/5cc3Qx3bQTGmAPD75fSO" alt="" width="375">


# Deleting a user

If you want to delete a user, follow these steps:

1.Go to the top right menu and click the green round  icon next to support:&#x20;

![](https://cdn.filestackcontent.com/dcjHSz9TPeIzPKeE2heA)

2.Select “Users” from the Menu

<img src="https://cdn.filestackcontent.com/lP4LbmA3RTyYxvojZYep" alt="" width="375">

3.Click the 3-doted menu of the user you want to delete and click "Delete User"

<img src="https://cdn.filestackcontent.com/T4SoBkOxQAu3WH4ei8zA" alt="" width="188">

4.Click “Yes! Delete User” to confirm .

<img src="https://cdn.filestackcontent.com/iqJHlW76ShizonzkuthA" alt="" width="375">


# View Activity Logs

### Profile Menu > Account Settings > Logs

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fu2bn47mTfkfOLyv1n6iA%2Fsettings-profile-menu.png?alt=media&amp;token=ac0ff6c4-6452-4bb8-9bcc-215ed9321811" alt="" width="302"><figcaption><p>Choose Logs on the Account Settings menu</p></figcaption></figure>

The Activity Log explains what happened, by whom, and when. For audit purposes, the logs can continually be reviewed to monitor changes to widgets, users and the overall Partner account.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FjakaBhu8sTzSreiq2APq%2FLogs.png?alt=media&amp;token=d364264e-9ff2-4589-afe0-221eea3e93bc" alt=""><figcaption><p>The Logs main view showing activity filtered by date.</p></figcaption></figure>

Clicking on any line item opens the log detail panel.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FqKuJGXM06inbx7NY1B6F%2FLog-detail.png?alt=media&amp;token=1b0b36d0-a712-4422-8eee-9967efd80b17" alt=""><figcaption><p>Log detail panel expanded.</p></figcaption></figure>


# API Key

### Profile Menu > Account Settings > API Key

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fu2bn47mTfkfOLyv1n6iA%2Fsettings-profile-menu.png?alt=media&amp;token=ac0ff6c4-6452-4bb8-9bcc-215ed9321811" alt="" width="302"><figcaption><p>Go to API Key in Account Settings</p></figcaption></figure>

### Confirm Environment

Before creating a new API Key, ensure the desired environment is selected in the header.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2F3a8ikCz4niwgT2NE5Pet%2FLive-TestSwitch.png?alt=media&amp;token=7a429c1f-51ef-48e4-bcf4-8990d008d6da" alt=""><figcaption><p>Live/Test environment switch in header.</p></figcaption></figure>

### Create New API Key

Create New API Key to open the API modal.

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FWQljxAr9d5JN2tIkUw7Z%2FAPI-Key-step-0.png?alt=media&amp;token=92a15680-b976-4243-9c75-5349d09e65a1" alt=""><figcaption><p>API Keys list</p></figcaption></figure>

### Name the New API Key

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2Fv7ZI2dj5CCuLXQa5pTpI%2FAPI-Key-step-1.png?alt=media&amp;token=0d01f1f2-d663-4e59-915e-e4e2634c075f" alt="" width="563"><figcaption><p>Create New API Key modal.</p></figcaption></figure>

### Create API Key

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FMHjROOVUGHPh1Qu5en2z%2FAPI-Key-step-2.png?alt=media&amp;token=49dc9e22-d587-4f54-9175-3226a2d49d7a" alt="" width="563"><figcaption></figcaption></figure>

### Copy Secret Key

{% hint style="info" %}
Once the Secret Key is revealed, the only opportunity to copy it is now. ChangeUp will not save the Secret Key and it cannot be retrieved. Copy and store in a secure location. The Client ID will always be available on the API Keys page.
{% endhint %}

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FnYJ8hckmr6yBhz8KMRRp%2FAPI-Key-step-3.png?alt=media&amp;token=e64e670b-e769-4692-97d4-a29fe511c7da" alt="" width="563"><figcaption><p>Copy the Secret Key.</p></figcaption></figure>

The new API Key is now ready for use:

<figure><img src="https://814680633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcH5SMrrvcoTMfHpSL60L%2Fuploads%2FPjyWgQ4BZ28ILjwqiLPW%2FAPI-Key-step-4.png?alt=media&amp;token=9df22f55-8976-4d87-b6fe-43e2a8daa986" alt=""><figcaption><p>New API Key present in API Keys list.</p></figcaption></figure>


# Billing Information

1.Go to the top right menu and click the green round  icon next to support to display the “Account Settings”

<img src="https://cdn.filestackcontent.com/ftcdOKFTwuKMn0IIZ0Bo" alt="" width="188">

2.Select “Billing” from the Menu

<img src="https://cdn.filestackcontent.com/Q3DMVNIRBmuvJplOpOtt" alt="" width="188">

3.Click “View Billing Portal” to see any amounts due of invoice history.

<img src="https://cdn.filestackcontent.com/Z8CRymoTkmTyNG3kjQ5g" alt="" width="188">


# Create API Keys

To create your API keys follow these steps

1.Go to the top right menu and click the green round  icon next to support to display the “Account Settings”

<img src="https://cdn.filestackcontent.com/iCxHwzsWSBuTba3zFos0" alt="" width="188">

2.Select “API Key” from the Account Settings menu

<img src="https://cdn.filestackcontent.com/E5A3XLIVScynPK8ti1zi" alt="" width="188">

3.Click “Create New API Key”

<img src="https://cdn.filestackcontent.com/ZzvrZGRFQJurocO5xB9b" alt="" width="375">

\* **Important**: remember that if the environment toggle is in “Test Mode” you will be creating API Keys for your staging environment and in Live mode for production.

4.Add a name to the API Key and click “Create API Key”

<img src="https://cdn.filestackcontent.com/6Fg65IkQI85GVl4csZEQ" alt="" width="188">

5.The API key will be displayed.

<img src="https://cdn.filestackcontent.com/tTP7Kp7TSo2FTdkLH5Xj" alt="" width="375">

**Important**: Secret keys are not saved, be sure to copy and save your key in a secure place.


# APIs

ChangeUp has different APIs for different purposes. They are structured in the following categories: Components, Donations, and Reporting.

### Components API

{% hint style="info" %}
[Enable creating and maintaining donation widgets (Donate-at-Checkout as an example). Search for charities to use in donation widgets.](https://documenter.getpostman.com/view/25013896/2sBXinGACm)
{% endhint %}

### Donations API

{% hint style="info" %}
[Create donations, fetch donation data, and cancel donations.](https://documenter.getpostman.com/view/25013896/2sBXinGACm)
{% endhint %}


# ChangeUp DMS

## Fetch and filter donations

> List all donation(s) associated with a partner account in a paginated list.

```json
{"openapi":"3.1.0","info":{"title":"ChangeUp DMS","version":"1.0.0"},"servers":[{"url":"https://donations.api.changeup.com"}],"paths":{"/v1/donations":{"get":{"summary":"Fetch and filter donations","parameters":[{"name":"limit","in":"query","description":"Limit of records to return","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Which page to return. This endpoint is paginated.","schema":{"type":"integer"}},{"name":"charityId","in":"query","description":"(Optional) - Filter by charity Id","schema":{"type":"string"}},{"name":"transactionId","in":"query","description":"(Optional) - Your transaction id used to create the donation(s)","schema":{"type":"string"}},{"name":"startDate","in":"query","description":"(Optional) - Filter donations with a start date MM/DD/YYY","schema":{"type":"string"}},{"name":"endDate","in":"query","description":"(Optional) - Filter donations with a end date","schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"(Optional) - sort asc or desc","schema":{"type":"string"}},{"name":"sortBy","in":"query","description":"(Optional) - sort by any field","schema":{"type":"string"}},{"name":"x-api-key","in":"header","required":false,"description":"(Required) ","deprecated":false,"schema":{}},{"name":"x-client-id","in":"header","required":false,"description":"(Required) ","deprecated":false,"schema":{}}],"responses":{"200":{"description":"Sucess","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"partnerId":{"type":"string"},"daf":{"type":"string"},"dafAccountType":{"type":"string"},"amount":{"type":"integer"},"causeId":{"type":"string"},"charityId":{"type":"string"},"transactionId":{"type":"string"},"currency":{"type":"string"},"country":{"type":"string"},"jobId":{"type":"null"},"invoiceId":{"type":"null"},"receipt":{"type":"null"},"environment":{"type":"string"},"type":{"type":"string"},"transactionOrderDate":{"type":"string","format":"date-time"},"reason":{"type":"null"},"source":{"type":"string"},"widgetId":{"type":"string"},"delayReportBy":{"type":"integer"},"status":{"type":"string"},"invoiced":{"type":"boolean"},"generateReceipt":{"type":"boolean"},"invoicedAt":{"type":"null"},"reportTransactionAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"benevityDonationCreatedAt":{"type":"string","format":"date-time"},"benevityResponse":{"type":"array","items":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"attributes":{"type":"object","properties":{"funds":{"type":"object","properties":{"amount":{"type":"integer"},"source":{"type":"string"},"paymentType":{"type":"string"},"currencyCode":{"type":"string"}}},"state":{"type":"object","properties":{"processingStatus":{"type":"string"},"statusLastUpdated":{"type":"string","format":"date-time"}}},"destination":{"type":"object","properties":{"recipientId":{"type":"string"}}}}}}}}}}}}},"meta":{"type":"object","properties":{"total":{"type":"integer"},"lastPage":{"type":"integer"},"currentPage":{"type":"integer"},"perPage":{"type":"integer"},"prev":{"type":"null"},"next":{"type":"integer"}}}}}}}}},"description":"List all donation(s) associated with a partner account in a paginated list."}}}}
```

## Create donation

> Send a single or batch of donations.\
> \
> Creates a single donation or batch donations. Batch donations accepts a limit of 15 per request. to any nonprofit.\
> \
> \> \*\*Note:\*\* To schedule a future to be posted at a future date, set the delayReportBy field (e.g., a value of 5 will delay the report for 5 days). This allows you to cancel a donation before it is finalized. Please note that once a donation is posted after the delay period, it cannot be cancelled. The maximum allowable delay is 90 days.

```json
{"openapi":"3.1.0","info":{"title":"ChangeUp DMS","version":"1.0.0"},"servers":[{"url":"https://donations.api.changeup.com"}],"paths":{"/v1/donations":{"post":{"summary":"Create donation","parameters":[{"name":"x-api-key","in":"header","required":false,"description":"(Required) - API Key Secret","deprecated":false,"schema":{}},{"name":"x-client-id","in":"header","required":false,"description":"(Required) - Client Secret","deprecated":false,"schema":{}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"statusCode":{"type":"integer"},"success":{"type":"boolean"},"id":{"type":"string"},"sourceId":{"type":"string"},"status":{"type":"string"},"transactionId":{"type":"string"}}}}}}},"403":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"description":"Send a single or batch of donations.\n\nCreates a single donation or batch donations. Batch donations accepts a limit of 15 per request. to any nonprofit.\n\n> **Note:** To schedule a future to be posted at a future date, set the delayReportBy field (e.g., a value of 5 will delay the report for 5 days). This allows you to cancel a donation before it is finalized. Please note that once a donation is posted after the delay period, it cannot be cancelled. The maximum allowable delay is 90 days.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"required":{"type":"array","items":{"type":"string"}},"properties":{"type":"object","properties":{"donations":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"items":{"type":"object","properties":{"type":{"type":"string"},"required":{"type":"array","items":{"type":"string"}},"properties":{"type":"object","properties":{"amount":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"}}},"delayReportBy":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"}}},"causeId":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"}}},"transactionId":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"}}},"currencyCode":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"}}},"metadata":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"}}}}}}}}}}}}}}}}}}}}
```

## Fetch donation by id

> Use to fetch the status and details of a single donation by Id

```json
{"openapi":"3.1.0","info":{"title":"ChangeUp DMS","version":"1.0.0"},"servers":[{"url":"https://donations.api.changeup.com"}],"paths":{"/v1/donations/{id}":{"get":{"summary":"Fetch donation by id","parameters":[{"name":"x-api-key","in":"header","description":"(Required) ","schema":{"type":"string"}},{"name":"x-client-id","in":"header","description":"(Required) ","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"partnerId":{"type":"string"},"daf":{"type":"string"},"dafAccountType":{"type":"string"},"amount":{"type":"integer"},"causeId":{"type":"string"},"charityId":{"type":"string"},"transactionId":{"type":"string"},"currency":{"type":"string"},"country":{"type":"string","format":"color"},"jobId":{"type":"string"},"invoiceId":{"type":"null"},"receipt":{"type":"null"},"environment":{"type":"string"},"type":{"type":"string"},"transactionOrderDate":{"type":"string","format":"date-time"},"reason":{"type":"string"},"source":{"type":"string"},"widgetId":{"type":"string"},"delayReportBy":{"type":"integer"},"status":{"type":"string"},"invoiced":{"type":"boolean"},"generateReceipt":{"type":"boolean"},"invoicedAt":{"type":"null"},"reportTransactionAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"benevityDonationCreatedAt":{"type":"null"},"benevityResponse":{"type":"array"},"widget":{"type":"object","properties":{"id":{"type":"string"},"widgetName":{"type":"string"}}},"charity":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"string"}}}}}}}}},"description":"Use to fetch the status and details of a single donation by Id"}}}}
```

## Cancel a donation

> Cancel a donation that has not been posted to a DAF. When a donation is posted, it goes from:\
> \
> \*\*PENDING\*\* -> \*\*COMPLETED\*\*\
> \
> Donation(s) marked as \*\*COMPLETED\*\* cannot be canceled.\
> \
> Once a donation is canceled, the status will be marked as \*\*CANCELED.\*\*\
> \
> \| \*\*Field\*\* | \*\*Type\*\* | \*\*Description\*\* |\
> \| --- | --- | --- |\
> \| reason | String | \`Optional\`  \<br>Reason for canceling the donation |

```json
{"openapi":"3.1.0","info":{"title":"ChangeUp DMS","version":"1.0.0"},"servers":[{"url":"https://donations.api.changeup.com"}],"paths":{"/v1/donations/{id}/cancel":{"patch":{"summary":"Cancel a donation","parameters":[{"name":"x-api-key","in":"header","description":"(Required) ","schema":{"type":"string"}},{"name":"x-client-id","in":"header","description":"(Required) ","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"description":"Cancel a donation that has not been posted to a DAF. When a donation is posted, it goes from:\n\n**PENDING** -> **COMPLETED**\n\nDonation(s) marked as **COMPLETED** cannot be canceled.\n\nOnce a donation is canceled, the status will be marked as **CANCELED.**\n\n| **Field** | **Type** | **Description** |\n| --- | --- | --- |\n| reason | String | `Optional`  <br>Reason for canceling the donation |","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string"}}}}}}}}}}
```


# Security Practices

### Compliance

ChangeUp is fully compliant with SOC 2 Type II, PCI-SAQ A, US Data Privacy Policy, and GDPR.

### Data Security & Governance

ChangeUp encrypts data at rest and in transit for all of our customers. We use tools like Amazon Web Service’s Key Management System (KMS) to manage encryption keys using hardware security modules for maximum security in line with industry best practices.&#x20;

ChangeUp employs data security governance principles by focusing on sensitive data protection and privacy, conducting, deleting unnecessary data, and consolidating data silos, whether they are on-premises or in the cloud, to ensure project alignment with business objectives.

### Application Security

ChangeUp regularly engages some of the industry’s best application security experts for third-party penetration tests. Our penetration testers evaluate the source code, running application, and the deployed environment.

ChangeUp also uses high-quality static analysis tooling provided by GitHub Advanced Security such as CodeQL, Secrets Scanner, and Dependabot to secure our product at every step of the development process.

### Infrastructure Security

ChangeUp uses Amazon Web Services to host our application. We make full use of the security products embedded within the AWS ecosystem, including KMS, GuardDuty, and Inspector.

In addition, we deploy our application using containers run on AWS-managed services, meaning we typically do not manage servers or EC2 instances in production.

\ <br>


