Skip to content
Merxian

transaction.completed

The transaction is paid.

On this page
Typetransaction.completed
CausePayments collected the full amount that the transaction requires.
PayloadThe transaction object in data.object
SubscriptionOn by default for a new endpoint.

When to use it

This is the main signal to fulfil a transaction.

Notes

  • Refunds do not move the transaction out of COMPLETED. Watch transaction.refunded and the refund events.

Payload

The fields of data.object. The envelope is the same for every event.

  • idstring

    The transaction ID, txn_….

  • objectstring

    Always transaction.

  • statusstring

    The state of the transaction.

    One of: DRAFT, READY, PROCESSING, COMPLETED, PAST_DUE, CANCELED

  • currencystring

    The ISO 4217 currency code.

  • amountsobject

    Amounts in minor units.

    Child attributes of amounts
    • subtotalinteger

      The sum of the line subtotals.

    • discountinteger

      The discount.

    • netinteger

      The amount before tax, after the discount.

    • taxinteger

      The tax.

    • totalinteger

      The amount to pay.

    • refundedinteger

      The amount refunded so far.

  • customerobjectCan be absentCan be null

    The buyer, when the transaction has one.

    Child attributes of customer
    • idstring

      The customer ID, cus_….

    • emailstringCan be absentCan be null

      The buyer email.

    • namestringCan be absentCan be null

      The buyer name.

  • paymentobjectCan be absentCan be null

    The first payment of the transaction, when there is one.

    Child attributes of payment
    • idstring

      The payment ID, pay_….

    • statusstring

      The state of that payment, in upper case, for example SUCCEEDED.

  • checkoutobjectCan be absentCan be null

    The checkout session of the transaction, when there is one.

    Child attributes of checkout
    • idstring

      The checkout session ID, cs_….

    • client_reference_idstringCan be absentCan be null

      Not filled in this version.

  • line_itemsarray of objects

    The lines of the transaction. Empty for an amount-only transaction.

    Child attributes of line_items
    • idstring

      The line ID, txnitm_….

    • product_idstringCan be absentCan be null

      The product ID, prod_….

    • price_idstringCan be absentCan be null

      The price ID, price_….

    • namestring

      The product name.

    • descriptionstringCan be absentCan be null

      The product description.

    • quantityinteger

      The quantity.

    • Whether the unit amount includes tax.

      One of: inclusive, exclusive

    • The unit amount, in minor units.

    • subtotalinteger

      Minor units.

    • discountinteger

      Minor units.

    • netinteger

      Minor units.

    • taxinteger

      Minor units.

    • totalinteger

      Minor units.

  • metadataobject

    Your own key-value pairs.

  • external_referencestringCan be absentCan be null

    Your own reference for the transaction.

  • created_atstring (date-time)

    When the transaction was created.

  • paid_atstring (date-time)Can be absentCan be null

    When the transaction was paid.

  • updated_atstring (date-time)

    When the transaction last changed.

Example

transaction.completed · request body
{
  "id": "whevt_7Kd2VpXn4TqB9mLzR",
  "object": "event",
  "type": "transaction.completed",
  "created_at": "2026-09-14T09:24:53Z",
  "api_version": "2026-08-01",
  "account_id": "acct_5Rn8bQ2xW7mK4tLzP",
  "data": {
    "object": {
      "id": "txn_0F8mQ2rXbT4kL9pZa",
      "object": "transaction",
      "status": "COMPLETED",
      "currency": "EUR",
      "amounts": {
        "subtotal": 12000,
        "discount": 0,
        "net": 12000,
        "tax": 2280,
        "total": 14280,
        "refunded": 0
      },
      "customer": {
        "id": "cus_2Lp7XcN4vB8mQ1tKd",
        "email": "ada@example.com",
        "name": "Ada Example"
      },
      "payment": {
        "id": "pay_3RtN6wYc8mK2hQvJd",
        "status": "SUCCEEDED"
      },
      "checkout": {
        "id": "cs_6HvB2nQx9LmT4kWpR",
        "client_reference_id": null
      },
      "line_items": [
        {
          "id": "txnitm_8QmZ3vK1pX6nT2bLw",
          "product_id": "prod_5Tq8LmN2xB7vK4pRz",
          "price_id": "price_4Wm9TqLz2Xb7KdN8r",
          "name": "Team plan, annual",
          "description": null,
          "quantity": 1,
          "tax_behavior": "exclusive",
          "unit_amount": 12000,
          "subtotal": 12000,
          "discount": 0,
          "net": 12000,
          "tax": 2280,
          "total": 14280
        }
      ],
      "metadata": {
        "order_ref": "A-1042"
      },
      "external_reference": "A-1042",
      "created_at": "2026-09-14T09:21:07Z",
      "paid_at": "2026-09-14T09:24:51Z",
      "updated_at": "2026-09-14T09:24:51Z"
    }
  }
}

Other transaction events: transaction.created, transaction.ready, transaction.processing, transaction.canceled, transaction.past_due, transaction.partially_refunded, transaction.refunded, transaction.adjusted.

Try refund, payment.succeeded,POST /v1/transactions, orIdempotency-Key.