TagMangoTagMango Docs
Transactions

List Transactions by Creator

POST
/api/v1/external/transactions

Returns the payments and free registrations recorded against your products. Use it to reconcile revenue, refunds, tax and customer records in your own systems.

An empty body returns page 1 with 25 transactions, every status, every Mango, every currency, and no date restriction. Abandoned checkouts are never returned, under any combination of filters. Transactions are ordered by occurredAt descending — the completion time, or the creation time for transactions that never completed. Ordering among transactions sharing the same occurredAt is not guaranteed, so de-duplicate on id when walking pages. A page beyond the last returns an empty data array while total still reports every match.

The response uses the standard pagination fields: data, total, page, limit, and hasNext. Within each transaction, payment holds customer-side amounts in the customer's currency, while commission, refund, affiliate, and noCostEmi hold creator-side amounts in the top-level reportingCurrency.

Filter rules:

  • startDate and endDate are inclusive and must be supplied together, no more than 366 days apart. Omit both to search every transaction.
  • freeRegistrationsOnly narrows to zero-cost registrations, which can only be filtered further by startDate/endDate, mangoes, and paymentCycle. Nothing about payment applies to them, so upsellOnly, couponCodes, customerCurrency, status, and customerSearch are rejected rather than silently ignored.
  • A recurring paymentCycle selects your Mangoes on that cycle. Sent together with mangoes, the two intersect rather than one replacing the other.
  • Omitting couponCodes includes every transaction except those redeemed with an internally generated coupon.

Every creator-side money figure is expressed in the reportingCurrency you request, which defaults to the currency configured on your account and is echoed in the response.

This POST performs a read and is safe to retry. Malformed fields return the standard validation 400; contradictory combinations return TRANSACTION_INVALID_REQUEST.

AuthorizationBearer <token>

In: header

Header Parameters

x-whitelabel-host*string

Host name of the dashboard, ex: mydomain.tagmango.com

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://api-prod-new.tagmango.com/api/v1/external/transactions" \  -H "x-whitelabel-host: string" \  -H "Content-Type: application/json" \  -d '{}'
{
  "total": 100,
  "data": [
    {
      "id": "66f3a1c4d9f135a7b2c3d4e5",
      "occurredAt": "2026-08-24T11:02:41.517Z",
      "status": "completed",
      "quantity": 1,
      "couponCode": "SUMMER20",
      "customer": {
        "_id": "6659ca9e5f2acb7abfdcd8fd",
        "name": "John Doe",
        "email": "john.doe@example.com",
        "phone": 1234567890,
        "profilePicUrl": "https://linktoprofilepic.com/pic.jpg",
        "country": "India"
      },
      "mango": {
        "_id": "66a1390268a76f2f5c9f39a3",
        "title": "Introduction to Coding"
      },
      "linkedMangoes": [
        {
          "_id": "66a1390268a76f2f5c9f39a3",
          "title": "Introduction to Coding"
        }
      ],
      "payment": {
        "type": "onetime",
        "chargedAmount": 4999,
        "currency": "INR",
        "discountAmount": 0,
        "gstAmount": 762.56,
        "subtotalBeforeDiscount": 4236.44
      },
      "commission": {
        "totalAmountIncludingGst": 499.9,
        "reportedGstAmount": 89.98
      },
      "refund": {
        "amount": 0,
        "amountByCurrency": {
          "inrAmount": 4999,
          "usdAmount": 60,
          "eurAmount": 55
        },
        "status": "completed",
        "isPartial": false,
        "retrievalReferenceNumber": "203945873421",
        "initiatedAt": "2026-08-14T09:02:11.000Z"
      },
      "invoices": {
        "customer": {
          "url": "https://invoices.tagmango.com/10482.pdf",
          "number": 10482
        },
        "commission": {
          "url": "https://invoices.tagmango.com/10482.pdf",
          "number": 10482
        }
      },
      "affiliate": {
        "commissionAmount": 250,
        "withdrawalStatus": "pending",
        "withdrawalDate": "2026-09-01T00:00:00.000Z"
      },
      "noCostEmi": {
        "absorbedInterestAmount": 180,
        "absorbedInterestByCurrency": {
          "inrAmount": 4999,
          "usdAmount": 60,
          "eurAmount": 55
        }
      },
      "priceBreakdown": [
        {
          "mangoId": "66c8f2a4b7d913e5f0a1b2d4",
          "mango": {
            "_id": "66a1390268a76f2f5c9f39a3",
            "title": "Introduction to Coding"
          },
          "inrAmount": 4999,
          "usdAmount": 60,
          "eurAmount": 55
        }
      ],
      "upsells": [
        {
          "mangoId": "66c8f2a4b7d913e5f0a1b2d4",
          "mango": {
            "_id": "66a1390268a76f2f5c9f39a3",
            "title": "Introduction to Coding"
          },
          "inrAmount": 4999,
          "usdAmount": 60,
          "eurAmount": 55
        }
      ],
      "customFields": {
        "Company name": "Acme Pvt Ltd",
        "Team size": "25"
      }
    }
  ],
  "page": 1,
  "limit": 10,
  "hasNext": true,
  "reportingCurrency": "INR"
}
{
  "code": 400,
  "type": "Bad Request",
  "statusMessage": "BAD_REQUEST",
  "errorCode": "TRANSACTION_INVALID_REQUEST",
  "message": "Check the request body for a contradictory filter combination: supply startDate and endDate together with startDate no later than endDate and a span within the allowed window, and combine freeRegistrationsOnly only with startDate/endDate, mangoIds, and paymentCycle.",
  "result": "Check the request body for a contradictory filter combination: supply startDate and endDate together with startDate no later than endDate and a span within the allowed window, and combine freeRegistrationsOnly only with startDate/endDate, mangoIds, and paymentCycle.",
  "success": false
}
{
  "code": 401,
  "type": "Unauthorized",
  "statusMessage": "UNAUTHORIZED",
  "message": "Invalid token",
  "result": "Invalid token",
  "success": false
}
{
  "code": 403,
  "type": "Forbidden",
  "statusMessage": "FORBIDDEN",
  "errorCode": "WORKSHOP_MANGO_FORBIDDEN",
  "message": "You can not access this api with a TagMango account, only available for whitelabel hosts",
  "result": "You can not access this api with a TagMango account, only available for whitelabel hosts",
  "success": false
}
{
  "code": 404,
  "type": "Not Found",
  "statusMessage": "NOT_FOUND",
  "errorCode": "TRANSACTION_HOST_NOT_FOUND",
  "message": "We could not resolve a creator for the authenticated host.",
  "result": "We could not resolve a creator for the authenticated host.",
  "success": false
}
{
  "code": 429,
  "type": "Too Many Requests",
  "statusMessage": "TOO_MANY_REQUESTS",
  "message": "Request limit exceeded. try after 10 seconds",
  "result": "Request limit exceeded. try after 10 seconds",
  "success": false
}
{
  "code": 500,
  "type": "UnknownError",
  "statusMessage": "INTERNAL_SERVER_ERROR",
  "errorCode": "TRANSACTION_LIST_FAILED",
  "message": "We could not load the transactions. Please try again later.",
  "result": "We could not load the transactions. Please try again later.",
  "success": false
}