Class: Stripe::Invoice

Inherits:
APIResource show all
Extended by:
APIOperations::Create, APIOperations::List, APIOperations::NestedResource, APIOperations::Search
Includes:
APIOperations::Delete, APIOperations::Save
Defined in:
lib/stripe/resources/invoice.rb

Overview

Invoices are statements of amounts owed by a customer, and are either generated one-off, or generated periodically from a subscription.

They contain [invoice items](stripe.com/docs/api#invoiceitems), and proration adjustments that may be caused by subscription upgrades/downgrades (if necessary).

If your invoice is configured to be billed through automatic charges, Stripe automatically finalizes your invoice and attempts payment. Note that finalizing the invoice, [when automatic](stripe.com/docs/invoicing/integration/automatic-advancement-collection), does not happen immediately as the invoice is created. Stripe waits until one hour after the last webhook was successfully sent (or the last webhook timed out after failing). If you (and the platforms you may have connected to) have no webhooks configured, Stripe waits one hour after creation to finalize the invoice.

If your invoice is configured to be billed by sending an email, then based on your [email settings](dashboard.stripe.com/account/billing/automatic), Stripe will email the invoice to your customer and await payment. These emails can contain a link to a hosted page to pay the invoice.

Stripe applies any customer credit on the account before determining the amount due for the invoice (i.e., the amount that will be actually charged). If the amount due for the invoice is less than Stripe’s [minimum allowed charge per currency](docs.stripe.com/docs/currencies#minimum-and-maximum-charge-amounts), the invoice is automatically marked paid, and we add the amount due to the customer’s credit balance which is applied to the next invoice.

More details on the customer’s credit balance are [here](stripe.com/docs/billing/customer/balance).

Related guide: [Send invoices to customers](stripe.com/docs/billing/invoices/sending)

Defined Under Namespace

Classes: AddLinesParams, AmountsDue, AttachPaymentParams, AutomaticTax, ConfirmationSecret, CreateParams, CreatePreviewParams, CustomField, CustomerAddress, CustomerShipping, CustomerTaxId, DeleteParams, FinalizeInvoiceParams, FromInvoice, Issuer, LastFinalizationError, ListParams, MarkUncollectibleParams, Parent, PayParams, PaymentSettings, RemoveLinesParams, Rendering, SearchParams, SendInvoiceParams, ShippingCost, ShippingDetails, StatusTransitions, ThresholdReason, TotalDiscountAmount, TotalMarginAmount, TotalPretaxCreditAmount, TotalTax, UpdateLinesParams, UpdateParams, VoidInvoiceParams

Constant Summary collapse

OBJECT_NAME =
"invoice"

Constants inherited from StripeObject

StripeObject::RESERVED_FIELD_NAMES

Instance Attribute Summary collapse

Attributes inherited from APIResource

#save_with_parent

Attributes inherited from StripeObject

#last_response

Class Method Summary collapse

Instance Method Summary collapse

Methods included from APIOperations::Create

create

Methods included from APIOperations::List

list

Methods included from APIOperations::NestedResource

nested_resource_class_methods

Methods included from APIOperations::Search

_search

Methods included from APIOperations::Save

included, #save

Methods included from APIOperations::Delete

included

Methods inherited from APIResource

class_name, custom_method, #refresh, #request_stripe_object, resource_url, #resource_url, retrieve, save_nested_resource

Methods included from APIOperations::Request

included

Methods inherited from StripeObject

#==, #[], #[]=, #_get_inner_class_type, additive_object_param, additive_object_param?, #as_json, construct_from, #deleted?, #dirty!, #each, #eql?, #hash, #initialize, #inspect, #keys, #marshal_dump, #marshal_load, protected_fields, #serialize_params, #to_hash, #to_json, #to_s, #update_attributes, #values

Constructor Details

This class inherits a constructor from Stripe::StripeObject

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Stripe::StripeObject

Instance Attribute Details

#account_countryObject (readonly)

The country of the business associated with this invoice, most often the business creating the invoice.



4762
4763
4764
# File 'lib/stripe/resources/invoice.rb', line 4762

def 
  @account_country
end

#account_nameObject (readonly)

The public name of the business associated with this invoice, most often the business creating the invoice.



4764
4765
4766
# File 'lib/stripe/resources/invoice.rb', line 4764

def 
  @account_name
end

#account_tax_idsObject (readonly)

The account tax IDs associated with the invoice. Only editable when the invoice is a draft.



4766
4767
4768
# File 'lib/stripe/resources/invoice.rb', line 4766

def 
  @account_tax_ids
end

#amount_dueObject (readonly)

Final amount due at this time for this invoice. If the invoice’s total is smaller than the minimum charge amount, for example, or if there is account credit that can be applied to the invoice, the ‘amount_due` may be 0. If there is a positive `starting_balance` for the invoice (the customer owes money), the `amount_due` will also take that into account. The charge that gets generated for the invoice will be for the amount specified in `amount_due`.



4768
4769
4770
# File 'lib/stripe/resources/invoice.rb', line 4768

def amount_due
  @amount_due
end

#amount_overpaidObject (readonly)

Amount that was overpaid on the invoice. The amount overpaid is credited to the customer’s credit balance.



4770
4771
4772
# File 'lib/stripe/resources/invoice.rb', line 4770

def amount_overpaid
  @amount_overpaid
end

#amount_paidObject (readonly)

The amount, in cents (or local equivalent), that was paid.



4772
4773
4774
# File 'lib/stripe/resources/invoice.rb', line 4772

def amount_paid
  @amount_paid
end

#amount_remainingObject (readonly)

The difference between amount_due and amount_paid, in cents (or local equivalent).



4774
4775
4776
# File 'lib/stripe/resources/invoice.rb', line 4774

def amount_remaining
  @amount_remaining
end

#amount_shippingObject (readonly)

This is the sum of all the shipping amounts.



4776
4777
4778
# File 'lib/stripe/resources/invoice.rb', line 4776

def amount_shipping
  @amount_shipping
end

#amounts_dueObject (readonly)

List of expected payments and corresponding due dates. This value will be null for invoices where collection_method=charge_automatically.



4778
4779
4780
# File 'lib/stripe/resources/invoice.rb', line 4778

def amounts_due
  @amounts_due
end

#applicationObject (readonly)

ID of the Connect Application that created the invoice.



4780
4781
4782
# File 'lib/stripe/resources/invoice.rb', line 4780

def application
  @application
end

#attempt_countObject (readonly)

Number of payment attempts made for this invoice, from the perspective of the payment retry schedule. Any payment attempt counts as the first attempt, and subsequently only automatic retries increment the attempt count. In other words, manual payment attempts after the first attempt do not affect the retry schedule. If a failure is returned with a non-retryable return code, the invoice can no longer be retried unless a new payment method is obtained. Retries will continue to be scheduled, and attempt_count will continue to increment, but retries will only be executed if a new payment method is obtained.



4782
4783
4784
# File 'lib/stripe/resources/invoice.rb', line 4782

def attempt_count
  @attempt_count
end

#attemptedObject (readonly)

Whether an attempt has been made to pay the invoice. An invoice is not attempted until 1 hour after the ‘invoice.created` webhook, for example, so you might not want to display that invoice as unpaid to your users.



4784
4785
4786
# File 'lib/stripe/resources/invoice.rb', line 4784

def attempted
  @attempted
end

#auto_advanceObject (readonly)

Controls whether Stripe performs [automatic collection](stripe.com/docs/invoicing/integration/automatic-advancement-collection) of the invoice. If ‘false`, the invoice’s state doesn’t automatically advance without an explicit action.



4786
4787
4788
# File 'lib/stripe/resources/invoice.rb', line 4786

def auto_advance
  @auto_advance
end

#automatic_taxObject (readonly)

Attribute for field automatic_tax



4788
4789
4790
# File 'lib/stripe/resources/invoice.rb', line 4788

def automatic_tax
  @automatic_tax
end

#automatically_finalizes_atObject (readonly)

The time when this invoice is currently scheduled to be automatically finalized. The field will be ‘null` if the invoice is not scheduled to finalize in the future. If the invoice is not in the draft state, this field will always be `null` - see `finalized_at` for the time when an already-finalized invoice was finalized.



4790
4791
4792
# File 'lib/stripe/resources/invoice.rb', line 4790

def automatically_finalizes_at
  @automatically_finalizes_at
end

#billing_reasonObject (readonly)

Indicates the reason why the invoice was created.

  • ‘manual`: Unrelated to a subscription, for example, created via the invoice editor.

  • ‘subscription`: No longer in use. Applies to subscriptions from before May 2018 where no distinction was made between updates, cycles, and thresholds.

  • ‘subscription_create`: A new subscription was created.

  • ‘subscription_cycle`: A subscription advanced into a new period.

  • ‘subscription_threshold`: A subscription reached a billing threshold.

  • ‘subscription_update`: A subscription was updated.

  • ‘upcoming`: Reserved for simulated invoices, per the upcoming invoice endpoint.



4800
4801
4802
# File 'lib/stripe/resources/invoice.rb', line 4800

def billing_reason
  @billing_reason
end

#collection_methodObject (readonly)

Either ‘charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay this invoice using the default source attached to the customer. When sending an invoice, Stripe will email this invoice to the customer with payment instructions.



4802
4803
4804
# File 'lib/stripe/resources/invoice.rb', line 4802

def collection_method
  @collection_method
end

#confirmation_secretObject (readonly)

The confirmation secret associated with this invoice. Currently, this contains the client_secret of the PaymentIntent that Stripe creates during invoice finalization.



4804
4805
4806
# File 'lib/stripe/resources/invoice.rb', line 4804

def confirmation_secret
  @confirmation_secret
end

#createdObject (readonly)

Time at which the object was created. Measured in seconds since the Unix epoch.



4806
4807
4808
# File 'lib/stripe/resources/invoice.rb', line 4806

def created
  @created
end

#currencyObject (readonly)

Three-letter [ISO currency code](www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](stripe.com/docs/currencies).



4808
4809
4810
# File 'lib/stripe/resources/invoice.rb', line 4808

def currency
  @currency
end

#custom_fieldsObject (readonly)

Custom fields displayed on the invoice.



4810
4811
4812
# File 'lib/stripe/resources/invoice.rb', line 4810

def custom_fields
  @custom_fields
end

#customerObject (readonly)

The ID of the customer who will be billed.



4812
4813
4814
# File 'lib/stripe/resources/invoice.rb', line 4812

def customer
  @customer
end

#customer_accountObject (readonly)

The ID of the account who will be billed.



4814
4815
4816
# File 'lib/stripe/resources/invoice.rb', line 4814

def 
  @customer_account
end

#customer_addressObject (readonly)

The customer’s address. Until the invoice is finalized, this field will equal ‘customer.address`. Once the invoice is finalized, this field will no longer be updated.



4816
4817
4818
# File 'lib/stripe/resources/invoice.rb', line 4816

def customer_address
  @customer_address
end

#customer_emailObject (readonly)

The customer’s email. Until the invoice is finalized, this field will equal ‘customer.email`. Once the invoice is finalized, this field will no longer be updated.



4818
4819
4820
# File 'lib/stripe/resources/invoice.rb', line 4818

def customer_email
  @customer_email
end

#customer_nameObject (readonly)

The customer’s name. Until the invoice is finalized, this field will equal ‘customer.name`. Once the invoice is finalized, this field will no longer be updated.



4820
4821
4822
# File 'lib/stripe/resources/invoice.rb', line 4820

def customer_name
  @customer_name
end

#customer_phoneObject (readonly)

The customer’s phone number. Until the invoice is finalized, this field will equal ‘customer.phone`. Once the invoice is finalized, this field will no longer be updated.



4822
4823
4824
# File 'lib/stripe/resources/invoice.rb', line 4822

def customer_phone
  @customer_phone
end

#customer_shippingObject (readonly)

The customer’s shipping information. Until the invoice is finalized, this field will equal ‘customer.shipping`. Once the invoice is finalized, this field will no longer be updated.



4824
4825
4826
# File 'lib/stripe/resources/invoice.rb', line 4824

def customer_shipping
  @customer_shipping
end

#customer_tax_exemptObject (readonly)

The customer’s tax exempt status. Until the invoice is finalized, this field will equal ‘customer.tax_exempt`. Once the invoice is finalized, this field will no longer be updated.



4826
4827
4828
# File 'lib/stripe/resources/invoice.rb', line 4826

def customer_tax_exempt
  @customer_tax_exempt
end

#customer_tax_idsObject (readonly)

The customer’s tax IDs. Until the invoice is finalized, this field will contain the same tax IDs as ‘customer.tax_ids`. Once the invoice is finalized, this field will no longer be updated.



4828
4829
4830
# File 'lib/stripe/resources/invoice.rb', line 4828

def customer_tax_ids
  @customer_tax_ids
end

#default_marginsObject (readonly)

The margins applied to the invoice. Can be overridden by line item ‘margins`. Use `expand[]=default_margins` to expand each margin.



4830
4831
4832
# File 'lib/stripe/resources/invoice.rb', line 4830

def default_margins
  @default_margins
end

#default_payment_methodObject (readonly)

ID of the default payment method for the invoice. It must belong to the customer associated with the invoice. If not set, defaults to the subscription’s default payment method, if any, or to the default payment method in the customer’s invoice settings.



4832
4833
4834
# File 'lib/stripe/resources/invoice.rb', line 4832

def default_payment_method
  @default_payment_method
end

#default_sourceObject (readonly)

ID of the default payment source for the invoice. It must belong to the customer associated with the invoice and be in a chargeable state. If not set, defaults to the subscription’s default source, if any, or to the customer’s default source.



4834
4835
4836
# File 'lib/stripe/resources/invoice.rb', line 4834

def default_source
  @default_source
end

#default_tax_ratesObject (readonly)

The tax rates applied to this invoice, if any.



4836
4837
4838
# File 'lib/stripe/resources/invoice.rb', line 4836

def default_tax_rates
  @default_tax_rates
end

#deletedObject (readonly)

Always true for a deleted object



4930
4931
4932
# File 'lib/stripe/resources/invoice.rb', line 4930

def deleted
  @deleted
end

#descriptionObject (readonly)

An arbitrary string attached to the object. Often useful for displaying to users. Referenced as ‘memo’ in the Dashboard.



4838
4839
4840
# File 'lib/stripe/resources/invoice.rb', line 4838

def description
  @description
end

#discountsObject (readonly)

The discounts applied to the invoice. Line item discounts are applied before invoice discounts. Use ‘expand[]=discounts` to expand each discount.



4840
4841
4842
# File 'lib/stripe/resources/invoice.rb', line 4840

def discounts
  @discounts
end

#due_dateObject (readonly)

The date on which payment for this invoice is due. This value will be ‘null` for invoices where `collection_method=charge_automatically`.



4842
4843
4844
# File 'lib/stripe/resources/invoice.rb', line 4842

def due_date
  @due_date
end

#effective_atObject (readonly)

The date when this invoice is in effect. Same as ‘finalized_at` unless overwritten. When defined, this value replaces the system-generated ’Date of issue’ printed on the invoice PDF and receipt.



4844
4845
4846
# File 'lib/stripe/resources/invoice.rb', line 4844

def effective_at
  @effective_at
end

#ending_balanceObject (readonly)

Ending customer balance after the invoice is finalized. Invoices are finalized approximately an hour after successful webhook delivery or when payment collection is attempted for the invoice. If the invoice has not been finalized yet, this will be null.



4846
4847
4848
# File 'lib/stripe/resources/invoice.rb', line 4846

def ending_balance
  @ending_balance
end

Footer displayed on the invoice.



4848
4849
4850
# File 'lib/stripe/resources/invoice.rb', line 4848

def footer
  @footer
end

#from_invoiceObject (readonly)

Details of the invoice that was cloned. See the [revision documentation](stripe.com/docs/invoicing/invoice-revisions) for more details.



4850
4851
4852
# File 'lib/stripe/resources/invoice.rb', line 4850

def from_invoice
  @from_invoice
end

#hosted_invoice_urlObject (readonly)

The URL for the hosted invoice page, which allows customers to view and pay an invoice. If the invoice has not been finalized yet, this will be null.



4852
4853
4854
# File 'lib/stripe/resources/invoice.rb', line 4852

def hosted_invoice_url
  @hosted_invoice_url
end

#idObject (readonly)

Unique identifier for the object. For preview invoices created using the [create preview](stripe.com/docs/api/invoices/create_preview) endpoint, this id will be prefixed with ‘upcoming_in`.



4854
4855
4856
# File 'lib/stripe/resources/invoice.rb', line 4854

def id
  @id
end

#invoice_pdfObject (readonly)

The link to download the PDF for the invoice. If the invoice has not been finalized yet, this will be null.



4856
4857
4858
# File 'lib/stripe/resources/invoice.rb', line 4856

def invoice_pdf
  @invoice_pdf
end

#issuerObject (readonly)

Attribute for field issuer



4858
4859
4860
# File 'lib/stripe/resources/invoice.rb', line 4858

def issuer
  @issuer
end

#last_finalization_errorObject (readonly)

The error encountered during the previous attempt to finalize the invoice. This field is cleared when the invoice is successfully finalized.



4860
4861
4862
# File 'lib/stripe/resources/invoice.rb', line 4860

def last_finalization_error
  @last_finalization_error
end

#latest_revisionObject (readonly)

The ID of the most recent non-draft revision of this invoice



4862
4863
4864
# File 'lib/stripe/resources/invoice.rb', line 4862

def latest_revision
  @latest_revision
end

#linesObject (readonly)

The individual line items that make up the invoice. ‘lines` is sorted as follows: (1) pending invoice items (including prorations) in reverse chronological order, (2) subscription items in reverse chronological order, and (3) invoice items added after invoice creation in chronological order.



4864
4865
4866
# File 'lib/stripe/resources/invoice.rb', line 4864

def lines
  @lines
end

#livemodeObject (readonly)

Has the value ‘true` if the object exists in live mode or the value `false` if the object exists in test mode.



4866
4867
4868
# File 'lib/stripe/resources/invoice.rb', line 4866

def livemode
  @livemode
end

#metadataObject (readonly)

Set of [key-value pairs](stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.



4868
4869
4870
# File 'lib/stripe/resources/invoice.rb', line 4868

def 
  @metadata
end

#next_payment_attemptObject (readonly)

The time at which payment will next be attempted. This value will be ‘null` for invoices where `collection_method=send_invoice`.



4870
4871
4872
# File 'lib/stripe/resources/invoice.rb', line 4870

def next_payment_attempt
  @next_payment_attempt
end

#numberObject (readonly)

A unique, identifying string that appears on emails sent to the customer for this invoice. This starts with the customer’s unique invoice_prefix if it is specified.



4872
4873
4874
# File 'lib/stripe/resources/invoice.rb', line 4872

def number
  @number
end

#objectObject (readonly)

String representing the object’s type. Objects of the same type share the same value.



4874
4875
4876
# File 'lib/stripe/resources/invoice.rb', line 4874

def object
  @object
end

#on_behalf_ofObject (readonly)

The account (if any) for which the funds of the invoice payment are intended. If set, the invoice will be presented with the branding and support information of the specified account. See the [Invoices with Connect](stripe.com/docs/billing/invoices/connect) documentation for details.



4876
4877
4878
# File 'lib/stripe/resources/invoice.rb', line 4876

def on_behalf_of
  @on_behalf_of
end

#parentObject (readonly)

The parent that generated this invoice



4878
4879
4880
# File 'lib/stripe/resources/invoice.rb', line 4878

def parent
  @parent
end

#payment_settingsObject (readonly)

Attribute for field payment_settings



4880
4881
4882
# File 'lib/stripe/resources/invoice.rb', line 4880

def payment_settings
  @payment_settings
end

#paymentsObject (readonly)

Payments for this invoice



4882
4883
4884
# File 'lib/stripe/resources/invoice.rb', line 4882

def payments
  @payments
end

#period_endObject (readonly)

End of the usage period during which invoice items were added to this invoice. This looks back one period for a subscription invoice. Use the [line item period](/api/invoices/line_item#invoice_line_item_object-period) to get the service period for each price.



4884
4885
4886
# File 'lib/stripe/resources/invoice.rb', line 4884

def period_end
  @period_end
end

#period_startObject (readonly)

Start of the usage period during which invoice items were added to this invoice. This looks back one period for a subscription invoice. Use the [line item period](/api/invoices/line_item#invoice_line_item_object-period) to get the service period for each price.



4886
4887
4888
# File 'lib/stripe/resources/invoice.rb', line 4886

def period_start
  @period_start
end

#post_payment_credit_notes_amountObject (readonly)

Total amount of all post-payment credit notes issued for this invoice.



4888
4889
4890
# File 'lib/stripe/resources/invoice.rb', line 4888

def post_payment_credit_notes_amount
  @post_payment_credit_notes_amount
end

#pre_payment_credit_notes_amountObject (readonly)

Total amount of all pre-payment credit notes issued for this invoice.



4890
4891
4892
# File 'lib/stripe/resources/invoice.rb', line 4890

def pre_payment_credit_notes_amount
  @pre_payment_credit_notes_amount
end

#receipt_numberObject (readonly)

This is the transaction number that appears on email receipts sent for this invoice.



4892
4893
4894
# File 'lib/stripe/resources/invoice.rb', line 4892

def receipt_number
  @receipt_number
end

#renderingObject (readonly)

The rendering-related settings that control how the invoice is displayed on customer-facing surfaces such as PDF and Hosted Invoice Page.



4894
4895
4896
# File 'lib/stripe/resources/invoice.rb', line 4894

def rendering
  @rendering
end

#shipping_costObject (readonly)

The details of the cost of shipping, including the ShippingRate applied on the invoice.



4896
4897
4898
# File 'lib/stripe/resources/invoice.rb', line 4896

def shipping_cost
  @shipping_cost
end

#shipping_detailsObject (readonly)

Shipping details for the invoice. The Invoice PDF will use the ‘shipping_details` value if it is set, otherwise the PDF will render the shipping address from the customer.



4898
4899
4900
# File 'lib/stripe/resources/invoice.rb', line 4898

def shipping_details
  @shipping_details
end

#starting_balanceObject (readonly)

Starting customer balance before the invoice is finalized. If the invoice has not been finalized yet, this will be the current customer balance. For revision invoices, this also includes any customer balance that was applied to the original invoice.



4900
4901
4902
# File 'lib/stripe/resources/invoice.rb', line 4900

def starting_balance
  @starting_balance
end

#statement_descriptorObject (readonly)

Extra information about an invoice for the customer’s credit card statement.



4902
4903
4904
# File 'lib/stripe/resources/invoice.rb', line 4902

def statement_descriptor
  @statement_descriptor
end

#statusObject (readonly)

The status of the invoice, one of ‘draft`, `open`, `paid`, `uncollectible`, or `void`. [Learn more](stripe.com/docs/billing/invoices/workflow#workflow-overview)



4904
4905
4906
# File 'lib/stripe/resources/invoice.rb', line 4904

def status
  @status
end

#status_transitionsObject (readonly)

Attribute for field status_transitions



4906
4907
4908
# File 'lib/stripe/resources/invoice.rb', line 4906

def status_transitions
  @status_transitions
end

#subtotalObject (readonly)

Total of all subscriptions, invoice items, and prorations on the invoice before any invoice level discount or exclusive tax is applied. Item discounts are already incorporated



4908
4909
4910
# File 'lib/stripe/resources/invoice.rb', line 4908

def subtotal
  @subtotal
end

#subtotal_excluding_taxObject (readonly)

The integer amount in cents (or local equivalent) representing the subtotal of the invoice before any invoice level discount or tax is applied. Item discounts are already incorporated



4910
4911
4912
# File 'lib/stripe/resources/invoice.rb', line 4910

def subtotal_excluding_tax
  @subtotal_excluding_tax
end

#test_clockObject (readonly)

ID of the test clock this invoice belongs to.



4912
4913
4914
# File 'lib/stripe/resources/invoice.rb', line 4912

def test_clock
  @test_clock
end

#threshold_reasonObject (readonly)

Attribute for field threshold_reason



4914
4915
4916
# File 'lib/stripe/resources/invoice.rb', line 4914

def threshold_reason
  @threshold_reason
end

#totalObject (readonly)

Total after discounts and taxes.



4916
4917
4918
# File 'lib/stripe/resources/invoice.rb', line 4916

def total
  @total
end

#total_discount_amountsObject (readonly)

The aggregate amounts calculated per discount across all line items.



4918
4919
4920
# File 'lib/stripe/resources/invoice.rb', line 4918

def total_discount_amounts
  @total_discount_amounts
end

#total_excluding_taxObject (readonly)

The integer amount in cents (or local equivalent) representing the total amount of the invoice including all discounts but excluding all tax.



4920
4921
4922
# File 'lib/stripe/resources/invoice.rb', line 4920

def total_excluding_tax
  @total_excluding_tax
end

#total_margin_amountsObject (readonly)

The aggregate amounts calculated per margin across all line items.



4922
4923
4924
# File 'lib/stripe/resources/invoice.rb', line 4922

def total_margin_amounts
  @total_margin_amounts
end

#total_pretax_credit_amountsObject (readonly)

Contains pretax credit amounts (ex: discount, credit grants, etc) that apply to this invoice. This is a combined list of total_pretax_credit_amounts across all invoice line items.



4924
4925
4926
# File 'lib/stripe/resources/invoice.rb', line 4924

def total_pretax_credit_amounts
  @total_pretax_credit_amounts
end

#total_taxesObject (readonly)

The aggregate tax information of all line items.



4926
4927
4928
# File 'lib/stripe/resources/invoice.rb', line 4926

def total_taxes
  @total_taxes
end

#webhooks_delivered_atObject (readonly)

Invoices are automatically paid or sent 1 hour after webhooks are delivered, or until all webhook delivery attempts have [been exhausted](stripe.com/docs/billing/webhooks#understand). This field tracks the time when webhooks for this invoice were successfully delivered. If the invoice had no webhooks to deliver, this will be set while the invoice is being created.



4928
4929
4930
# File 'lib/stripe/resources/invoice.rb', line 4928

def webhooks_delivered_at
  @webhooks_delivered_at
end

Class Method Details

.add_lines(invoice, params = {}, opts = {}) ⇒ Object

Adds multiple line items to an invoice. This is only possible when an invoice is still a draft.



4943
4944
4945
4946
4947
4948
4949
4950
# File 'lib/stripe/resources/invoice.rb', line 4943

def self.add_lines(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/add_lines", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.attach_payment(invoice, params = {}, opts = {}) ⇒ Object

Attaches a PaymentIntent or an Out of Band Payment to the invoice, adding it to the list of payments.

For the PaymentIntent, when the PaymentIntent’s status changes to succeeded, the payment is credited to the invoice, increasing its amount_paid. When the invoice is fully paid, the invoice’s status becomes paid.

If the PaymentIntent’s status is already succeeded when it’s attached, it’s credited to the invoice immediately.

See: [Partial payments](docs.stripe.com/docs/invoicing/partial-payments) to learn more.



4981
4982
4983
4984
4985
4986
4987
4988
# File 'lib/stripe/resources/invoice.rb', line 4981

def self.attach_payment(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/attach_payment", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.create(params = {}, opts = {}) ⇒ Object

This endpoint creates a draft invoice for a given customer. The invoice remains a draft until you [finalize the invoice, which allows you to [pay](#pay_invoice) or <a href=“#send_invoice”>send](docs.stripe.com/api#finalize_invoice) the invoice to your customers.



4991
4992
4993
# File 'lib/stripe/resources/invoice.rb', line 4991

def self.create(params = {}, opts = {})
  request_stripe_object(method: :post, path: "/v1/invoices", params: params, opts: opts)
end

.create_preview(params = {}, opts = {}) ⇒ Object

At any time, you can preview the upcoming invoice for a subscription or subscription schedule. This will show you all the charges that are pending, including subscription renewal charges, invoice item charges, etc. It will also show you any discounts that are applicable to the invoice.

You can also preview the effects of creating or updating a subscription or subscription schedule, including a preview of any prorations that will take place. To ensure that the actual proration is calculated exactly the same as the previewed proration, you should pass the subscription_details.proration_date parameter when doing the actual subscription update.

The recommended way to get only the prorations being previewed on the invoice is to consider line items where parent.subscription_item_details.proration is true.

Note that when you are viewing an upcoming invoice, you are simply viewing a preview – the invoice has not yet been created. As such, the upcoming invoice will not show up in invoice listing calls, and you cannot use the API to pay or edit the invoice. If you want to change the amount that your customer will be billed, you can add, remove, or update pending invoice items, or update the customer’s discount.

Note: Currency conversion calculations use the latest exchange rates. Exchange rates may vary between the time of the preview and the time of the actual invoice creation. [Learn more](docs.stripe.com/currencies/conversions)



5004
5005
5006
5007
5008
5009
5010
5011
# File 'lib/stripe/resources/invoice.rb', line 5004

def self.create_preview(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: "/v1/invoices/create_preview",
    params: params,
    opts: opts
  )
end

.delete(invoice, params = {}, opts = {}) ⇒ Object

Permanently deletes a one-off invoice draft. This cannot be undone. Attempts to delete invoices that are no longer in a draft state will fail; once an invoice has been finalized or if an invoice is for a subscription, it must be [voided](docs.stripe.com/api#void_invoice).



5014
5015
5016
5017
5018
5019
5020
5021
# File 'lib/stripe/resources/invoice.rb', line 5014

def self.delete(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :delete,
    path: format("/v1/invoices/%<invoice>s", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.field_remappingsObject



5235
5236
5237
# File 'lib/stripe/resources/invoice.rb', line 5235

def self.field_remappings
  @field_remappings = {}
end

.finalize_invoice(invoice, params = {}, opts = {}) ⇒ Object

Stripe automatically finalizes drafts before sending and attempting payment on invoices. However, if you’d like to finalize a draft invoice manually, you can do so using this method.



5044
5045
5046
5047
5048
5049
5050
5051
# File 'lib/stripe/resources/invoice.rb', line 5044

def self.finalize_invoice(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/finalize", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.inner_class_typesObject



5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
# File 'lib/stripe/resources/invoice.rb', line 5209

def self.inner_class_types
  @inner_class_types = {
    amounts_due: AmountsDue,
    automatic_tax: AutomaticTax,
    confirmation_secret: ConfirmationSecret,
    custom_fields: CustomField,
    customer_address: CustomerAddress,
    customer_shipping: CustomerShipping,
    customer_tax_ids: CustomerTaxId,
    from_invoice: FromInvoice,
    issuer: Issuer,
    last_finalization_error: LastFinalizationError,
    parent: Parent,
    payment_settings: PaymentSettings,
    rendering: Rendering,
    shipping_cost: ShippingCost,
    shipping_details: ShippingDetails,
    status_transitions: StatusTransitions,
    threshold_reason: ThresholdReason,
    total_discount_amounts: TotalDiscountAmount,
    total_margin_amounts: TotalMarginAmount,
    total_pretax_credit_amounts: TotalPretaxCreditAmount,
    total_taxes: TotalTax,
  }
end

.list(params = {}, opts = {}) ⇒ Object

You can list all invoices, or list the invoices for a specific customer. The invoices are returned sorted by creation date, with the most recently created invoices appearing first.



5054
5055
5056
# File 'lib/stripe/resources/invoice.rb', line 5054

def self.list(params = {}, opts = {})
  request_stripe_object(method: :get, path: "/v1/invoices", params: params, opts: opts)
end

.mark_uncollectible(invoice, params = {}, opts = {}) ⇒ Object

Marking an invoice as uncollectible is useful for keeping track of bad debts that can be written off for accounting purposes.



5069
5070
5071
5072
5073
5074
5075
5076
# File 'lib/stripe/resources/invoice.rb', line 5069

def self.mark_uncollectible(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/mark_uncollectible", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.object_nameObject



46
47
48
# File 'lib/stripe/resources/invoice.rb', line 46

def self.object_name
  "invoice"
end

.pay(invoice, params = {}, opts = {}) ⇒ Object

Stripe automatically creates and then attempts to collect payment on invoices for customers on subscriptions according to your [subscriptions settings](dashboard.stripe.com/account/billing/automatic). However, if you’d like to attempt payment on an invoice out of the normal collection schedule or for some other reason, you can do so.



5089
5090
5091
5092
5093
5094
5095
5096
# File 'lib/stripe/resources/invoice.rb', line 5089

def self.pay(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/pay", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.remove_lines(invoice, params = {}, opts = {}) ⇒ Object

Removes multiple line items from an invoice. This is only possible when an invoice is still a draft.



5109
5110
5111
5112
5113
5114
5115
5116
# File 'lib/stripe/resources/invoice.rb', line 5109

def self.remove_lines(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/remove_lines", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.search(params = {}, opts = {}) ⇒ Object



5118
5119
5120
# File 'lib/stripe/resources/invoice.rb', line 5118

def self.search(params = {}, opts = {})
  request_stripe_object(method: :get, path: "/v1/invoices/search", params: params, opts: opts)
end

.search_auto_paging_each(params = {}, opts = {}, &blk) ⇒ Object



5122
5123
5124
# File 'lib/stripe/resources/invoice.rb', line 5122

def self.search_auto_paging_each(params = {}, opts = {}, &blk)
  search(params, opts).auto_paging_each(&blk)
end

.send_invoice(invoice, params = {}, opts = {}) ⇒ Object

Stripe will automatically send invoices to customers according to your [subscriptions settings](dashboard.stripe.com/account/billing/automatic). However, if you’d like to manually send an invoice to your customer out of the normal schedule, you can do so. When sending invoices that have already been paid, there will be no reference to the payment in the email.

Requests made in test-mode result in no emails being sent, despite sending an invoice.sent event.



5141
5142
5143
5144
5145
5146
5147
5148
# File 'lib/stripe/resources/invoice.rb', line 5141

def self.send_invoice(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/send", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.update(invoice, params = {}, opts = {}) ⇒ Object

Draft invoices are fully editable. Once an invoice is [finalized](docs.stripe.com/docs/billing/invoices/workflow#finalized), monetary values, as well as collection_method, become uneditable.

If you would like to stop the Stripe Billing engine from automatically finalizing, reattempting payments on, sending reminders for, or [automatically reconciling](docs.stripe.com/docs/billing/invoices/reconciliation) invoices, pass auto_advance=false.



5156
5157
5158
5159
5160
5161
5162
5163
# File 'lib/stripe/resources/invoice.rb', line 5156

def self.update(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.update_lines(invoice, params = {}, opts = {}) ⇒ Object

Updates multiple line items on an invoice. This is only possible when an invoice is still a draft.



5176
5177
5178
5179
5180
5181
5182
5183
# File 'lib/stripe/resources/invoice.rb', line 5176

def self.update_lines(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/update_lines", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

.void_invoice(invoice, params = {}, opts = {}) ⇒ Object

Mark a finalized invoice as void. This cannot be undone. Voiding an invoice is similar to [deletion](docs.stripe.com/api#delete_invoice), however it only applies to finalized invoices and maintains a papertrail where the invoice can still be found.

Consult with local regulations to determine whether and how an invoice might be amended, canceled, or voided in the jurisdiction you’re doing business in. You might need to [issue another invoice or <a href=“#create_credit_note”>credit note](docs.stripe.com/api#create_invoice) instead. Stripe recommends that you consult with your legal counsel for advice specific to your business.



5200
5201
5202
5203
5204
5205
5206
5207
# File 'lib/stripe/resources/invoice.rb', line 5200

def self.void_invoice(invoice, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/void", { invoice: CGI.escape(invoice) }),
    params: params,
    opts: opts
  )
end

Instance Method Details

#add_lines(params = {}, opts = {}) ⇒ Object

Adds multiple line items to an invoice. This is only possible when an invoice is still a draft.



4933
4934
4935
4936
4937
4938
4939
4940
# File 'lib/stripe/resources/invoice.rb', line 4933

def add_lines(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/add_lines", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#attach_payment(params = {}, opts = {}) ⇒ Object

Attaches a PaymentIntent or an Out of Band Payment to the invoice, adding it to the list of payments.

For the PaymentIntent, when the PaymentIntent’s status changes to succeeded, the payment is credited to the invoice, increasing its amount_paid. When the invoice is fully paid, the invoice’s status becomes paid.

If the PaymentIntent’s status is already succeeded when it’s attached, it’s credited to the invoice immediately.

See: [Partial payments](docs.stripe.com/docs/invoicing/partial-payments) to learn more.



4962
4963
4964
4965
4966
4967
4968
4969
# File 'lib/stripe/resources/invoice.rb', line 4962

def attach_payment(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/attach_payment", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#delete(params = {}, opts = {}) ⇒ Object

Permanently deletes a one-off invoice draft. This cannot be undone. Attempts to delete invoices that are no longer in a draft state will fail; once an invoice has been finalized or if an invoice is for a subscription, it must be [voided](docs.stripe.com/api#void_invoice).



5024
5025
5026
5027
5028
5029
5030
5031
# File 'lib/stripe/resources/invoice.rb', line 5024

def delete(params = {}, opts = {})
  request_stripe_object(
    method: :delete,
    path: format("/v1/invoices/%<invoice>s", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#finalize_invoice(params = {}, opts = {}) ⇒ Object

Stripe automatically finalizes drafts before sending and attempting payment on invoices. However, if you’d like to finalize a draft invoice manually, you can do so using this method.



5034
5035
5036
5037
5038
5039
5040
5041
# File 'lib/stripe/resources/invoice.rb', line 5034

def finalize_invoice(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/finalize", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#mark_uncollectible(params = {}, opts = {}) ⇒ Object

Marking an invoice as uncollectible is useful for keeping track of bad debts that can be written off for accounting purposes.



5059
5060
5061
5062
5063
5064
5065
5066
# File 'lib/stripe/resources/invoice.rb', line 5059

def mark_uncollectible(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/mark_uncollectible", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#pay(params = {}, opts = {}) ⇒ Object

Stripe automatically creates and then attempts to collect payment on invoices for customers on subscriptions according to your [subscriptions settings](dashboard.stripe.com/account/billing/automatic). However, if you’d like to attempt payment on an invoice out of the normal collection schedule or for some other reason, you can do so.



5079
5080
5081
5082
5083
5084
5085
5086
# File 'lib/stripe/resources/invoice.rb', line 5079

def pay(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/pay", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#remove_lines(params = {}, opts = {}) ⇒ Object

Removes multiple line items from an invoice. This is only possible when an invoice is still a draft.



5099
5100
5101
5102
5103
5104
5105
5106
# File 'lib/stripe/resources/invoice.rb', line 5099

def remove_lines(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/remove_lines", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#send_invoice(params = {}, opts = {}) ⇒ Object

Stripe will automatically send invoices to customers according to your [subscriptions settings](dashboard.stripe.com/account/billing/automatic). However, if you’d like to manually send an invoice to your customer out of the normal schedule, you can do so. When sending invoices that have already been paid, there will be no reference to the payment in the email.

Requests made in test-mode result in no emails being sent, despite sending an invoice.sent event.



5129
5130
5131
5132
5133
5134
5135
5136
# File 'lib/stripe/resources/invoice.rb', line 5129

def send_invoice(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/send", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#update_lines(params = {}, opts = {}) ⇒ Object

Updates multiple line items on an invoice. This is only possible when an invoice is still a draft.



5166
5167
5168
5169
5170
5171
5172
5173
# File 'lib/stripe/resources/invoice.rb', line 5166

def update_lines(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/update_lines", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#void_invoice(params = {}, opts = {}) ⇒ Object

Mark a finalized invoice as void. This cannot be undone. Voiding an invoice is similar to [deletion](docs.stripe.com/api#delete_invoice), however it only applies to finalized invoices and maintains a papertrail where the invoice can still be found.

Consult with local regulations to determine whether and how an invoice might be amended, canceled, or voided in the jurisdiction you’re doing business in. You might need to [issue another invoice or <a href=“#create_credit_note”>credit note](docs.stripe.com/api#create_invoice) instead. Stripe recommends that you consult with your legal counsel for advice specific to your business.



5188
5189
5190
5191
5192
5193
5194
5195
# File 'lib/stripe/resources/invoice.rb', line 5188

def void_invoice(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/invoices/%<invoice>s/void", { invoice: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end