Payments API Reference

Query payment transactions, deposits, installment logs, and refund status for payments managed by Hermon.

List Payments

Retrieve a paginated list of payments. Results can be filtered by status, lead, contract, and assigned setter, closer, or triager.

GET/api/external/payments

Query Parameters

ParameterTypeRequiredDescription
pageintegerOptionalPage number for pagination. Default: 1
limitintegerOptionalNumber of items per page. Default: 10, Max: 100
statusstringOptionalFilter by payment status (e.g. PAID, DRAFT, PENDING, REFUNDED, LOST, FAILED).
setterstringOptionalFilter by assigned setter email.
closerstringOptionalFilter by assigned closer email.
triagestringOptionalFilter by assigned triager email.
lead_idstring (UUID)OptionalFilter by associated lead UUID.
contract_idstring (UUID)OptionalFilter by associated contract UUID.

Code Examples

curl -X GET "https://api.hermon.io/api/external/payments?page=1&limit=10&status=REFUNDED&setter=sales-setter@mailinator.com&closer=hermon@mailinator.com&triage=triager@mailinator.com&lead_id=e799c30f-9da7-4fd7-9552-83b96a9bfac2&contract_id=d5e0fb5d-5b14-45cf-81d8-2a0eb7a49224" \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_live_your_key_here"

Response Example

json
{
  "status": "success",
  "message": "Payments fetched successfully",
  "data": [
    {
      "id": "0174f917-e7c2-4a27-9aca-2626724c04d5",
      "lead": {
        "id": "308589ca-1e21-4173-96ad-63fff112c864",
        "first_name": "New",
        "last_name": "Lead",
        "email": "new.lead+1@mailinator.com"
      },
      "program": {
        "name": "Large Transactions"
      },
      "amount": 100,
      "payment_date": "2026-03-07T04:30:00.000Z",
      "status": "PAID",
      "provider": "MANUAL",
      "type": "FIRST_PAYMENT",
      "note": "",
      "currency": "eur",
      "created_at": "2026-03-06T12:53:54.181Z",
      "closer": {
        "id": "user_39mYQippFnDajQq1Tgev2QJ2M4o",
        "first_name": "hermon",
        "last_name": "2",
        "profile_image_url": "https://img.clerk.com/eyJ0eXBlIjoiZGVmYXVsdCIsImlpZCI6Imluc18zN0lDNG9PRFg5cEdnYzdHOEdZa3ZObXJXRloiLCJyaWQiOiJ1c2VyXzM5bVlRaXBwRm5EYWpRcTFUZ2V2MlFKMk00byIsImluaXRpYWxzIjoiSDIifQ"
      },
      "setter": null,
      "triager": null
    }
  ],
  "totals": {
    "amount": 0,
    "currency": null,
    "by_currency": [
      {
        "currency": "EUR",
        "amount": 273739.67
      },
      {
        "currency": "USD",
        "amount": 226187.36
      }
    ]
  },
  "totals_page": {
    "amount": 0,
    "currency": null,
    "by_currency": [
      {
        "currency": "EUR",
        "amount": 4897
      },
      {
        "currency": "USD",
        "amount": 1099.9
      }
    ]
  },
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 351,
    "totalPages": 36,
    "hasNext": true,
    "hasPrev": false
  }
}

Get Payment Details

Fetch detailed information for a single payment transaction by its unique UUID.

GET/api/external/payments/:id

Path Parameters

:idRequired. The unique payment UUID.

Payment Object Fields

