> ## Documentation Index
> Fetch the complete documentation index at: https://doc-test-my.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Fetch All Invoices

> Fetch the details of all Invoices using this endpoint.

Use this endpoint to retrieve the details of all invoices.

<RequestExample>
  ```bash Curl theme={null}
  curl -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET] \
  -X GET https://api.razorpay.com/v1/invoices/
  ```

  ```java Java theme={null}
  RazorpayClient razorpay = new RazorpayClient("[YOUR_KEY_ID]", "[YOUR_KEY_SECRET]");

  List<Invoice> invoice = razorpay.invoices.fetchAll();
  ```

  ```python Python theme={null}
  import razorpay
  client = razorpay.Client(auth=("YOUR_ID", "YOUR_SECRET"))

  client.invoice.all()
  ```

  ```go Go theme={null}
  import ( razorpay "github.com/razorpay/razorpay-go" )
  client := razorpay.NewClient("YOUR_KEY_ID", "YOUR_SECRET")

  option := map[string]interface{}{
      "count" : 1,
  }
  body, err := client.Invoice.All(option, nil)
  ```

  ```ruby Ruby theme={null}
  require "razorpay"
  Razorpay.setup('YOUR_KEY_ID', 'YOUR_SECRET')

  Razorpay::Invoice.all(options)
  ```

  ```php PHP theme={null}
  $api = new Api($key_id, $secret);

  $api->invoice->all();
  ```

  ```javascript Node.js theme={null}
  var instance = new Razorpay({ key_id: 'YOUR_KEY_ID', key_secret: 'YOUR_SECRET' })

  instance.invoices.all()
  ```

  ```csharp .NET theme={null}
  RazorpayClient client = new RazorpayClient("[YOUR_KEY_ID]", "[YOUR_KEY_SECRET]");

  List<Invoice> invoice = client.Invoice.All();
  ```

  ```bash CLI theme={null}
  razorpay invoices list --type invoice --customer-id cust_ABC123
  ```
</RequestExample>

