Cancel Impact

The Cancel Impact API enables you to cancel and reverse a previously created environmental impact. This is designed for refund flows where an impact needs to be undone. Cancelling an impact removes it from your /impact totals and the /track endpoint will reflect the cancellation with a cancelled_on timestamp and optional cancellation_reason.

You are not charged for cancelled impacts — any usage billing is automatically reversed. The original impact record is preserved for audit purposes. This endpoint is idempotent — calling it multiple times for the same impact will return the same result without double-reversing aggregates.


POST/v1/cancel_impact

Cancel an impact

This endpoint allows you to cancel a specific impact using the user_id and time_utc from the original impact record. You can optionally provide a reason for the cancellation.

Required request body attributes

  • Name
    user_id
    Type
    string
    Description

    The user ID associated with the impact to cancel. This should be in the format "U1234". You can obtain this from the /records or /customer_records API responses.

  • Name
    time_utc
    Type
    string
    Description

    The UTC timestamp when the impact was originally made. You can obtain this from the /records or /customer_records API responses. Must be in ISO 8601 format "YYYY-MM-DDTHH:mm:ss.sssZ".

Optional request body attributes

  • Name
    reason
    Type
    string
    Description

    A reason for the cancellation (e.g., "order refunded", "duplicate transaction"). Maximum 200 characters.

Response fields

  • Name
    user_id
    Type
    string
    Description

    The user ID associated with the cancelled impact.

  • Name
    time_utc
    Type
    string
    Description

    The UTC timestamp of the original impact.

  • Name
    cancelled_on
    Type
    string
    Description

    The time (in UTC) when the impact was cancelled.

  • Name
    reason
    Type
    string
    Description

    The reason provided for the cancellation. Only present if a reason was provided.

  • Name
    tree_planted
    Type
    integer
    Description

    The number of trees that were reversed. Only present for tree planting impacts.

  • Name
    waste_removed
    Type
    integer
    Description

    The amount of ocean waste (in lbs) that was reversed. Only present for ocean cleanup impacts.

  • Name
    carbon_captured
    Type
    integer
    Description

    The amount of carbon (in lbs) that was reversed. Only present for carbon capture impacts.

  • Name
    money_donated
    Type
    integer
    Description

    The amount of money (in smallest USD units) that was reversed. Only present for donation impacts.

  • Name
    category
    Type
    string
    Description

    The category of the cancelled impact, if one was set. Only present when applicable.

  • Name
    message
    Type
    string
    Description

    A status message: "impact cancelled successfully" for new cancellations, or "impact was already cancelled" for repeat calls.

Request

POST
/v1/cancel_impact
curl --location 'https://api.1clickimpact.com/v1/cancel_impact' \
--header 'Content-Type: application/json' \
--header 'x-api-key: {PRODUCTION API KEY}' \
--data '{
    "user_id": "U1234",
    "time_utc": "2025-03-12T15:22:14.753Z",
    "reason": "order refunded"
}'

Response

{
  "user_id": "U1234",
  "time_utc": "2025-03-12T15:22:14.753Z",
  "cancelled_on": "2025-04-30T10:15:32.000Z",
  "reason": "order refunded",
  "tree_planted": 10,
  "category": "food",
  "message": "impact cancelled successfully"
}

Response (Already Cancelled)

{
  "user_id": "U1234",
  "time_utc": "2025-03-12T15:22:14.753Z",
  "cancelled_on": "2025-04-30T10:15:32.000Z",
  "reason": "order refunded",
  "tree_planted": 10,
  "category": "food",
  "message": "impact was already cancelled"
}