API Reference
Donations
To create a donation, use the /api/v1/donations
endpoint. In the response, you'll get a donation ID, which you can use to retrieve information about your donation. We also have endpoints that simplify making carbon offset donations.
Create a donation
post /api/v1/donations
Creates a donation to any nonprofit. Change keeps track of your donations, bills you at the end of the month, and handles the nonprofit payouts for you. For cryptocurrency donations, please check out the Crypto section.
Parameters
The amount of the donation in cents.
The id of a nonprofit from the CHANGE network.
Whether you are collecting payment for the donation. This helps us issue the correct tax receipt at the end of the year.
The number of donations to submit.
Whether the amount
parameter should include processing fees. Default is false
.
An external ID associated with the donation, e.g. an order ID, SKU, or customer ID.
Cart or order volume (in cents) associated with the donation. CHANGE provides AOV metrics if order values are provided.
A zip code to associate with the donation. CHANGE provides geography-based analytics if zip codes are provided.
Arbitrary metadata to be stored with the donation. Must be a valid JSON object.
Request
curl https://api.getchange.io/api/v1/donations \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"amount": 500,
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"funds_collected": false,
"external_id": "customer_1234",
"order_value": 2599,
"zip_code": "94104",
"metadata": {
"order-number": "90210"
}
}'
Response
{
"amount": 500,
"id": "d_HYovvhWj3Gz10vAsmbyeIU03",
"live_mode": true,
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"order_value": 2599,
"zip_code": "94104",
"external_id": "customer_1234",
"metadata": {
"order-number": "90210"
},
"currency": "USD"
}
Request
curl https://api.getchange.io/api/v1/donations \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"amount": 100,
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"funds_collected": false,
"count": 5,
"external_id": "customer_1234",
"order_value": 2599,
"zip_code": "94104"
}'
Response
{
"amount": 100,
"id": "d_wZGUBlr3WTfl7l4i8fLuXWcE",
"live_mode": true,
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"order_value": 2599,
"zip_code": "94104",
"external_id": "customer_1234",
"metadata": {},
"currency": "USD",
"count": 5,
"total_amount": 500
}
Request
curl https://api.getchange.io/api/v1/donations \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"amount": 500,
"nonprofit_id": "n_invalid",
"funds_collected": false,
"external_id": "customer_1234",
"order_value": 2599,
"zip_code": "94104"
}'
Response
{
"status": 400,
"code": "nonprofit_invalid",
"title": "The nonprofit is invalid. Please reference a nonprofit in the CHANGE network.",
"detail": "nonprofit_id n_invalid is invalid."
}
List your donations
get /api/v1/donations
Retrieves a list of donations you've previously made. The donations are returned in order of creation, with the most recent donations appearing first. This endpoint is paginated.
Parameters
Which page to return. This endpoint is paginated, and returns maximum 30 donations per page.
The id of a nonprofit from the Change network.
An external ID associated with the donation, e.g. an order ID, SKU, or customer ID. This field is set when a donation is created.
Starting timestamp of donations being retrieved. Send as a unix timestamp.
Ending timestamp of donations being retrieved. Send as a unix timestamp.
Request
curl https://api.getchange.io/api/v1/donations \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-d 'page=1' \
-G
Response
{
"donations": [
{
"amount": 1000,
"id": "d_yEUDGfW5GFHT19kmsxttbbR7",
"live_mode": true,
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"order_value": 1268,
"zip_code": "76357-2176",
"external_id": null,
"metadata": {
"key": "value"
},
"currency": "USD"
},
{
"amount": 500,
"id": "d_cNmomJNEjw4om0MJbAiMNnh4",
"live_mode": true,
"nonprofit_id": "n_nIstMceV5IXNWwMOzomgHEEV",
"order_value": 1710,
"zip_code": "47797",
"external_id": null,
"metadata": {
"key": "value"
},
"currency": "USD"
}
],
"page": 1
}
Retrieve a donation
get /api/v1/donations/{id}
Retrieves the details of a donation you've previously made.
Parameters
The id of a donation. Ids are returned when a donation is created.
Request
curl https://api.getchange.io/api/v1/donations/d_cNmomJNEjw4om0MJbAiMNnh4 \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"amount": 500,
"id": "d_cNmomJNEjw4om0MJbAiMNnh4",
"live_mode": true,
"nonprofit_id": "n_MUjmT5yhdf4smx1ykRwO2ovt",
"order_value": 4898,
"zip_code": "68073",
"external_id": null,
"metadata": {
"key": "value"
},
"currency": "USD"
}
Retrieve carbon offset stats
get /api/v1/donations/{id}/climate_stats
Measures your impact in relatable terms. Provide the id of the carbon offset to see stats about that specific donation. To see aggregated stats for all of your carbon offsets, see the /climate/stats endpoint.
Parameters
The id of a created carbon offset
Request
curl https://api.getchange.io/api/v1/donations/d_cNmomJNEjw4om0MJbAiMNnh4/climate_stats \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"amount": 10000,
"trees": 163.9,
"co2_tonnes_offset": 10
}
Nonprofits
Most U.S. nonprofits exist in the CHANGE platform. Each nonprofit has a CHANGE-issued ID; these IDs are used to reference nonprofits throughout our APIs. You can search for nonprofits manually on the dashboard, or you can seach programmatically.
Show a nonprofit
get /api/v1/nonprofits/{id}
Retrieves information for a nonprofit. Missions may be enhanced by AI. If a nonprofit does not accept crypto, the response will not include the crypto
field. For more information on cryptocurrency donations, please check out the Crypto section.
Parameters
The id of a nonprofit from the CHANGE network.
Request
curl https://api.getchange.io/api/v1/nonprofits/n_MUjmT5yhdf4smx1ykRwO2ovt \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"id": "n_MUjmT5yhdf4smx1ykRwO2ovt",
"name": "One Tree Planted Inc",
"ein": "464664562",
"pending_payout_amount": 1500,
"socials": {
"facebook": "onetreeplanted",
"instagram": "onetreeplanted",
"twitter": "onetreeplanted",
"youtube": "channel/UCSyNWLnxtob29DOoPGpT1Ug"
},
"email": "hello@onetreeplanted.org",
"crypto": {
"solana_address": "qjndmHrHAMxcd6ja1eM5hCTMrKs5VfNZEyfTjR7E3",
"ethereum_address": "0xfffb64bcea8ab8a137244376807195a6df483aec"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/public-benefit.png",
"impact_stats": [
{
"action": "plants",
"action_past_tense": "planted",
"impact": "tree",
"impact_plural": "trees",
"price": 100,
"amount": 1,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_ARkVOKLPSm"
}
],
"categories": [
"Environment and Climate"
],
"pending_payout_amounts": {
"USD": "1500.0",
"ETH": "0.04"
},
"address_line": "145 PINE HAVEN SHORES RD",
"city": "SHELBURNE",
"classification": "T22",
"mission": "Planting trees in areas that need support.",
"state": "VT",
"website": "WWW.ONETREEPLANTED.ORG",
"zip_code": "05482-7703",
"category": "public benefit",
"cover_image_url": null,
"logo_url": null
}
Request
curl https://api.getchange.io/api/v1/nonprofits/n_MUjmT5yhdf4smx1ykRwO2ovt \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"id": "n_MUjmT5yhdf4smx1ykRwO2ovt",
"name": "One Tree Planted Inc",
"ein": "464664562",
"pending_payout_amount": 0,
"socials": {
"facebook": "onetreeplanted",
"instagram": "onetreeplanted",
"twitter": "onetreeplanted",
"youtube": "channel/UCSyNWLnxtob29DOoPGpT1Ug"
},
"email": "hello@onetreeplanted.org",
"crypto": {
"solana_address": "yacaPLvosNWANaxE1wQsE5a6betZbDcY5HEhB",
"ethereum_address": "0xe2826bdeeb4e20c065a37177a0126f225cfacab0"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/public-benefit.png",
"impact_stats": [
{
"action": "plants",
"action_past_tense": "planted",
"impact": "tree",
"impact_plural": "trees",
"price": 100,
"amount": 1,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_qppQs6WqF0"
}
],
"categories": [
"Environment and Climate"
],
"pending_payout_amounts": {},
"address_line": "145 PINE HAVEN SHORES RD",
"city": "SHELBURNE",
"classification": "T22",
"mission": "Planting trees in areas that need support.",
"state": "VT",
"website": "WWW.ONETREEPLANTED.ORG",
"zip_code": "05482-7703",
"category": "public benefit",
"cover_image_url": "https://fake.cdn/no65xjs07ecknk6llacxab0zx7c1",
"logo_url": "https://fake.cdn/wjwpxnebo917t3y0ijz29rd3l0mw"
}
Request
curl https://api.getchange.io/api/v1/nonprofits/n_MUjmT5yhdf4smx1ykRwO2ovt \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"id": "n_MUjmT5yhdf4smx1ykRwO2ovt",
"name": "One Tree Planted Inc",
"ein": "464664562",
"pending_payout_amount": 0,
"socials": {
"facebook": "onetreeplanted",
"instagram": "onetreeplanted",
"twitter": "onetreeplanted",
"youtube": "channel/UCSyNWLnxtob29DOoPGpT1Ug"
},
"email": "hello@onetreeplanted.org",
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/public-benefit.png",
"impact_stats": [
{
"action": "plants",
"action_past_tense": "planted",
"impact": "tree",
"impact_plural": "trees",
"price": 100,
"amount": 1,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_FvDQAX8I2A"
}
],
"categories": [
"Environment and Climate"
],
"pending_payout_amounts": {},
"address_line": "145 PINE HAVEN SHORES RD",
"city": "SHELBURNE",
"classification": "T22",
"mission": "Planting trees in areas that need support.",
"state": "VT",
"website": "WWW.ONETREEPLANTED.ORG",
"zip_code": "05482-7703",
"category": "public benefit",
"cover_image_url": null,
"logo_url": null
}
Search a nonprofit
get /api/v1/nonprofits
Retrieves a list of nonprofits that match the search parameters. Missions may be enhanced by AI. This endpoint is paginated.
Parameters
Your account's public key.
A string to search. This can be the name of a nonprofit, or an EIN. If you do not provide this parameter, you'll get featured nonprofits.
List of categories to search. Valid categories are: 'arts and culture'
, 'education'
, 'environment'
, 'animals'
, 'healthcare'
, 'human services'
, 'international affairs'
, 'public benefit'
, 'religion'
, 'mutual benefit'
, 'unclassified'
.
The page to return. This endpoint is paginated, and returns up to 30 nonprofits by default.
A limit on the number of nonprofits to be returned. Limit can range between 1 and 200, and the default is 30.
Request
curl https://api.getchange.io/api/v1/nonprofits \
-d 'public_key=YOUR_PUBLIC_KEY&search_term=watsi&page=1&limit=10' \
-G
Response
{
"nonprofits": [
{
"id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"name": "Watsi",
"ein": "453236734",
"socials": {
"facebook": "Watsi.org",
"instagram": "watsi",
"twitter": "watsi"
},
"email": "connect@watsi.org",
"crypto": {
"solana_address": "EksZudusuaKtbKZ2AYUEDfhRfymsEgiZz5CZsvk1ed",
"ethereum_address": "0x6dc0e3118f3853b106ed1bf1e69731ef55d24e98"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/healthcare.png",
"impact_stats": [
{
"action": "sponsors",
"action_past_tense": "sponsored",
"impact": "surgery",
"impact_plural": "surgeries",
"price": 10000,
"amount": 1,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_r2YEfvDcEe"
}
],
"categories": [
"Healthcare",
"Human Services"
],
"address_line": "548 Market St # 75903",
"city": "San Francisco",
"classification": "E12",
"mission": "Directly connecting people through technology to provide global access to healthcare.",
"state": "CA",
"website": "https://watsi.org/",
"zip_code": "94104",
"category": "healthcare",
"cover_image_url": null,
"logo_url": null,
"stats": [
"$100 sponsors 1 surgery"
]
}
],
"page": 1
}
Request
curl https://api.getchange.io/api/v1/nonprofits \
-d 'public_key=YOUR_PUBLIC_KEY&limit=10' \
-G
Response
{
"nonprofits": [
{
"id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"name": "Watsi",
"ein": "453236734",
"socials": {
"facebook": "Watsi.org",
"instagram": "watsi",
"twitter": "watsi"
},
"email": "connect@watsi.org",
"crypto": {
"solana_address": "WrVdGGTvfWBkHdBu91tJ1BUS8UFu83vzHrZoRwoh",
"ethereum_address": "0x53eae19039a3b66a63c8d2301e678baa09259afb"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/healthcare.png",
"impact_stats": [
{
"action": "sponsors",
"action_past_tense": "sponsored",
"impact": "surgery",
"impact_plural": "surgeries",
"price": 10000,
"amount": 1,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_KY0UCGoPgc"
}
],
"categories": [
"Healthcare",
"Human Services"
],
"address_line": "548 Market St # 75903",
"city": "San Francisco",
"classification": "E12",
"mission": "Directly connecting people through technology to provide global access to healthcare.",
"state": "CA",
"website": "https://watsi.org/",
"zip_code": "94104",
"category": "healthcare",
"cover_image_url": null,
"logo_url": null,
"stats": [
"$100 sponsors 1 surgery"
]
}
],
"page": 1
}
Request
curl https://api.getchange.io/api/v1/nonprofits \
-d 'public_key=YOUR_PUBLIC_KEY&search_term=45-3236734&limit=10' \
-G
Response
{
"nonprofits": [
{
"id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"name": "Watsi",
"ein": "453236734",
"socials": {
"facebook": "Watsi.org",
"instagram": "watsi",
"twitter": "watsi"
},
"email": "connect@watsi.org",
"crypto": {
"solana_address": "Wk5Ubzia6HngDgA7RBommNtVKERTzKFzYVsiMxMpGyFAo",
"ethereum_address": "0xa05363a3275210432c1ff181b3921cc85df87989"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/healthcare.png",
"impact_stats": [
{
"action": "sponsors",
"action_past_tense": "sponsored",
"impact": "surgery",
"impact_plural": "surgeries",
"price": 10000,
"amount": 1,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_FsVFZeQwWL"
}
],
"categories": [
"Healthcare",
"Human Services"
],
"address_line": "548 Market St # 75903",
"city": "San Francisco",
"classification": "E12",
"mission": "Directly connecting people through technology to provide global access to healthcare.",
"state": "CA",
"website": "https://watsi.org/",
"zip_code": "94104",
"category": "healthcare",
"cover_image_url": null,
"logo_url": null,
"stats": [
"$100 sponsors 1 surgery"
]
}
],
"page": 1
}
Request
curl https://api.getchange.io/api/v1/nonprofits \
-d 'public_key=YOUR_PUBLIC_KEY&categories[]=healthcare&categories[]=arts and culture&limit=10' \
-G
Response
{
"nonprofits": [
{
"id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"name": "Watsi",
"ein": "453236734",
"socials": {
"facebook": "Watsi.org",
"instagram": "watsi",
"twitter": "watsi"
},
"email": "connect@watsi.org",
"crypto": {
"solana_address": "ZPUoyk26bAXPbnLTcbz4cAbT5q3MFT3Ysc854TXNjSb",
"ethereum_address": "0xb832eb2591216778f10201b13bdf9767d27c38e8"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/healthcare.png",
"impact_stats": [
{
"action": "sponsors",
"action_past_tense": "sponsored",
"impact": "surgery",
"impact_plural": "surgeries",
"price": 10000,
"amount": 1,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_Ul2wIHJiDH"
}
],
"categories": [
"Healthcare",
"Human Services"
],
"address_line": "548 Market St # 75903",
"city": "San Francisco",
"classification": "E12",
"mission": "Directly connecting people through technology to provide global access to healthcare.",
"state": "CA",
"website": "https://watsi.org/",
"zip_code": "94104",
"category": "healthcare",
"cover_image_url": null,
"logo_url": null,
"stats": [
"$100 sponsors 1 surgery"
]
}
],
"page": 1
}
Get social media content
get /api/v1/nonprofits/{id}/social_media_content
Retrieves social media content for the given nonprofit. CHANGE generates ready-to-post, social-media optimized images that are customized with your company name. This endpoint is not authenticated; pass your account's public key as a parameter instead. Note that this endpoint does not post anything to social media.
Parameters
The id of a nonprofit from the CHANGE network.
Your account's public key.
Request
curl https://api.getchange.io/api/v1/nonprofits/n_IfEoPCaPqVsFAUI5xl0CBUOx/social_media_content \
-d 'public_key=YOUR_PUBLIC_KEY' \
-G
Response
[
{
"theme": "pink",
"url": "https://generated-social-media-content--production.s3.us-west-1.amazonaws.com/bc470139f3db7120b2e5de99507e2418.jpg"
},
{
"theme": "white",
"url": "https://generated-social-media-content--production.s3.us-west-1.amazonaws.com/c4f1280a75c890ec697dcda0225ad33d.jpg"
},
{
"theme": "black",
"url": "https://generated-social-media-content--production.s3.us-west-1.amazonaws.com/340ed7919e61062605e5a8f9b330e57a.jpg"
}
]
Create an Instant Payout
post /api/v1/nonprofits/{id}/instant_payouts
Immediately starts a payout to a nonprofit. Normally, nonprofits are paid once per month. If you want a nonprofit to receive your donations sooner, use this endpoint. You will receive an invoice for the donation funds within 24 hours of using this endpoint.
Parameters
The id of a nonprofit from the CHANGE network.
Request
curl https://api.getchange.io/api/v1/nonprofits/n_IfEoPCaPqVsFAUI5xl0CBUOx/instant_payouts \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-X POST
Response
{
"instant_payouts": [
{
"name": "Do Good Donuts",
"account_id": "a_IAOqPBjvcjwkneUjPfvVjqyV",
"amount": 3000,
"currency": "USD",
"status": "pending"
}
]
}
List your Instant Payouts
get /api/v1/nonprofits/{id}/instant_payouts
Retrieves a list of instant payouts you've previously made that are either pending or complete for the last month. The instant payouts are returned in order of creation, with the most recent instant payouts appearing first.
Parameters
The id of a nonprofit from the CHANGE network.
Request
curl https://api.getchange.io/api/v1/nonprofits/n_IfEoPCaPqVsFAUI5xl0CBUOx/instant_payouts \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"instant_payouts": [
{
"name": "Do Good Donuts",
"account_id": "a_xxE3h1TOz3LjpzheAZAcDxPX",
"amount": 12000,
"currency": "USD",
"status": "complete"
},
{
"name": "Do Good Donuts",
"account_id": "a_xxE3h1TOz3LjpzheAZAcDxPX",
"amount": 4000,
"currency": "USD",
"status": "pending"
}
]
}
Nonprofit Requests
If a nonprofit you like isn't in our system, you can request it. We'll review your request, and if everything checks out, we'll add it to our system.
Request a nonprofit
post /api/v1/nonprofit_requests
Requests a nonprofit.
Parameters
The name of the nonprofit.
The EIN of the nonprofit.
The address of the nonprofit.
The city the nonprofit is in.
The state the nonprofit is in.
The NTEE code for the nonprofit.
The mission of the nonprofit.
The social handles of the nonprofit. Accepted keys are: facebook, instagram, tiktok, twitter, youtube.
The website of the nonprofit.
A contact email for the nonprofit.
An email address to use for the nonprofit's payouts.
The URL of an image that represents the nonprofit.
Request
curl https://api.getchange.io/api/v1/nonprofit_requests \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"name": "Do Good",
"ein": "123-45678",
"address_line": "123 Charity Ln",
"city": "San Francisco",
"state": "CA",
"classification": "N12",
"mission": "To do more good.",
"socials": {
"twitter": "dogooderz"
},
"website": "dogood.org"
}'
Response
{
"result": {
"address_line": "123 Charity Ln",
"city": "San Francisco",
"classification": "N12",
"admin_email": null,
"ein": "123-45678",
"image_url": null,
"mission": "To do more good.",
"name": "Do Good",
"payout_email": null,
"socials": {
"twitter": "dogooderz"
},
"status": "pending",
"website": "dogood.org",
"id": "nr_pVoeQkOPEndAEXlvbgiE4Oby"
}
}
List your nonprofit requests
get /api/v1/nonprofit_requests
Retrieves your nonprofit requests. Check the status
field for the current status of the request. For accepted
requests, the nonprofit_id
field will be populated with your requested nonprofit's Change ID.
Parameters
Request
curl https://api.getchange.io/api/v1/nonprofit_requests \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"result": [
{
"address_line": "123 Charity Ln",
"city": "San Francisco",
"classification": "N12",
"admin_email": "krishna@wyman-feeney.io",
"ein": "123-45678",
"image_url": null,
"mission": "To do more good.",
"name": "Do Good",
"payout_email": null,
"socials": {
"twitter": "dogooderz"
},
"status": "pending",
"website": "dogood.org",
"id": "nr_NfnZWvsSo8lap57REF1K1lDP"
}
]
}
Show a nonprofit request
get /api/v1/nonprofit_requests/{id}
Retrieves a nonprofit request. Check the status
field for the current status of the request. For accepted
requests, the nonprofit_id
field will be populated with your requested nonprofit's Change ID.
Parameters
The id of a nonprofit request.
Request
curl https://api.getchange.io/api/v1/nonprofit_requests/nr_LsgLbH14ruwQLLzb9qtWrTbo \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"result": {
"address_line": "123 Charity Ln",
"city": "San Francisco",
"classification": "N12",
"admin_email": "joshua_yost@schuster.net",
"ein": "123-45678",
"image_url": null,
"mission": "To do more good.",
"name": "Do Good",
"payout_email": null,
"socials": {
"twitter": "dogooderz"
},
"status": "pending",
"website": "dogood.org",
"id": "nr_LsgLbH14ruwQLLzb9qtWrTbo"
}
}
Request
curl https://api.getchange.io/api/v1/nonprofit_requests/nr_pt2AEQSmDiA6epe4AiUFxqPn \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"result": {
"address_line": "123 Charity Ln",
"city": "San Francisco",
"classification": "N12",
"admin_email": "mathew_wisoky@thompson.info",
"ein": "123-45678",
"image_url": null,
"mission": "To do more good.",
"name": "Do Good",
"payout_email": null,
"socials": {
"twitter": "dogooderz"
},
"status": "accepted",
"website": "dogood.org",
"id": "nr_pt2AEQSmDiA6epe4AiUFxqPn",
"nonprofit_id": "n_dogoodNYuz2muIDefYkvkP02"
}
}
Request
curl https://api.getchange.io/api/v1/nonprofit_requests/nr_DZfau9znnmqdUjVMOJRDEHX5 \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"result": {
"address_line": "123 Charity Ln",
"city": "San Francisco",
"classification": "N12",
"admin_email": "christal_schmidt@reichel.io",
"ein": "123-45678",
"image_url": null,
"mission": "To do more good.",
"name": "Do Good",
"payout_email": null,
"socials": {
"twitter": "dogooderz"
},
"status": "rejected",
"website": "dogood.org",
"id": "nr_DZfau9znnmqdUjVMOJRDEHX5"
}
}
Climate
Our Climate API helps you make donations that offset your carbon consumption, whether you're shipping physical items or executing cryptocurrency transactions. You can also get understandable stats about your contributions to the environment that are easy to share with your users.
Draft a shipping carbon offset
get /api/v1/climate/shipping_offset
If you want to calculate and donate a carbon offset in one step, skip to Create a Shipping Offset. Drafts a carbon offset for the amount needed to offset a physical shipment. The amount depends on the weight, primary transportation method, and distance of the shipment. Provide the distance of the shipment using the origin and destination address, or directly with the number of miles. This endpoint returns the id of the drafted carbon offset that remains valid for one week. You can capture a drafted carbon offset by providing the id when you create a shipping offset. See the Carbon offsets guide for more on using this endpoint.
Parameters
air|truck|rail|sea
The primary transportation method of the shipment. The default is air
.
The total weight (in pounds) of the shipment.
The destination zip code (US only) of the shipment. If you send this parameter, also send origin_address
.
The total distance (in miles) of the shipment. You can use this parameter in place of origin_address
and destination_address
.
The origin zip code (US only) of the shipment. If you send this parameter, also send destination_address
.
Request
curl https://api.getchange.io/api/v1/climate/shipping_offset \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-d 'transportation_method=air&weight_lb=15&destination_address=94133&origin_address=60148' \
-G
Response
{
"amount": 18,
"live_mode": true,
"offset_id": "offset_oUhT3IobnWE2ZgV4VjywXT1R"
}
Create a shipping carbon offset
post /api/v1/climate/shipping_offset
Makes a donation to verified carbon reduction projects to offset the carbon emissions of a physical shipment. The amount depends on the weight, primary transportation method, and distance of the shipment. Provide the distance of the shipment using the origin and destination address, or directly with the number of miles. If you already drafted a carbon offset, just pass the offset ID.
Parameters
Whether you are collecting payment for the carbon offset. This helps us issue the correct tax receipt at the end of the year.
The destination zip code (US only) of the shipment. If you send this parameter, also send origin_address
.
The total distance (in miles) of the shipment. You can use this parameter in place of origin_address
and destination_address
.
The ID for a drafted carbon offset. You can use this parameter in place of origin_address
, destination_address
, distance_mi
, transporation_method
and weight_lb
.
The origin zip code (US only) of the shipment. If you send this parameter, also send destination_address
.
A list of carbon offset objects to process a batch of carbon offsets at once.
An external ID associated with the donation, e.g. an order ID, SKU, or customer ID.
Cart or order volume (in cents) associated with the donation. CHANGE provides AOV metrics if order values are provided.
The primary transportation method of the shipment. The default is air
.
The total weight (in pounds) of the shipment.
The customer's zip code. Provide this to unlock geographic insights. This field is not used to calculate the shipping offset.
BETA: The ID for the project type you are looking to support.
Request
curl https://api.getchange.io/api/v1/climate/shipping_offset \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"funds_collected": false,
"destination_address": 94133,
"origin_address": 60148,
"external_id": "customer_1234",
"order_value": 2599,
"transportation_method": "air",
"weight_lb": 15,
"zip_code": "94104"
}'
Response
{
"amount": 18,
"id": "c_EIsswz590RXeZHykRB64U6ip",
"live_mode": true,
"nonprofit_id": "n_F6VhFP1nlN5V1Sr92CEQ3xom",
"order_value": 2599,
"zip_code": "94104",
"external_id": "customer_1234",
"metadata": {},
"currency": "USD"
}
Request
curl https://api.getchange.io/api/v1/climate/shipping_offset \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"funds_collected": false,
"distance_mi": 2111,
"external_id": "customer_1234",
"order_value": 2599,
"weight_lb": 15,
"zip_code": "94104"
}'
Response
{
"amount": 18,
"id": "c_aXtgPb6ruzdSMU22UXMuCQrE",
"live_mode": true,
"nonprofit_id": "n_F6VhFP1nlN5V1Sr92CEQ3xom",
"order_value": 2599,
"zip_code": "94104",
"external_id": "customer_1234",
"metadata": {},
"currency": "USD"
}
Request
curl https://api.getchange.io/api/v1/climate/shipping_offset \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"funds_collected": false,
"offset_id": "offset_uiQ5ID9Q9zyhEUatPwEQ5pVR",
"external_id": "customer_1234",
"order_value": 2599,
"zip_code": "94104"
}'
Response
{
"amount": 42,
"id": "c_HsX3X1bosU4erskwFCppNLzP",
"live_mode": true,
"nonprofit_id": "n_F6VhFP1nlN5V1Sr92CEQ3xom",
"order_value": 2599,
"zip_code": "94104",
"external_id": "customer_1234",
"metadata": {},
"currency": "USD"
}
Request
curl https://api.getchange.io/api/v1/climate/shipping_offset \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"funds_collected": false,
"distance_mi": 2111,
"external_id": "customer_1234",
"order_value": 2599,
"weight_lb": 15,
"zip_code": "94104",
"project_id": "p_HA7r02HkUbLqLXr7FkpYTnjl"
}'
Response
{
"amount": 18,
"id": "c_V2b0uhPeL3MXURkzyIIprh1W",
"live_mode": true,
"nonprofit_id": "n_F6VhFP1nlN5V1Sr92CEQ3xom",
"order_value": 2599,
"zip_code": "94104",
"external_id": "customer_1234",
"metadata": {},
"currency": "USD"
}
Draft a crypto carbon offset
get /api/v1/climate/crypto_offset
If you want to calculate and donate a carbon offset in one step, skip to Create a Crypto Offset. Drafts a carbon offset for the amount needed to offset a cryptocurrency transaction. This endpoint returns the id of the drafted carbon offset that remains valid for one week. You can capture a drafted carbon offset by providing the id when you create a crypto offset. See the Carbon offsets guide for more on using this endpoint.
Parameters
eth|btc|sol
The currency of the transaction.
The number of transactions to offset. Default is 1.
Request
curl https://api.getchange.io/api/v1/climate/crypto_offset \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-d 'currency=eth&count=2' \
-G
Response
{
"amount": 124,
"live_mode": true,
"offset_id": "offset_xJBRcLHjrhA4fdbCyE5MqgWg"
}
Create a crypto carbon offset
post /api/v1/climate/crypto_offset
Makes a donation to verified carbon reduction projects to offset the carbon emissions due to a cryptocurrency transaction. The amount depends on the number of transactions and currency. If you already drafted a carbon offset, just pass the offset ID.
Parameters
Whether you are collecting payment for the carbon offset. This helps us issue the correct tax receipt at the end of the year.
The number of transactions to offset.
The currency of the transaction.
The ID for a drafted carbon offset. You can use this parameter in place of currency
and count
.
The customer's zip code. Provide this to unlock geographic insights.
Cart or order volume (in cents) associated with the donation. CHANGE provides AOV metrics if order values are provided.
An external ID associated with the donation, e.g. an order ID, SKU, or customer ID.
Request
curl https://api.getchange.io/api/v1/climate/crypto_offset \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"funds_collected": false,
"count": 2,
"currency": "eth",
"zip_code": "94104",
"order_value": 2599,
"external_id": "customer_1234"
}'
Response
{
"amount": 62,
"id": "c_QS3yDyluQcYlqJQGlBk2E3bD",
"live_mode": true,
"order_value": 2599,
"zip_code": "94104",
"external_id": "customer_1234",
"metadata": {},
"currency": "USD",
"count": 2,
"total_amount": 124
}
Request
curl https://api.getchange.io/api/v1/climate/crypto_offset \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"funds_collected": false,
"offset_id": "offset_egMlCZvM7uj3OB1IputoHEbM",
"zip_code": "94104",
"order_value": 2599,
"external_id": "customer_1234"
}'
Response
{
"amount": 42,
"id": "c_jHwetmtjlhLnOhGHDhsHzQ59",
"live_mode": true,
"order_value": 2599,
"zip_code": "94104",
"external_id": "customer_1234",
"metadata": {},
"currency": "USD"
}
Retrieve carbon offset stats
get /api/v1/climate/stats
Measures your impact in relatable terms. Returns aggregate stats for all of your carbon offsets. To see stats about a specific carbon offset, see the donations/{id}/climate_stats endpoint.
Parameters
Request
curl https://api.getchange.io/api/v1/climate/stats \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"amount": 1000000,
"trees": 16393.4,
"co2_tonnes_offset": 1000
}
Reports
See the impact you've made with the Reports API. Generate reports that summarize your giving in relatable terms.
Fetch impact report
get /api/v1/reports/impact
Fetches a report detailing the aggregated impact of your donations.
Parameters
An account id to filter donations that are included in the report. Leave this blank to include all donations made by you or your managed accounts.
An external id to filter donations that are included in the report.
Starting timestamp of data to be included in the report. Send as a unix timestamp.
Ending timestamp of data to be included in the report. Send as a unix timestamp.
Request
curl https://api.getchange.io/api/v1/reports/impact \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY
Response
{
"data": [
{
"id": "n_MUjmT5yhdf4smx1ykRwO2ovt",
"name": "One Tree Planted Inc",
"ein": "464664562",
"socials": {
"facebook": "onetreeplanted",
"instagram": "onetreeplanted",
"twitter": "onetreeplanted",
"youtube": "channel/UCSyNWLnxtob29DOoPGpT1Ug"
},
"email": "hello@onetreeplanted.org",
"crypto": {
"solana_address": "ebzX58v2wBP2Lh2eBWkR8jNQixHTFjRs",
"ethereum_address": "0x74e7efbffbbc56d1ff7fa702630d08bd772841db"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/public-benefit.png",
"impact_stats": [
{
"action": "plants",
"action_past_tense": "planted",
"impact": "tree",
"impact_plural": "trees",
"price": 100,
"amount": 1,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_w0w3xqGG5b"
}
],
"categories": [
"Environment and Climate"
],
"address_line": "145 PINE HAVEN SHORES RD",
"city": "SHELBURNE",
"classification": "T22",
"mission": "Planting trees in areas that need support.",
"state": "VT",
"website": "WWW.ONETREEPLANTED.ORG",
"zip_code": "05482-7703",
"category": "public benefit",
"cover_image_url": null,
"logo_url": null,
"total_impact": [
"planted 327 trees"
]
},
{
"id": "n_nIstMceV5IXNWwMOzomgHEEV",
"name": "Aim For Mental Health Inc",
"ein": "473992060",
"socials": {
"facebook": "AIMforMentalHealth",
"instagram": "aimmentalhealth",
"twitter": "AimMentalHealth",
"youtube": "channel/AimMentalHealth"
},
"email": null,
"crypto": {
"solana_address": "umTVDNbXs46rog6p6eHphEK5XpvaLveS",
"ethereum_address": "0x6f928d43df8b2db3dd804e235a479a6b7f50e785"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/healthcare.png",
"impact_stats": [
{
"action": "sponsor",
"action_past_tense": "sponsored",
"impact": "therapy session",
"impact_plural": "therapy sessions",
"price": null,
"amount": null,
"type": "generic",
"cover_photo_url": null,
"id": "is_2EgR30Byqx"
},
{
"action": "sponsor",
"action_past_tense": "sponsored",
"impact": "book for a child",
"impact_plural": "books for children",
"price": 700,
"amount": null,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_lHpLo2DaJt"
},
{
"action": "purchases",
"action_past_tense": "purchased",
"impact": "pencil for a test taker in need",
"impact_plural": "pencils for test takers in need",
"price": 10,
"amount": null,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_1z5NnRAYsQ"
},
{
"action": "sponsor",
"action_past_tense": "sponsored",
"impact": "trips to San Francisco",
"impact_plural": "trips to San Francisco",
"price": null,
"amount": null,
"type": "generic",
"cover_photo_url": null,
"id": "is_9F2Fz6QvNl"
}
],
"categories": [
"Healthcare",
"Human Services"
],
"address_line": "PO BOX 4235",
"city": "CARMEL",
"classification": "F32",
"mission": "WE FIND AND FUND THE MOST PROMISING YOUTH MENTAL HEALTH RESEARCH IN THE WORLD SO WE CAN FIND REAL SOLUTIONS WITH IMMEDIATE IMPACTS. WE RAISE AWARENESS WITHIN OUR COMMUNITIES REGARDING THE MENTAL HEALTH CRISIS AMONG OUR YOUTH.",
"state": "CA",
"website": "WWW.AIMFORMENTALHEALTH.ORG",
"zip_code": "93921-4235",
"category": "healthcare",
"cover_image_url": null,
"logo_url": null,
"total_impact": [
"sponsored trips to San Francisco",
"purchased pencils for test takers in need",
"sponsored books for children",
"sponsored therapy sessions"
]
}
],
"filters": {
"end_timestamp": 1679692681
}
}
Request
curl https://api.getchange.io/api/v1/reports/impact \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-d 'start_timestamp=1679606281&end_timestamp=1679779081' \
-G
Response
{
"data": [
{
"id": "n_MUjmT5yhdf4smx1ykRwO2ovt",
"name": "One Tree Planted Inc",
"ein": "464664562",
"socials": {
"facebook": "onetreeplanted",
"instagram": "onetreeplanted",
"twitter": "onetreeplanted",
"youtube": "channel/UCSyNWLnxtob29DOoPGpT1Ug"
},
"email": "hello@onetreeplanted.org",
"crypto": {
"solana_address": "i18rhdH9dQhoGazRJJg533mCbvEJqgyamLCCNEtgBmk",
"ethereum_address": "0xea110e9b94cec1463152676fb6909ee751646ba1"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/public-benefit.png",
"impact_stats": [
{
"action": "plants",
"action_past_tense": "planted",
"impact": "tree",
"impact_plural": "trees",
"price": 100,
"amount": 1,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_DnJNhtfZG2"
}
],
"categories": [
"Environment and Climate"
],
"address_line": "145 PINE HAVEN SHORES RD",
"city": "SHELBURNE",
"classification": "T22",
"mission": "Planting trees in areas that need support.",
"state": "VT",
"website": "WWW.ONETREEPLANTED.ORG",
"zip_code": "05482-7703",
"category": "public benefit",
"cover_image_url": null,
"logo_url": null,
"total_impact": [
"planted 327 trees"
]
},
{
"id": "n_nIstMceV5IXNWwMOzomgHEEV",
"name": "Aim For Mental Health Inc",
"ein": "473992060",
"socials": {
"facebook": "AIMforMentalHealth",
"instagram": "aimmentalhealth",
"twitter": "AimMentalHealth",
"youtube": "channel/AimMentalHealth"
},
"email": null,
"crypto": {
"solana_address": "7gBSWhCDEAo7Rw13wUr7KHsTAF9B6oR2L22gxWGzW",
"ethereum_address": "0xddf22c485b78ee0651470cab0c9e25e17e5e883a"
},
"icon_url": "https://d2m0e1zy3fwxmp.cloudfront.net/healthcare.png",
"impact_stats": [
{
"action": "sponsor",
"action_past_tense": "sponsored",
"impact": "therapy session",
"impact_plural": "therapy sessions",
"price": null,
"amount": null,
"type": "generic",
"cover_photo_url": null,
"id": "is_i7TqQWJZfp"
},
{
"action": "sponsor",
"action_past_tense": "sponsored",
"impact": "book for a child",
"impact_plural": "books for children",
"price": 700,
"amount": null,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_TFg8jiiDMq"
},
{
"action": "purchases",
"action_past_tense": "purchased",
"impact": "pencil for a test taker in need",
"impact_plural": "pencils for test takers in need",
"price": 10,
"amount": null,
"type": "dynamic",
"cover_photo_url": null,
"id": "is_PQv1VQRqp3"
},
{
"action": "sponsor",
"action_past_tense": "sponsored",
"impact": "trips to San Francisco",
"impact_plural": "trips to San Francisco",
"price": null,
"amount": null,
"type": "generic",
"cover_photo_url": null,
"id": "is_eh4fC5s8wW"
}
],
"categories": [
"Healthcare",
"Human Services"
],
"address_line": "PO BOX 4235",
"city": "CARMEL",
"classification": "F32",
"mission": "WE FIND AND FUND THE MOST PROMISING YOUTH MENTAL HEALTH RESEARCH IN THE WORLD SO WE CAN FIND REAL SOLUTIONS WITH IMMEDIATE IMPACTS. WE RAISE AWARENESS WITHIN OUR COMMUNITIES REGARDING THE MENTAL HEALTH CRISIS AMONG OUR YOUTH.",
"state": "CA",
"website": "WWW.AIMFORMENTALHEALTH.ORG",
"zip_code": "93921-4235",
"category": "healthcare",
"cover_image_url": null,
"logo_url": null,
"total_impact": [
"sponsored trips to San Francisco",
"purchased pencils for test takers in need",
"sponsored books for children",
"sponsored therapy sessions"
]
}
],
"filters": {
"start_timestamp": 1679606281,
"end_timestamp": 1679779081
}
}
Prebuilt Pages
Our prebuilt pages allow you to easily accept donations without integrating a payment processor.
Create a checkout link
post /api/v1/payments/checkout_link
Creates a Stripe Checkout link to collect donations for a specific nonprofit. Donation processing fees are automatically deducted from the collected amount.
Parameters
The amount of the donation in cents.
The url the donor will be redirected to if they cancel checkout. Must be prefixed with https://
The id of a nonprofit from the Change network.
The url the donor will be redirected to upon a successful donation. Must be prefixed with https://
An external ID associated with the donation, e.g. an order ID, SKU, or customer ID. Will be attached to the donation created by a successful checkout.
Arbitrary metadata to be stored with the donation. Must be a valid JSON object. Will be attached to the donation created by a successful checkout.
Request
curl https://api.getchange.io/api/v1/payments/checkout_link \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"amount": 500,
"cancel_url": "https://your-domain.com/cancel",
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"success_url": "https://your-domain.com/success",
"external_id": "customer_1234"
}'
Response
{
"checkout_url": "https://checkout.stripe.com/pay/cs_123"
}
Request
curl https://api.getchange.io/api/v1/payments/checkout_link \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"cancel_url": "https://your-domain.com/cancel",
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"success_url": "https://your-domain.com/success"
}'
Response
{
"status": 400,
"code": "amount_required",
"title": "Param 'amount' can't be blank."
}
Create a crypto checkout link
post /api/v1/payments/crypto_checkout_link
BETA ACCESS ONLY. Creates a Coinbase Checkout link to collect donations for a specific nonprofit. Donation processing fees are automatically deducted from the collected amount. Accepted currencies include Bitcoin, Bitcoin Cash, Dai, Dogecoin, Ethereum, Litecoin, and USD Coin. If a nonprofit does not accept crypto, this endpoint with respond with an error. Check if a nonprofit accepts crypto using the /nonprofits/{id} endpoint.
Parameters
The amount of the donation in cents.
The id of a nonprofit from the Change network.
A set of key-value pairs that you can attach to a donation. This information will be returned in a webhook upon successful payment.
Request
curl https://api.getchange.io/api/v1/payments/crypto_checkout_link \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"amount": 500,
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"metadata": {
"id": "internal-user-id"
}
}'
Response
{
"checkout_url": "https://commerce.coinbase.com/checkout/05089094-bb58-45c9-a590-24d640b029b5"
}
Request
curl https://api.getchange.io/api/v1/payments/crypto_checkout_link \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"amount": 500,
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx",
"metadata": {
"id": "internal-user-id"
}
}'
Response
{
"status": 400,
"code": "nonprofit_does_not_accept_crypto",
"title": "Nonprofit does not accept crypto."
}
Request
curl https://api.getchange.io/api/v1/payments/crypto_checkout_link \
-u YOUR_PUBLIC_KEY:YOUR_SECRET_KEY \
-H "Content-Type: application/json" \
-d '{
"nonprofit_id": "n_IfEoPCaPqVsFAUI5xl0CBUOx"
}'
Response
{
"status": 400,
"code": "amount_required",
"title": "Param 'amount' can't be blank."
}