<ResponseExample>
  ```json Success theme={null}
  {
    "entity": "collection",
    "count": 2,
    "items": [
      {
        "id": "inv_DAweOiQ7amIUVd",
        "entity": "invoice",
        "receipt": "#0961",
        "invoice_number": "#0961",
        "customer_id": "cust_DAtUWmvpktokrT",
        "customer_details": {
          "id": "cust_DAtUWmvpktokrT",
          "name": "<name>",
          "email": "<email>",
          "contact": "<phone>",
          "gstin": null,
          "billing_address": {
            "id": "addr_DAtUWoxgu91obl",
            "type": "billing_address",
            "primary": true,
            "line1": "Bakers Street",
            "line2": "Country Road",
            "zipcode": "400092",
            "city": "Mumbai",
            "state": "Maharashtra",
            "country": "in"
          },
          "shipping_address": null,
          "customer_name": "<name>",
          "customer_email": "<email>",
          "customer_contact": "<phone>"
        },
        "order_id": null,
        "line_items": [
          {
            "id": "li_DAweOizsysoJU6",
            "item_id": null,
            "name": "Book / English August - Updated name and quantity",
            "description": "150 points in Quidditch",
            "amount": 400,
            "unit_amount": 400,
            "gross_amount": 400,
            "tax_amount": 0,
            "taxable_amount": 400,
            "net_amount": 400,
            "currency": "MYR",
            "type": "invoice",
            "tax_inclusive": false,
            "hsn_code": null,
            "sac_code": null,
            "tax_rate": null,
            "unit": null,
            "quantity": 1,
            "taxes": []
          },
          {
            "id": "li_DAwjWQUo07lnjF",
            "item_id": null,
            "name": "Book / A Wild Sheep Chase",
            "description": null,
            "amount": 200,
            "unit_amount": 200,
            "gross_amount": 200,
            "tax_amount": 0,
            "taxable_amount": 200,
            "net_amount": 200,
            "currency": "MYR",
            "type": "invoice",
            "tax_inclusive": false,
            "hsn_code": null,
            "sac_code": null,
            "tax_rate": null,
            "unit": null,
            "quantity": 1,
            "taxes": []
          }
        ],
        "payment_id": null,
        "status": "draft",
        "expire_by": 1567103399,
        "issued_at": null,
        "paid_at": null,
        "cancelled_at": null,
        "expired_at": null,
        "sms_status": null,
        "email_status": null,
        "date": 1566891149,
        "terms": null,
        "partial_payment": false,
        "gross_amount": 600,
        "tax_amount": 0,
        "taxable_amount": 600,
        "amount": 600,
        "amount_paid": null,
        "amount_due": null,
        "currency": "MYR",
        "currency_symbol": "<currency_symbol>",
        "description": "This is a test invoice.",
        "notes": {
          "updated-key": "An updated note."
        },
        "comment": null,
        "short_url": null,
        "view_less": true,
        "billing_start": null,
        "billing_end": null,
        "type": "invoice",
        "group_taxes_discounts": false,
        "created_at": 1566906474,
        "idempotency_key": null
      },
      {
        "id": "inv_DAul2TA6zodukS",
        "entity": "invoice",
        "receipt": null,
        "invoice_number": null,
        "customer_id": "cust_DAuFux32LnIsqJ",
        "customer_details": {
          "id": "cust_DAuFux32LnIsqJ",
          "name": "<name>",
          "email": "<email>",
          "contact": "<phone>",
          "gstin": null,
          "billing_address": {
            "id": "addr_DAuFuz499I5mgk",
            "type": "billing_address",
            "primary": true,
            "line1": "L-16, The Business Centre,",
            "line2": "61, Wellfield Road",
            "zipcode": "110001",
            "city": "New Delhi",
            "state": "Delhi",
            "country": "in"
          },
          "shipping_address": null,
          "customer_name": "<name>",
          "customer_email": "<email>",
          "customer_contact": "<phone>"
        },
        "order_id": "order_DAul2V0vnGXIML",
        "line_items": [
          {
            "id": "li_DAul2TuV4fhwd3",
            "item_id": "item_DAqThJ7v09UO3n",
            "name": "Magic Beans",
            "description": "Beans that make you go kaput!",
            "amount": 2000,
            "unit_amount": 2000,
            "gross_amount": 2000,
            "tax_amount": 0,
            "taxable_amount": 2000,
            "net_amount": 2000,
            "currency": "MYR",
            "type": "invoice",
            "tax_inclusive": false,
            "hsn_code": null,
            "sac_code": null,
            "tax_rate": null,
            "unit": null,
            "quantity": 1,
            "taxes": []
          }
        ],
        "payment_id": null,
        "status": "cancelled",
        "expire_by": null,
        "issued_at": 1566899808,
        "paid_at": null,
        "cancelled_at": 1566973122,
        "expired_at": null,
        "sms_status": "sent",
        "email_status": "sent",
        "date": 1566994898,
        "terms": "Updated terms and conditions for Acme Corp",
        "partial_payment": false,
        "gross_amount": 2000,
        "tax_amount": 0,
        "taxable_amount": 2000,
        "amount": 2000,
        "amount_paid": 0,
        "amount_due": 2000,
        "currency": "MYR",
        "description": null,
        "notes": [],
        "comment": "Updated comment on the Invoice",
        "short_url": "https://rzp.io/i/F7EPd9Q",
        "view_less": true,
        "billing_start": null,
        "billing_end": null,
        "type": "invoice",
        "group_taxes_discounts": false,
        "created_at": 1566899808,
        "idempotency_key": null
      }
    ]
  }
  ```

  ```json Failure theme={null}
  {
    "error": {
      "code": "BAD_REQUEST_ERROR",
      "description": "The api key provided is invalid",
      "source": "NA",
      "step": "NA",
      "reason": "NA",
      "metadata": {}
    }
  }
  ```
</ResponseExample>

## Query Parameters

<ParamField query="type" type="string">
  Here, it is `invoice`.
</ParamField>

<ParamField query="payment_id" type="string">
  The unique identifier of the payment made by the customer against the invoice.
</ParamField>

<ParamField query="receipt" type="string">
  The unique receipt number that you entered for internal purposes.
</ParamField>

<ParamField query="customer_id" type="string">
  The unique identifier of the customer. When used, fetches all invoices generated for a customer.
</ParamField>

## Response Parameters

<ResponseField name="id" type="string">
  The unique identifier of the invoice.
</ResponseField>

<ResponseField name="entity" type="string">
  Indicates the type of entity. Here, it is `invoice`.
</ResponseField>

<ResponseField name="type" type="string">
  Here, it should be `invoice`.
</ResponseField>

<ResponseField name="invoice_number" type="string">
  Unique number you added for internal reference. The minimum character length is 1 and maximum is 40.
</ResponseField>

<ResponseField name="customer_id" type="string">
  The unique identifier of the customer. You can create `customer_id` using the [Customers API](/docs/api/customers). Alternatively, you can pass the customer object described in the below fields.
</ResponseField>

<ResponseField name="customer_details" type="object">
  Details of the customer.
</ResponseField>

<ResponseField name="id" type="string">
  Unique identifier of the customer. For example, `cust_1Aa00000000004`.
