---
title: "Event reference"
description: "Every event type tmbilling emits, grouped by the resource it belongs to."
canonical_url: "https://twominutebilling.com/help/developers/webhooks/events"
---
# Event reference

> Every event type tmbilling emits, grouped by the resource it belongs to.

164 event types across 40 resource families. Subscribe an
endpoint to any subset; an endpoint with no list receives all of them.

<note>

Delivery succeeds on any 2xx response. A failure is retried up to
6 times, backing off 1 min, 5 min, 30 min, 2 h, 6 h.

</note>

## `customer`

The payer's own record: created, changed, archived, and every movement of the promotional or excess credit held against their name.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        customer_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_restored
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_contact_added
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_contact_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_contact_removed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_shipping_address_added
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_shipping_address_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_shipping_address_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_billing_info_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_promotional_credits_added
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_promotional_credits_deducted
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_excess_payment_recorded
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer_credits_restored
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `payment_source`

A stored instrument belonging to a customer. These are the events that warn you an instrument will stop working before it does — expiry, an insufficient mandate, an outright refusal.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        payment_source_added
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_source_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_source_deleted
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_source_expiring
      </code>
    </td>
    
    <td>
      Sent ahead of the expiry date, while the instrument still works, so you can ask the customer to replace it before a renewal fails.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_source_expiry_reminder
      </code>
    </td>
    
    <td>
      Sent on each lead day before a card expires, when the business sets lead days for card expiry (<code>
        reminder_config.card_expiring
      </code>
      
      ). Carries <code>
        expires_at
      </code>
      
       and <code>
        lead_days
      </code>
      
      . Emitted once per card, expiry date and lead day. <code>
        payment_source_expiring
      </code>
      
       still fires once, when the card enters its expiry month.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_source_mandate_insufficient
      </code>
    </td>
    
    <td>
      The instrument's authorised per-debit ceiling is below the next amount due on a subscription it is attached to. The ceiling is fixed when the instrument is authorised and cannot be raised in place — only a fresh authorisation from the customer replaces it, so this is a prompt to ask for one.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_source_expired
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_source_role_changed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_source_invalidated
      </code>
    </td>
    
    <td>
      The instrument was refused in a way that will not resolve on its own and has been marked unusable. Distinct from expiry: nothing ran out, it was declined.
    </td>
  </tr>
</tbody>
</table>

## `subscription`

The life of one subscription, from creation through each renewal to cancellation, including changes scheduled ahead of time and the reminders sent before they take effect.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        subscription_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_started
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_activated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_changed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_change_scheduled
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_scheduled_change_removed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_renewed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_renewal_skipped
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_skip_scheduled
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_scheduled_skip_removed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_trial_ending
      </code>
    </td>
    
    <td>
      Sent on each of the business's lead days before a trial ends, with <code>
        lead_days
      </code>
      
       on the event.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_cancel_scheduled
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_scheduled_cancellation_removed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_canceled
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_paused
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_pause_scheduled
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_resumed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_resumption_scheduled
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_reactivated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_deleted
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_renewal_reminder
      </code>
    </td>
    
    <td>
      Sent on each of the business's lead days before a renewal (<code>
        reminder_config
      </code>
      
      ), with <code>
        lead_days
      </code>
      
       on the event. Emitted once per subscription, renewal date and lead day, so it is safe to act on directly.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_cancellation_reminder
      </code>
    </td>
    
    <td>
      Sent on each of the business's lead days before a scheduled cancellation takes effect, with <code>
        lead_days
      </code>
      
       on the event.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_pause_reminder
      </code>
    </td>
    
    <td>
      Sent on each of the business's lead days before a scheduled pause (<code>
        reminder_config.pause
      </code>
      
      ), with <code>
        pause_at
      </code>
      
      , <code>
        lead_days
      </code>
      
       and <code>
        scheduled_change
      </code>
      
       on the event. Off by default.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_resume_reminder
      </code>
    </td>
    
    <td>
      Sent on each of the business's lead days before a scheduled resume (<code>
        reminder_config.resume
      </code>
      
      ), with <code>
        resume_at
      </code>
      
      , <code>
        lead_days
      </code>
      
       and <code>
        scheduled_change
      </code>
      
       on the event. Off by default.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subscription_pre_debit_notification
      </code>
    </td>
    
    <td>
      Advance notice of a mandate debit, carrying the amount, the date and the mandate reference. Required before every debit on some rails, and sent by the platform because the gateway does not send it.
    </td>
  </tr>
</tbody>
</table>

## `invoice`

