---
title: "Retrieve a transaction"
description: "With invoice / customer / credit-note / payment-method context."
canonical_url: "https://twominutebilling.com/help/developers/api-reference/webhooks/retrieve-a-transaction"
---
# Retrieve a transaction

> With invoice / customer / credit-note / payment-method context.

<api-operation method="GET" path="/v1/businesses/{biz}/transactions/{txn}">
<template v-slot:docs="">

## Path parameters

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        biz
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      Business id (biz_…)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        txn
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      The transaction's id (txn_…).
    </td>
  </tr>
</tbody>
</table>

## Response

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The object type.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        id
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The transaction's id (txn_…).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        type
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The transaction's type.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        status
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The gateway outcome, in the same words payments and refunds use. Renamed from <code>
        success
      </code>
      
       / <code>
        failure
      </code>
      
       / <code>
        late_failure
      </code>
      
      , which are accepted on input only. One of <code>
        in_progress
      </code>
      
      , <code>
        succeeded
      </code>
      
      , <code>
        failed
      </code>
      
      , <code>
        voided
      </code>
      
      , <code>
        timeout
      </code>
      
      , <code>
        needs_attention
      </code>
      
      , <code>
        late_failed
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        amount_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      The amount in minor units (integer), e.g. 2900 = $29.00.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        currency
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The transaction's currency (ISO-4217 code).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        gateway_key
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The gateway that processed the payment.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        customer
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The customer's id (cus_…).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The invoice's id (inv_…).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        reference_payment
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The payment this transaction belongs to (a charge) or reverses (a refund) — the id payment events carry as <code>
        content.payment.id
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        unapplied_reason
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Set when the payment settled after its invoice could take it, so the money went to the customer's excess balance instead. <code>
        invoice
      </code>
      
       still names the invoice the charge was made for; this field says the charge did not pay it. Null on refunds and on applied payments. One of <code>
        async_overpay
      </code>
      
      , <code>
        abandoned_debit
      </code>
      
      , <code>
        second_checkout
      </code>
      
      , <code>
        late_authorization
      </code>
      
      , <code>
        null
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        payment_method
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The payment method used.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        instrument
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The instrument class behind this transaction. Null when unknown.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        method_type
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The payment method type that the payer used for the payment that this transaction belongs to (a charge) or reverses (a refund). It comes from the gateway's answer when the gateway gives one, else from the saved payment method that was charged. It can be different from <code>
        instrument.type
      </code>
      
       when one checkout offers several methods. Null when not known. One of <code>
        card
      </code>
      
      , <code>
        upi
      </code>
      
      , <code>
        wallet
      </code>
      
      , <code>
        bank_transfer
      </code>
      
      , <code>
        paypal
      </code>
      
      , <code>
        venmo
      </code>
      
      , <code>
        us_bank_account
      </code>
      
      , <code>
        sepa_debit
      </code>
      
      , <code>
        bacs_debit
      </code>
      
      , <code>
        au_becs_debit
      </code>
      
      , <code>
        nz_becs_debit
      </code>
      
      , <code>
        acss_debit
      </code>
      
      , <code>
        autogiro
      </code>
      
      , <code>
        betalingsservice
      </code>
      
      , <code>
        payto
      </code>
      
      , <code>
        null
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        pending_debit_cancel
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      Set on the single read of an in-progress payment whose gateway can cancel a pending debit. Then you can call <code>
        POST /v1/businesses/{biz}/payments/{pay}/cancel_pending_debit
      </code>
      
      . Null when you cannot.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        dispute_recording
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      Set on the single read of a succeeded payment whose gateway sends no dispute events. Then you can record a dispute with <code>
        POST /v1/businesses/{biz}/payments/{pay}/disputes
      </code>
      
      . Null when you cannot.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        awaiting_authentication
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      True only while <code>
        status: in_progress
      </code>
      
       and the debit is paused for the payer's additional-factor authentication. It is waiting on the CUSTOMER, not on the network. Set when the gateway stated it for this debit — at ANY amount, since an issuer may challenge whatever it likes — and otherwise predicted from the RBI/NPCI rule (INR above ₹15,000, card and UPI rails) for a rail that states nothing. A netbanking e-mandate debit is not predicted, because that rail authenticates once at registration; it is still reported if the gateway says this debit stopped.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        created_at
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      When the transaction was created (ISO-8601 UTC).
    </td>
  </tr>
</tbody>
</table>

## Status codes

<table>
<thead>
  <tr>
    <th>
      Status
    </th>
    
    <th>
      Meaning
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        200
      </code>
    </td>
    
    <td>
      Transaction
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        404
      </code>
    </td>
    
    <td>
      Not found
    </td>
  </tr>
</tbody>
</table>
</template>

<template v-slot:request="">

```bash [Request]
curl "$TMBILLING_URL/v1/businesses/biz_XXXXXXXXXXXX01/transactions/txn_XXXXXXXXXXXX01" \
  -H "Authorization: Bearer $TMBILLING_API_KEY"
```

</template>

<template v-slot:response="">

```json [200 OK]
{
  "object": "transaction",
  "id": "txn_XXXXXXXXXXXX01",
  "type": "payment",
  "status": "in_progress",
  "amount_minor": 2900,
  "currency": "USD",
  "gateway_key": "stripe",
  "customer": "cus_XXXXXXXXXXXX01",
  "invoice": "inv_XXXXXXXXXXXX01",
  "reference_payment": "pay_XXXXXXXXXXXX01",
  "unapplied_reason": null,
  "payment_method": {
    "brand": "visa",
    "last4": "4242"
  },
  "instrument": {
    "type": "card",
    "mandate_rail": "upi"
  },
  "method_type": "card",
  "pending_debit_cancel": {
    "payment": "pay_XXXXXXXXXXXX01"
  },
  "dispute_recording": {
    "payment": "pay_XXXXXXXXXXXX01",
    "available_minor": 2900
  },
  "awaiting_authentication": false,
  "created_at": "2026-03-14T09:30:00Z"
}
```

</template>
</api-operation>


## Sitemap

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