FieldTypeDescription
idstring (UUID)Unique identifier for the payment record.
leadobjectAssociated lead summary details (id, first_name, last_name, email, and optionally sales_status).
programobjectAssociated program summary details (name).
amountnumberTransaction amount.
payment_datestring | nullISO 8601 timestamp of payment date [List API Only].
due_datestring | nullISO 8601 timestamp of payment due date [Details API Only].
statusstringState of transaction (e.g. PAID, DRAFT, PENDING, REFUNDED).
providerstringGateway/origin provider name (e.g. MANUAL, STRIPE, WHOP, MOLLIE) [List API Only].
payment_providerstringGateway/origin provider name (e.g. MANUAL, STRIPE, WHOP, MOLLIE) [Details API Only].
typestringBilling type identifier (e.g. FIRST_PAYMENT, INSTALMENT, DEPOSIT).
notestring | nullInternal notes associated with the payment.
currencystringISO 4217 currency code (e.g. usd, eur).
created_atstringISO 8601 timestamp of payment creation.
closerobject | nullCloser profile details (id, first_name, last_name, profile_image_url) [List API Only].
setterobject | nullSetter profile details [List API Only].
triagerobject | nullTriager profile details [List API Only].
contractobjectLinked contract information (id, status, program: { name }) [Details API Only].
paid_atstring | nullISO 8601 timestamp when successful transaction settled [Details API Only].
failure_reasonstring | nullReason for transaction failure if applicable [Details API Only].
is_mandate_paymentbooleanWhether payment was triggered automatically [Details API Only].
refundsarrayArray of refunds associated with the payment [Details API Only].
payment_linksarrayShared secure payment gateway sessions [Details API Only].
payment_proofsarrayUploaded receipt and billing file summaries (id, file_name, mime_type, file_size_bytes, uploaded_by, created_at, url) [Details API Only].
unmatched_paymentobject | nullReference payload if payment is unlinked [Details API Only].

Code Examples

curl -X GET "https://api.hermon.io/api/external/payments/0174f917-e7c2-4a27-9aca-2626724c04d5" \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_live_your_key_here"

Response Example

json
{
  "status": "success",
  "message": "Payment fetched successfully",
  "data": {
    "id": "0174f917-e7c2-4a27-9aca-2626724c04d5",
    "lead": {
      "id": "308589ca-1e21-4173-96ad-63fff112c864",
      "first_name": "New",
      "last_name": "Lead",
      "email": "new.lead+1@mailinator.com",
      "sales_status": {
        "id": "4974210a-0c10-4f9a-897b-dd2527b1c374",
        "name": "Rescheduled",
        "text_color": "#0095B9",
        "bg_color": "#ECFEFF"
      }
    },
    "contract": {
      "id": "f82d8745-6c0c-47c7-9e16-075b51a45c80",
      "status": "SENT",
      "program": {
        "name": "Large Transactions"
      }
    },
    "amount": 100,
    "currency": "eur",
    "note": "",
    "due_date": "2026-03-07T04:30:00.000Z",
    "status": "PAID",
    "payment_provider": "MANUAL",
    "type": "FIRST_PAYMENT",
    "paid_at": "2026-03-06T12:54:22.564Z",
    "created_at": "2026-03-06T12:53:54.181Z",
    "failure_reason": null,
    "is_mandate_payment": false,
    "refunds": [],
    "payment_links": [],
    "payment_proofs": [
      {
        "id": "20749184-8027-47a6-8491-0ae327fd2adf",
        "file_name": "accents.png",
        "mime_type": "image/png",
        "file_size_bytes": 1433369,
        "uploaded_by": "user_39btCx7wm2Vwgr2eHmhRLxNanxI",
        "created_at": "2026-03-06T12:54:22.594Z",
        "url": "https://hermon-dv.ams3.digitaloceanspaces.com/org_39btEvzPIhOBFQQF831vmVqsTry/payment_proofs/0174f917-e7c2-4a27-9aca-2626724c04d5/06ffd387-45b5-4248-9725-d8a49084b17d.png"
      }
    ],
    "unmatched_payment": null
  }
}

Error Responses

401Missing or invalid API key
json
{
  "status": "error",
  "message": "Invalid or revoked API key"
}
404Resource not found
json
{
  "status": "error",
  "message": "Resource not found"
}
429Rate limit exceeded
json
{
  "status": "error",
  "message": "Too many requests"
}