</ResponseField>

<ResponseField name="name" type="string">
  Customer's name. Alphanumeric, with period (.), apostrophe (') and parentheses allowed. The name must be between 3-50 characters in length. For example, `Gaurav Kumar`.
</ResponseField>

<ResponseField name="email" type="string">
  The customer's email address. A maximum length of 64 characters. For example, `gaurav.kumar@example.com`.
</ResponseField>

<ResponseField name="contact" type="string">
  The customer's phone number. A maximum length of 15 characters including country code. For example, `+919876543210`.
</ResponseField>

<ResponseField name="billing_address" type="object">
  Details of the customer's billing address.
</ResponseField>

<ResponseField name="id" type="string">
  The unique identifier generated for the customer's billing address.
</ResponseField>

<ResponseField name="type" type="string">
  The customer address type. Here it is `billing_address`.
</ResponseField>

<ResponseField name="primary" type="boolean">
  Defines if this is the primary address.

  * `true`: It is the customer's primary address.
  * `false`: It is not the customer's primary address.
</ResponseField>

<ResponseField name="line1" type="string">
  The first line of the customer's address.
</ResponseField>

<ResponseField name="line2" type="string">
  The second line of the customer's address.
</ResponseField>

<ResponseField name="city" type="string">
  The city.
</ResponseField>

<ResponseField name="zipcode" type="string">
  The zipcode.
</ResponseField>

<ResponseField name="state" type="string">
  The state.
</ResponseField>

<ResponseField name="country" type="string">
  The country.
</ResponseField>

<ResponseField name="shipping_address" type="object">
  Details of the customer's shipping address.
</ResponseField>

<ResponseField name="id" type="string">
  The unique identifier generated for the customer's shipping address.
</ResponseField>

<ResponseField name="type" type="string">
  The customer address type. Here it is `shipping_address`.
</ResponseField>

<ResponseField name="primary" type="boolean">
  Defines if this is the primary address.

  * `true`: It is the customer's primary address.
  * `false`: It is not the customer's primary address.
</ResponseField>

<ResponseField name="line1" type="string">
  The first line of the customer's address.
</ResponseField>

<ResponseField name="line2" type="string">
  The second line of the customer's address.
</ResponseField>

<ResponseField name="city" type="string">
  The city.
</ResponseField>

<ResponseField name="zipcode" type="string">
  The zipcode.
</ResponseField>

<ResponseField name="state" type="string">
  The state.
</ResponseField>

<ResponseField name="country" type="string">
  The country.
</ResponseField>

<ResponseField name="order_id" type="string">
  The unique identifier of the order associated with the invoice.
</ResponseField>

<ResponseField name="line_items" type="object">
  Details of the line item that is billed in the invoice. Maximum of 50 line items.
</ResponseField>

<ResponseField name="id" type="string">
  Unique identifier that is generated if a new item has been created while creating the invoice.
</ResponseField>

<ResponseField name="item_id" type="string">
  Unique identifier of the item generated using Items API that has been billed in the invoice.
</ResponseField>

<ResponseField name="name" type="string">
  The item's name.
</ResponseField>

<ResponseField name="description" type="string">
  A brief description of the item.
</ResponseField>

<ResponseField name="amount" type="integer">
  The price of the item.
</ResponseField>