An invoice's progress from generated to paid, written off or voided, together with the dunning sequence that chases an unpaid one.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        invoice_generated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_pending_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_closed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_paid
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_payment_due
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_payment_due_reminder
      </code>
    </td>
    
    <td>
      Sent on each of the business's lead days before the due date of an open invoice that is not collected automatically (<code>
        reminder_config.payment_due
      </code>
      
      ), with <code>
        due_at
      </code>
      
       and <code>
        lead_days
      </code>
      
       on the event. Off by default.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_not_paid
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_voided
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_written_off
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_deleted
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_dunning_started
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_dunning_exhausted
      </code>
    </td>
    
    <td>
      The retry sequence for an unpaid invoice has run out of attempts. No further collection will be tried automatically.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_dunning_stopped
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_dunning_reminder
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `credit_note`

Credit issued against an invoice, and what became of it — applied to a balance, refunded to the payer, or voided.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        credit_note_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_note_allocated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_note_refunded
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_note_refund_reversed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_note_voided
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `payment`

An attempt to collect money and how it ended. `payment_authentication_required` is the one outcome that is neither success nor failure.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        payment_initiated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_succeeded
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_failed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_authentication_required
      </code>
    </td>
    
    <td>
      The debit was accepted but the rail has paused it pending the buyer's additional authentication. Neither a success nor a failure: the money moves only if the buyer authenticates, and nothing else will prompt them.
    </td>
  </tr>
</tbody>
</table>

## `refund`

Money on its way back to the payer, reported twice: once when accepted, once when settled.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        refund_created
      </code>
    </td>
    
    <td>
      The provider has ACCEPTED the refund. On cards and bank rails the money lands days later, so treat this as an instruction in flight rather than an outcome.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        refund_settled
      </code>
    </td>
    
    <td>
      The refund actually went through, confirmed by the provider. This is the one to pay out or notify on.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        refund_failed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `transaction`

A recorded movement of money that needs your attention, has been reconciled, or failed after it appeared to succeed.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        transaction_needs_attention
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        transaction_reconciled
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        transaction_late_failure
      </code>
    </td>
    
    <td>
      A transaction that had been reported as successful was later reversed by the provider.
    </td>
  </tr>
</tbody>
</table>

## `dispute`

A chargeback opened by the payer's bank or card network, the money moving out and possibly back, and the case closing.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        dispute_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        dispute_funds_withdrawn
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        dispute_funds_reinstated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        dispute_won
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        dispute_lost
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        dispute_closed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `gateway_account`

A payment gateway connection on one of your businesses being added, changed or removed.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        gateway_account_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        gateway_account_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        gateway_account_deleted
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `payment_intent`

A container for attempts at the gateway — either authorising a charge to capture later, or a zero-amount authorisation whose product is a stored instrument.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        payment_intent_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_intent_authorized
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_intent_expired
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_intent_consumed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_intent_failed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_intent_voided
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `payment_attempt`

One individual try against the gateway inside an intent. A buyer who fails authentication twice before succeeding leaves three attempts, and none overwrite the earlier ones.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        payment_attempt_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_attempt_failed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `wallet`

Prepaid credit added to a customer's wallet.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        wallet_topped_up
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `receipt`

A numbered record of money received: one per payment, or one per payment on a payment request. Sent when the receipt gets its number, which is within seconds of the payment.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        receipt_created
      </code>
    </td>
    
    <td>
      Carries the receipt number, the amount received and what it was applied to. A receipt never changes after this event.
    </td>
  </tr>
</tbody>
</table>

## `payment_request`

A request for several open invoices of one customer, paid by one charge or one link. Each invoice still gets its own payment and its own `payment_succeeded`, which names the request.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        payment_request_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_request_paid
      </code>
    </td>
    
    <td>
      Every invoice in the request is settled. Sent once, after the child <code>
        payment_succeeded
      </code>
      
       events.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_request_payment_failed
      </code>
    </td>
    
    <td>
      The charge for the request failed or was reversed. The request is open again and the customer was sent the link.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_request_canceled
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_request_expired
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `dunning_policy`

A named set of dunning settings that you assign to customers. A customer with no policy uses the business dunning settings.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        dunning_policy_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        dunning_policy_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        dunning_policy_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `coupon`

A discount in your catalogue being created or changed, and applied to or removed from a subscription.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        coupon_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        coupon_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        coupon_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        coupon_applied
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        coupon_removed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `coupon_set`

A batch of single-use codes for one coupon.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        coupon_set_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        coupon_set_codes_added
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `coupon_code`

An individual code within a set.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        coupon_code_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `product_group`

A grouping of products in your catalogue.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        product_group_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        product_group_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        product_group_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `product`

A product in your catalogue.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        product_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        product_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        product_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `price`

A price on a product — the amount, currency and billing period a subscription is sold at.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        price_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        price_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        price_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `attached_item`

An add-on or charge attached to a product so it is carried onto subscriptions of that product.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        attached_item_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        attached_item_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        attached_item_deleted
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `differential_price`

A price override that applies to one specific product-and-plan combination.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        differential_price_set
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        differential_price_deleted
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `feature`