<ResponseField name="currency" type="string">
  The currency associated with the item. Default is `INR`. Know about the [list of supported international currencies](/docs/payments/international-payments#supported-currencies).
</ResponseField>

<ResponseField name="type" type="string">
  Here, it is `invoice`.
</ResponseField>

<ResponseField name="quantity" type="integer">
  The quantity of the item billed in the invoice. Defaults to `1`.
</ResponseField>

<ResponseField name="payment_id" type="string">
  Unique identifier of a payment made against this invoice.
</ResponseField>

<ResponseField name="status" type="string">
  The status of the invoice. Know more about [Invoice States](/docs/payments/invoices/states). Possible values:

  * `draft`
  * `issued`
  * `partially_paid`
  * `paid`
  * `cancelled`
  * `expired`
  * `deleted`
</ResponseField>

<ResponseField name="expire_by" type="integer">
  Timestamp, in Unix format, at which the invoice will expire.
</ResponseField>

<ResponseField name="issued_at" type="integer">
  Timestamp, in Unix format, at which the invoice was issued to the customer.
</ResponseField>

<ResponseField name="paid_at" type="integer">
  Timestamp, in Unix format, at which the payment was made.
</ResponseField>

<ResponseField name="cancelled_at" type="integer">
  Timestamp, in Unix format, at which the invoice was cancelled.
</ResponseField>

<ResponseField name="expired_at" type="integer">
  Timestamp, in Unix format, at which the invoice expired.
</ResponseField>

<ResponseField name="sms_status" type="string">
  The delivery status of the SMS notification for the invoice sent to the customer. Possible values:

  * `pending`
  * `sent`
</ResponseField>

<ResponseField name="email_status" type="string">
  The delivery status of the email notification for the invoice sent to the customer. Possible values:

  * `pending`
  * `sent`
</ResponseField>

<ResponseField name="partial_payment" type="boolean">
  Indicates whether the customer can make a partial payment on the invoice. Possible values:

  * `true`:  The customer can make partial payments.
  * `false` (default): The customer cannot make partial payments.
</ResponseField>

<ResponseField name="amount" type="integer">
  Amount to be paid using the invoice. Must be in the smallest unit of the currency. For example, if the amount to be received from the customer is , pass the value as `30000`.
</ResponseField>

<ResponseField name="amount_paid" type="integer">
  Amount paid by the customer against the invoice.
</ResponseField>

<ResponseField name="amount_due" type="integer">
  The remaining amount to be paid by the customer for the issued invoice.
</ResponseField>

<ResponseField name="currency" type="string">
  The currency associated with the invoice. You must mandatorily pass this parameter if accepting international payments. If you have passed `currency` as a sub-parameter in the `line_item` object, you must ensure that the same currency is passed in both places. Know about the [list of supported international currencies.](/docs/payments/international-payments#supported-currencies)
</ResponseField>

<ResponseField name="description" type="string">
  A brief description of the invoice. The maximum character length is 2048.
</ResponseField>

<ResponseField name="notes" type="object">
  Any custom notes added to the invoice. Maximum of 2048 characters.
</ResponseField>

<ResponseField name="short_url" type="string">
  The short URL that is generated. Share this link with customers to accept payments.
</ResponseField>

<ResponseField name="date" type="integer">
  Timestamp, in Unix format, that indicates the issue date of the invoice.
</ResponseField>

<ResponseField name="terms" type="string">
  Any terms to be included in the invoice. Maximum of 2048 characters.
</ResponseField>

<ResponseField name="comment" type="string">
  Any comments to be added in the invoice. Maximum of 2048 characters.
</ResponseField>

<ResponseField name="ref_num" type="string">
  A unique reference number for the invoice, used for internal tracking and reconciliation.
</ResponseField>

<ResponseField name="subscription_id" type="string">
  Unique identifier of the subscription associated with this invoice.
</ResponseField>

<ResponseField name="receipt" type="string">
  A unique receipt number that you can provide for the invoice, for your internal reference.
</ResponseField>

<ResponseField name="currency_symbol" type="string">
  For example, `₹`.
</ResponseField>

<ResponseField name="idempotency_key" type="string">
  A unique key used to ensure idempotency of the invoice creation request, preventing duplicate invoices.
</ResponseField>

<ResponseField name="billing_end" type="integer">
  Unix timestamp marking the end of the billing period for the invoice.
</ResponseField>

<ResponseField name="gross_amount" type="integer">
  The gross amount for this invoice, in the smallest currency unit (paise for INR). For example, `50000`.
</ResponseField>

## Errors

<AccordionGroup>
  <Accordion
    title="The API `<key/secret>
` provided is invalid."
  >
    **Code:** `4xx`

    The API key or secret are not entered or an invalid API key is used.

    **Solution:** Use and enter the correct API details while executing the API.
  </Accordion>

  <Accordion title="The customer_id provided is invalid.">
    **Code:** `400`

    The `customer_id` query parameter is malformed (for example a string that doesn't match the `cust_<14 chars>` pattern, or a wrong-prefix id like `pay_...`). Note: a well-formed but non-existent `customer_id` returns an empty collection (HTTP 200, `count: 0`), not an error.

    **Solution:** Pass `customer_id` in the form `cust_<14 alphanumeric chars>`.
  </Accordion>

  <Accordion title="The payment id must be at least 14 characters.">
    **Code:** `400`

    The `payment_id` query parameter is shorter than the expected 14-character payload (or otherwise malformed). A well-formed but non-existent `payment_id` returns an empty collection instead of an error.

    **Solution:** Pass `payment_id` in the form `pay_<14 alphanumeric chars>`.
  </Accordion>

  <Accordion title="Not a valid type.">
    **Code:** `400`

    The value passed for the `type` query parameter is not one of the supported invoice types. The API echoes the rejected value, for example `Not a valid type: invoiceee`.

    **Solution:** Use a supported `type` value (for example `invoice`).
  </Accordion>
</AccordionGroup>