A capability in your catalogue that a plan can grant, such as single sign-on or a project limit. Use these events to refresh any entitlements your app caches.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        feature_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        feature_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        feature_archived
      </code>
    </td>
    
    <td>
      The feature no longer grants anything: it leaves every subscription's entitlements and its checks answer <code>
        feature_archived
      </code>
      
      . Grants are kept, and reactivating the feature sends <code>
        feature_updated
      </code>
      
       with <code>
        active: true
      </code>
      
      .
    </td>
  </tr>
</tbody>
</table>

## `plan_entitlement`

What a product grants for one feature. A change here alters the entitlements of every subscription on that product.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        plan_entitlement_set
      </code>
    </td>
    
    <td>
      Sent when a grant is created or its value changes. The payload carries <code>
        value
      </code>
      
       and <code>
        previous_value
      </code>
      
      , which is null for a new grant.
    </td>
  </tr>
</tbody>
</table>

## `subscription_entitlement`

A per-subscription override of what its plan grants for one feature.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        subscription_entitlement_set
      </code>
    </td>
    
    <td>
      Sent when an override is created or its value changes. The payload carries <code>
        value
      </code>
      
       and <code>
        previous_value
      </code>
      
      , which is null for a new override.
    </td>
  </tr>
</tbody>
</table>

## `manual_discount`

A percentage or fixed-amount discount applied directly to a subscription without a coupon in the catalogue.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        manual_discount_applied
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        manual_discount_removed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `usage`

Metered usage recorded against a subscription, which later prices an invoice line.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        usage_recorded
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `meter`

A meter: what to count from your usage events, and how to add the values up.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        meter_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        meter_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        meter_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `usage_event`

Usage events you sent. We do not send one webhook for each event; this family reports on them in summary.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        usage_event_unmatched
      </code>
    </td>
    
    <td>
      Sent at most once an hour when events arrived with a customer key that no customer has. Add the key to a customer and the events bill.
    </td>
  </tr>
</tbody>
</table>

## `model_prices`

The AI model price list. Sent when a list price that your meters use changes.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        model_prices_changed
      </code>
    </td>
    
    <td>
      Sent once per price sync to each business whose meters used a changed model in the last 35 days. Each change gives the old and new price, the time the new price starts, and two flags: <code>
        bill_moves
      </code>
      
       (a live subscription bills that model from the list) and <code>
        cost_moves
      </code>
      
       (you have no cost of your own for it). Usage before the start time keeps the old price.
    </td>
  </tr>
</tbody>
</table>

## `credit_unit`

A unit of credit that you define, such as one credit worth USD 0.01.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        credit_unit_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_unit_updated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_unit_archived
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `credit_grant`

Credit that a customer holds, in money or in your credit unit. Invoices use it in a fixed order, and it can expire.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        credit_grant_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_grant_applied
      </code>
    </td>
    
    <td>
      Sent once for each invoice that used credit grants. It lists each grant and the amount that the invoice used.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_grant_expired
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_grant_voided
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_grant_restored
      </code>
    </td>
    
    <td>
      A voided invoice gave its credit back. When the grant had expired, the credit comes back as a new grant that expires in 12 months.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_grant_activated
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `credit_hold`

An amount of credit that your app reserved before a call. We send these events only to an endpoint that lists them by name.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        credit_hold_created
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_hold_captured
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_hold_released
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_hold_expired
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `spend_limit`

A spend limit on a customer, a subscription or a usage property. Sent once per limit, subject and interval when spend reaches the limit.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        spend_limit_reached
      </code>
    </td>
    
    <td>
      Carries the limit, the subject, the interval, the amount spent and when the interval resets. <code>
        mode
      </code>
      
       is <code>
        hard
      </code>
      
       (new requests are refused) or <code>
        soft
      </code>
      
       (notice only).
    </td>
  </tr>
</tbody>
</table>

## `customer_limit_tier`

A limit tier that a customer reached when its total paid amount grew. A tier never goes down after a refund.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        customer_limit_tier_reached
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `usage_alert`

An alert on usage, spend, credit balance or credit runway. Each threshold triggers at most once per period and resolves once.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        usage_alert_triggered
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        usage_alert_resolved
      </code>
    </td>
    
    <td>
      The value moved back across a threshold, or the period ended (<code>
        reason: period_ended
      </code>
      
      ). Each trigger has exactly one resolve.
    </td>
  </tr>
</tbody>
</table>

## `credit_auto_topup`

Automatic top-up: credit bought when the balance is low or on a schedule.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        credit_auto_topup_scheduled
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_auto_topup_succeeded
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_auto_topup_failed
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_auto_topup_skipped
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_auto_topup_threshold_low
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>

## `usage_threshold`

Usage invoiced during the period because the unbilled usage reached the amount that you set.

<table>
<thead>
  <tr>
    <th>
      Event type
    </th>
    
    <th>
      
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        usage_threshold_reached
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
</tbody>
</table>


## Sitemap

See the full [sitemap](https://twominutebilling.com/sitemap.md) for all pages.
