DefinitelyTyped/stripe/stripe-node.d.ts

3108 lines
136 KiB
TypeScript
Raw Blame History

// Type definitions for stripe-node
// Project: https://github.com/stripe/stripe-node/
// Definitions by: William Johnston <https://github.com/wjohnsto>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module 'stripe' {
var out: typeof StripeNode.Stripe;
export = out;
}
declare module StripeNode {
class Stripe {
static DEFAULT_HOST: string;
static DEFAULT_PORT: string;
static DEFAULT_BASE_PATH: string;
static DEFAULT_API_VERSION: string;
static DEFAULT_TIMEOUT: number;
static PACKAGE_VERSION: string;
static USER_AGENT: {
bindings_version: string;
lang: string;
lang_version: string;
platform: string;
publisher: string;
uname: string;
};
static USER_AGENT_SERIALIZED: string;
static resources: typeof resources;
static StripeResource: typeof StripeResource;
account: resources.Account;
balance: resources.Balance;
charges: resources.Charges;
coupons: resources.Coupons;
customers: resources.Customers;
events: resources.Events;
invoices: resources.Invoices;
invoiceItems: resources.InvoiceItems;
plans: resources.Plans;
recipientCards: resources.RecipientCards;
recipients: resources.Recipients;
tokens: resources.Tokens;
yransfers: resources.Transfers;
applicationFees: resources.ApplicationFees;
fileUploads: resources.FileUploads;
bitcoinReceivers: resources.BitcoinReceivers;
customerCards: resources.CustomerCards;
customerSubscriptions: resources.CustomerSubscriptions;
chargeRefunds: resources.ChargeRefunds;
applicationFeeRefunds: resources.ApplicationFeeRefunds;
transferReversals: resources.TransferReversals;
constructor(apiKey: string, version?: string);
setHost(host: string): void;
setHost(host: string, port: string|number): void;
setHost(host: string, port: string|number, protocol: string): void;
setProtocol(protocol: string): void;
setPort(port: string|number): void;
setApiVersion(version?: string): void;
setApiKey(key?: string): void;
setTimeout(timeout?: number): void;
setHttpAgent(agent: string): void;
getConstant(c: string): any;
getClientUserAgent(response: (userAgent: string) => void): void;
}
module account { }
module balance {
interface IBalanceTransaction {
id: string;
/**
* Value is 'balance_transaction'
*/
object: string;
/**
* Gross amount of the transaction, in cents.
*/
amount: number;
/**
* The date the transaction<6F>s net funds will become available in the Stripe balance.
*/
available_on: number;
created: number;
/**
* Three-letter ISO currency code representing the currency.
*/
currency: string;
/**
* Fee (in cents) paid for this transaction
*/
fee: number;
/**
* Detailed breakdown of fees (in cents) paid for this transaction
*/
fee_details: Array<{
amount: number;
/**
* Three-letter ISO currency code representing the currency of the amount that was disputed.
*/
currency: string;
/**
* Type of the fee, one of: application_fee, stripe_fee or tax.
*/
type: string;
application: string;
description: string;
}>;
/**
* Net amount of the transaction, in cents.
*/
net: number;
/**
* If the transaction<6F>s net funds are available in the Stripe balance yet. Either available or pending.
*/
status: string;
/**
* Type of the transaction, one of: charge, refund, adjustment, application_fee,
* application_fee_refund, transfer, transfer_cancel or transfer_failure.
*/
type: string;
description?: string;
/**
* The Stripe object this transaction is related to.
*/
source?: IPaymentToken | ICard;
source_transfers: IList<transfers.ITransfer>;
}
}
module charges {
/**
* To charge a credit or a debit card, you create a charge object. You can retrieve and refund individual
* charges as well as list all charges. Charges are identified by a unique random ID.
*/
interface ICharge {
id: string;
/**
* Value is 'charge'
*/
object: string;
livemode: boolean;
/**
* Amount charged in cents, positive integer or zero.
*/
amount: number;
/**
* If the charge was created without capturing, this boolean represents whether or not it is
* still uncaptured or has since been captured.
*/
captured: boolean;
created: number;
/**
* Three-letter ISO currency code representing the currency in which the charge was made.
*/
currency: string;
paid: boolean;
/**
* Whether or not the charge has been fully refunded. If the charge is only partially refunded,
* this attribute will still be false.
*/
refunded: boolean;
/**
* A list of refunds that have been applied to the charge.
*/
refunds: IList<chargeRefunds.IRefund>;
/**
* For most Stripe users, the source of every charge is a credit or debit card.
* This hash is then the card object describing that card.
*/
source: ICard;
/**
* The status of the payment is either succeeded or failed.
*/
status: string;
/**
* Amount in cents refunded (can be less than the amount attribute on the charge if a partial refund was issued).
*/
amount_refunded: number;
/**
* ID of the balance transaction that describes the impact of this charge on your account balance (not including refunds or disputes).
*/
balance_transaction: string;
/**
* ID of the customer this charge is for if one exists.
*/
customer: string;
description?: string;
/**
* Details about the dispute if the charge has been disputed.
*/
dispute?: IDispute;
/**
* Error code explaining reason for charge failure if available (see the errors section for a list of
* codes: https://stripe.com/docs/api#errors).
*/
failure_code: string;
/**
* Message to user further explaining reason for charge failure if available.
*/
failure_message: string;
/**
* ID of the invoice this charge is for if one exists.
*/
invoice: string;
metadata: IMetadata;
/**
* This is the email address that the receipt for this charge was sent to.
*/
receipt_email: string;
/**
* This is the transaction number that appears on email receipts sent for this charge.
*/
receipt_number: string;
application_fee?: string;
/**
* Hash with information on fraud assessments for the charge.
*/
fraud_details: {
/**
* Assessments reported by you have the key user_report and, if set, possible values of safe and fraudulent.
*/
user_report?: string;
/**
* Assessments from Stripe have the key stripe_report and, if set, the value fraudulent.
*/
stripe_report?: string;
};
/**
* Shipping information for the charge.
*/
shipping?: IShippingInformation;
}
}
module coupons {
/**
* A discount represents the actual application of a coupon to a particular customer. It contains information
* about when the discount began and when it will end.
*/
interface IDiscount {
/**
* Value is 'discount'
*/
object: string;
/**
* Hash describing the coupon applied to create this discount
*/
coupon: ICoupon;
customer: string;
/**
* Date that the coupon was applied
*/
start: number;
/**
* If the coupon has a duration of once or repeating, the date that this discount will end. If the coupon
* used has a forever duration, this attribute will be null.
*/
end: number;
/**
* The subscription that this coupon is applied to, if it is applied to a particular subscription
*/
subscription: string;
}
/**
* A coupon contains information about a percent-off or amount-off discount you might want to apply to a customer.
* Coupons only apply to invoices; they do not apply to one-off charges.
*/
interface ICoupon {
id: string;
/**
* Value is 'coupon'
*/
object: string;
livemode: boolean;
created: number;
/**
* One of forever, once, and repeating. Describes how long a customer who applies this coupon will get the discount.
*/
duration: string;
/**
* Amount (in the currency specified) that will be taken off the subtotal of any invoices for this customer.
*/
amount_off: number;
/**
* If amount_off has been set, the currency of the amount to take off.
*/
currency: string;
/**
* If duration is repeating, the number of months the coupon applies. Null if coupon duration is forever or once.
*/
duration_in_months: number;
/**
* Maximum number of times this coupon can be redeemed, in total, before it is no longer valid.
*/
max_redemptions: number;
/**
* A set of key/value pairs that you can attach to a coupon object. It can be useful for storing
* additional information about the coupon in a structured format.
*/
metadata: IMetadata;
/**
* Percent that will be taken off the subtotal of any invoices for this customer for the duration
* of the coupon. For example, a coupon with percent_off of 50 will make a $100 invoice $50 instead.
*/
percent_off: number;
/**
* Date after which the coupon can no longer be redeemed
*/
redeem_by: number;
/**
* Number of times this coupon has been applied to a customer.
*/
times_redeemed: number;
/**
* Taking account of the above properties, whether this coupon can still be applied to a customer
*/
valid: boolean;
}
}
module customers {
/**
* Customer objects allow you to perform recurring charges and track multiple charges that are associated
* with the same customer. The API allows you to create, delete, and update your customers. You can
* retrieve individual customers as well as a list of all your customers.
*/
interface ICustomer {
id: string;
/**
* Value is 'customer'
*/
object: string;
livemode: boolean;
created: number;
/**
* Current balance, if any, being stored on the customer<65>s account. If negative, the customer has credit to apply to
* the next invoice. If positive, the customer has an amount owed that will be added to the next invoice. The balance
* does not refer to any unpaid invoices; it solely takes into account amounts that have yet to be successfully applied
* to any invoice. This balance is only taken into account for recurring charges.
*/
account_balance?: number;
/**
* The currency the customer can be charged in for recurring billing purposes (subscriptions, invoices, invoice items).
*/
currency: string;
/**
* ID of the default source attached to this customer.
*/
default_source: string;
/**
* Whether or not the latest charge for the customer<65>s latest invoice has failed
*/
delinquent: boolean;
/**
* Describes the current discount active on the customer, if there is one.
*/
discount: coupons.IDiscount;
description?: string;
email?: string;
/**
* A set of key/value pairs that you can attach to a customer object. It can be useful for storing
* additional information about the customer in a structured format.
*/
metadata?: IMetadata;
sources?: IList<ICard | bitcoinReceivers.IBitcoinReceiver>;
/**
* The customer<65>s current subscriptions, if any
*/
subscriptions: IList<customerSubscriptions.ISubscription>;
}
}
module events { }
module invoices {
/**
* Invoices are statements of what a customer owes for a particular billing period, including subscriptions,
* invoice items, and any automatic proration adjustments if necessary. Once an invoice is created, payment
* is automatically attempted. Note that the payment, while automatic, does not happen exactly at the time of
* invoice creation. If you have configured webhooks, the invoice will wait until one hour after the last
* webhook is successfully sent (or the last webhook times out after failing). Any customer credit on the
* account is applied before determining how much is due for that invoice (the amount that will be actually
* charged). If the amount due for the invoice is less than 50 cents (the minimum for a charge), we add the
* amount to the customer's running account balance to be added to the next invoice. If this amount is
* negative, it will act as a credit to offset the next invoice. Note that the customer account balance does
* not include unpaid invoices; it only includes balances that need to be taken into account when calculating
* the amount due for the next invoice.
*/
interface IInvoice {
id: string;
/**
* Value is 'invoice'
*/
object: string;
livemode: boolean;
/**
* Final amount due at this time for this invoice. If the invoice<63>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.
*/
amount_due: number;
/**
* 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.
*/
attempt_count: number;
/**
* Whether or not 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.
*/
attempted: boolean;
/**
* Whether or not the invoice is still trying to collect payment. An invoice is closed if it<69>s either paid or
* it has been marked closed. A closed invoice will no longer attempt to collect payment.
*/
closed: boolean;
currency: string;
customer: string;
date: number;
/**
* Whether or not the invoice has been forgiven. Forgiving an invoice instructs us to update the subscription
* status as if the invoice were succcessfully paid. Once an invoice has been forgiven, it cannot be unforgiven
* or reopened
*/
forgiven: boolean;
/**
* The individual line items that make up the invoice
*/
lines: IList<invoiceItems.InvoiceLineItem>;
/**
* Whether or not payment was successfully collected for this invoice. An invoice can be paid (most commonly)
* with a charge or with credit from the customer<65>s account balance.
*/
paid: boolean;
/**
* End of the usage period during which invoice items were added to this invoice
*/
period_end: number;
/**
* Start of the usage period during which invoice items were added to this invoice
*/
period_start: number;
/**
* Starting customer balance before attempting to pay invoice. If the invoice has not been attempted yet,
* this will be the current customer balance.
*/
starting_balance: number;
/**
* Total of all subscriptions, invoice items, and prorations on the invoice before any discount is applied
*/
subtotal: number;
/**
* Total after discount
*/
total: number;
/**
* The fee in cents that will be applied to the invoice and transferred to the application owner<65>s
* Stripe account when the invoice is paid.
*/
application_fee: number;
/**
* ID of the latest charge generated for this invoice, if any.
*/
charge: string;
description: string;
discount: coupons.IDiscount;
/**
* Ending customer balance after attempting to pay invoice. If the invoice has not been attempted yet,
* this will be null.
*/
ending_balance: number;
/**
* The time at which payment will next be attempted.
*/
next_payment_attempt: number;
/**
* This is the transaction number that appears on email receipts sent for this invoice.
*/
receipt_number: string;
/**
* Extra information about an invoice for the customer<65>s credit card statement.
*/
statement_descriptor: string;
/**
* The subscription that this invoice was prepared for, if any.
*/
subscription: string;
/**
* The time at which webhooks for this invoice were successfully delivered (if the invoice had no webhooks to
* deliver, this will match date). Invoice payment is delayed until webhooks are delivered, or until all webhook
* delivery attempts have been exhausted.
*/
webhooks_delivered_at: number;
/**
* A set of key/value pairs that you can attach to an invoice object. It can be useful for storing additional
* information about the invoice in a structured format.
*/
metadata: IMetadata;
/**
* The amount of tax included in the total, calculated from tax_percent and the subtotal. If no tax_percent
* is defined, this value will be null.
*/
tax: number;
/**
* This percentage of the subtotal has been added to the total amount of the invoice, including invoice line
* items and discounts. This field is inherited from the subscription<6F>s tax_percent field, but can be changed
* before the invoice is paid. This field defaults to null.
*/
tax_percent: number;
}
}
module invoiceItems {
interface InvoiceLineItem {
/**
* The ID of the source of this line item, either an invoice item or a subscription
*/
id: string;
/**
* Value is 'line_item'
*/
object: string;
/**
* Whether or not this is a test line item
*/
livemode: boolean;
/**
* The amount, in cents
*/
amount: number;
currency: string;
/**
* If true, discounts will apply to this line item. Always false for prorations.
*/
discountable: boolean;
/**
* The period this line_item covers
*/
period: {
/**
* The period start date
*/
start: number;
/**
* The period end date
*/
end: number;
};
/**
* Whether or not this is a proration
*/
proration: boolean;
/**
* A string identifying the type of the source of this line item, either an invoiceitem or a subscription
*/
type: string;
/**
* A text description of the line item, if the line item is an invoice item
*/
description: string;
/**
* Key-value pairs attached to the line item, if the line item is an invoice item
*/
metadata: IMetadata;
/**
* The plan of the subscription, if the line item is a subscription or a proration
*/
plan: plans.IPlan;
/**
* The quantity of the subscription, if the line item is a subscription or a proration
*/
quantity: number;
/**
* When type is invoiceitem, the subscription that the invoice item pertains to, if any. Left blank when
* type is already subscription, as it<69>d be redundant with id.
*/
subscription: string;
}
}
module plans {
/**
* A subscription plan contains the pricing information for different products and feature levels on your site.
* For example, you might have a $10/month plan for basic features and a different $20/month plan for premium features.
*/
interface IPlan {
id: string;
/**
* Value is 'plan'
*/
object: string;
livemode: boolean;
/**
* The amount in cents to be charged on the interval specified
*/
amount: number;
created: number;
/**
* Currency in which subscription will be charged
*/
currency: string;
/**
* One of day, week, month or year. The frequency with which a subscription should be billed.
*/
interval: string;
/**
* The number of intervals (specified in the interval property) between each subscription billing. For example,
* interval=month and interval_count=3 bills every 3 months.
*/
interval_count: number;
/**
* Display name of the plan
*/
name: string;
/**
* A set of key/value pairs that you can attach to a plan object. It can be useful for storing additional information
* about the plan in a structured format.
*/
metadata: IMetadata;
/**
* Number of trial period days granted when subscribing a customer to this plan. Null if the plan has no trial period.
*/
trial_period_days: number;
/**
* Extra information about a charge for the customer<65>s credit card statement.
*/
statement_descriptor: string;
}
}
module recipientCards { }
module recipients { }
module tokens { }
module transfers {
interface ITransfer {
id: string;
object: string;
livemode: boolean;
/**
* Amount (in cents) to be transferred to your bank account
*/
amount: number;
/**
* Time that this record of the transfer was first created.
*/
created: number;
/**
* Three-letter ISO currency code representing the currency.
*/
currency: string;
/**
* Date the transfer is scheduled to arrive in the bank. This doesn<73>t factor in delays like weekends or bank holidays.
*/
date: number;
/**
* A list of reversals that have been applied to the transfer.
*/
reversals: IList<IReversal>;
/**
* Whether or not the transfer has been fully reversed. If the transfer is only partially reversed, this attribute
* will still be false.
*/
reversed: boolean;
/**
* Current status of the transfer (paid, pending, canceled or failed). A transfer will be pending until it is submitted, at which
* point it becomes paid. If it does not go through successfully, its status will change to failed or canceled.
*/
status: string;
/**
* The type of this type of this transfer. Can be card or bank_account.
*/
type: string;
/**
* Amount in cents reversed (can be less than the amount attribute on the transfer if a partial reversal was issued).
*/
amount_reversed: number;
/**
* Balance transaction that describes the impact of this transfer on your account balance.
*/
balance_transaction: string;
/**
* Internal-only description of the transfer
*/
description: string;
/**
* Error code explaining reason for transfer failure if available. See Types of transfer failures for a
* list of failure codes: https://stripe.com/docs/api#transfer_failures
*/
failure_code: string;
/**
* Message to user further explaining reason for transfer failure if available.
*/
failure_message: string;
metadata: IMetadata;
application_fee: string;
/**
* Hash describing the bank account this transfer was sent to
*/
bank_account: IBankAccount;
/**
* Hash describing the debit card this transfer was sent to
*/
card: ICard;
/**
* ID of the recipient this transfer is for if one exists. Transfers to your bank account do not have a recipient.
*/
recipient: string;
source_transaction: string;
/**
* Extra information about a transfer to be displayed on the user<65>s bank statement.
*/
statement_descriptor: string;
}
}
module applicationFees { }
module fileUploads { }
module bitcoinReceivers {
/**
* A Bitcoin receiver wraps a Bitcoin address so that a customer can push a payment to you. This guide describes how to use
* receivers to create Bitcoin payments.
*/
interface IBitcoinReceiver {
id: string;
/**
* Value is 'bitcoin_receiver'
*/
object: string;
livemode: boolean;
/**
* True when this bitcoin receiver has received a non-zero amount of bitcoin.
*/
active: boolean;
/**
* The amount of currency that you are collecting as payment.
*/
amount: number;
/**
* The amount of currency to which bitcoin_amount_received has been converted.
*/
amount_received: number;
/**
* The amount of bitcoin that the customer should send to fill the receiver. The bitcoin_amount is denominated in Satoshi:
* there are 10^8 Satoshi in one bitcoin.
*/
bitcoin_amount: number;
/**
* The amount of bitcoin that has been sent by the customer to this receiver.
*/
bitcoin_amount_received: number;
/**
* This URI can be displayed to the customer as a clickable link (to activate their bitcoin client) or as a QR code (for mobile wallets).
*/
bitcoin_uri: number;
created: number;
/**
* Three-letter ISO currency code representing the currency to which the bitcoin will be converted.
*/
currency: string;
/**
* This flag is initially false and updates to true when the customer sends the bitcoin_amount to this receiver.
*/
filled: boolean;
/**
* A bitcoin address that is specific to this receiver. The customer can send bitcoin to this address to fill the receiver.
*/
inbound_address: string;
/**
* A list with one entry for each time that the customer sent bitcoin to the receiver. Hidden when viewing the
* receiver with a publishable key.
*/
transactions: IList<IBitcoinTransaction>;
/**
* This receiver contains uncaptured funds that can be used for a payment or refunded.
*/
uncaptured_funds: boolean;
description: string;
/**
* The customer<65>s email address, set by the API call that creates the receiver.
*/
email: string;
/**
* A set of key/value pairs that you can attach to a customer object. It can be useful for storing additional information
* about the customer in a structured format.
*/
metadata: IMetadata;
/**
* The ID of the payment created from the receiver, if any. Hidden when viewing the receiver with a publishable key.
*/
payment: string;
/**
* The refund address for these bitcoin, if communicated by the customer.
*/
refund_address: string;
customer: string;
}
interface IBitcoinTransaction {
id: string;
/**
* Value is 'list'
*/
object: string;
/**
* The amount of currency that the transaction was converted to in real-time.
*/
amount: number;
/**
* The amount of bitcoin contained in the transaction.
*/
bitcoin_amount: number;
created: number;
/**
* The currency to which this transaction was converted.
*/
currency: string;
/**
* The receiver to which this transaction was sent.
*/
receiver: string;
}
}
module customerCards { }
module customerSubscriptions {
/**
* Subscriptions allow you to charge a customer's card on a recurring basis. A subscription ties a customer to
* a particular plan you've created: https://stripe.com/docs/api#create_plan
*/
interface ISubscription {
id: string;
/**
* Value is 'subscription'
*/
object: string;
/**
* If the subscription has been canceled with the at_period_end flag set to true, cancel_at_period_end on the
* subscription will be true. You can use this attribute to determine whether a subscription that has a status
* of active is scheduled to be canceled at the end of the current period.
*/
cancel_at_period_end: boolean;
customer: string;
/**
* Hash describing the plan the customer is subscribed to
*/
plan: plans.IPlan;
/**
* The number of subscriptions for the associated plan
*/
quantity: number;
/**
* Date the subscription started
*/
start: number;
/**
* Possible values are trialing, active, past_due, canceled, or unpaid. A subscription still in its trial period is trialing
* and moves to active when the trial period is over. When payment to renew the subscription fails, the subscription becomes
* past_due. After Stripe has exhausted all payment retry attempts, the subscription ends up with a status of either canceled
* or unpaid depending on your retry settings. Note that when a subscription has a status of unpaid, no subsequent invoices
* will be attempted (invoices will be created, but then immediately automatically closed. Additionally, updating customer
* card details will not lead to Stripe retrying the latest invoice.). After receiving updated card details from a customer,
* you may choose to reopen and pay their closed invoices.
*/
status: string;
/**
* A positive decimal that represents the fee percentage of the subscription invoice amount that will be transferred to
* the application owner<65>s Stripe account each billing period.
*/
application_fee_percent: number;
/**
* If the subscription has been canceled, the date of that cancellation. If the subscription was canceled with
* cancel_at_period_end, canceled_at will still reflect the date of the initial cancellation request, not the end of the
* subscription period when the subscription is automatically moved to a canceled state.
*/
canceled_at: number;
/**
* End of the current period that the subscription has been invoiced for. At the end of this period, a new invoice will be created.
*/
current_period_end: number;
/**
* Start of the current period that the subscription has been invoiced for
*/
current_period_start: number;
/**
* Describes the current discount applied to this subscription, if there is one. When billing, a discount applied to a
* subscription overrides a discount applied on a customer-wide basis.
*/
discount: coupons.IDiscount;
/**
* If the subscription has ended (either because it was canceled or because the customer was switched to a subscription
* to a new plan), the date the subscription ended
*/
ended_at: number;
/**
* A set of key/value pairs that you can attach to a subscription object. It can be useful for storing additional
* information about the subscription in a structured format.
*/
metadata: IMetadata;
/**
* If the subscription has a trial, the end of that trial.
*/
trial_end: number;
/**
* If the subscription has a trial, the beginning of that trial.
*/
trial_start: number;
/**
* If provided, each invoice created by this subscription will apply the tax rate, increasing the amount billed to the customer.
*/
tax_percent: number;
}
}
module chargeRefunds {
interface IRefund {
id: string;
/**
* Value is 'list'
*/
object: string;
/**
* Amount reversed in cents.
*/
amount: number;
created: number;
/**
* Three-letter ISO currency code representing the currency in which the charge was made.
*/
currency: string;
/**
* Balance transaction that describes the impact of this reversal on your account balance.
*/
balance_transaction: string;
/**
* ID of the charge that was refunded.
*/
charge: string;
metadata: IMetadata;
/**
* Reason for the refund. If set, possible values are duplicate, fraudulent, and requested_by_customer.
*/
reason: string;
/**
* This is the transaction number that appears on email receipts sent for this refund.
*/
receipt_number: string;
description: string;
}
}
module applicationFeeRefunds { }
module transferReversals { }
class StripeResource {
constructor(stripe: Stripe, urlData: any);
}
module resources {
class Account extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
}
class ApplicationFeeRefunds extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
}
class ApplicationFees extends StripeResource {
list(): void;
retrieve(id: string): void;
}
class Balance extends StripeResource {
retrieve(id: string): void;
}
class BitcoinReceivers extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
}
class ChargeRefunds extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
}
class Charges extends StripeResource {
/**
* To charge a credit card, you create a charge object. If your API key is in test mode, the supplied card won't actually be charged, though
* everything else will occur as if in live mode. (Stripe assumes that the charge would have completed successfully).
*
* @returns Returns a charge object if the charge succeeded. Throws an error if something goes wrong. A common source of error is an invalid or
* expired card, or a valid card with insufficient available balance. If the cvc parameter is provided, Stripe will attempt to check the CVC's
* correctness, and the check's result will be returned. Similarly, If address_line1 or address_zip are provided, Stripe will similarly try to
* check the validity of those parameters. Some banks do not support checking one or more of these parameters, in which case Stripe will return
* an 'unavailable' result. Also note that, depending on the bank, charges can succeed even when passed incorrect CVC and address information.
*
* @param options Options for creating a charge.
* @param response A callback to receive the response and newly created charge, or errors if they exist.
*/
create(options: {
/**
* A positive integer in the smallest currency unit (e.g 100 cents to charge $1.00, or 1 to charge <20>1, a 0-decimal currency)
* representing how much to charge the card. The minimum amount is $0.50 (or equivalent in charge currency).
*/
amount: number;
/**
* 3-letter ISO code for currency.
*/
currency: string;
/**
* The ID of an existing customer that will be charged in this request.
*/
customer?: string;
/**
* A payment source to be charged, such as a credit card. If you also pass a customer ID, the source must be the ID of
* a source belonging to the customer. Otherwise, if you do not pass a customer ID, the source you provide must either
* be a token, like the ones returned by Stripe.js, or a object containing a user's credit card details, with the options
* described below. Although not all information is required, the extra info helps prevent fraud.
*/
source?: string | IPaymentToken | ICard;
/**
* An arbitrary string which you can attach to a charge object. It is displayed when in the web interface alongside the
* charge. Note that if you use Stripe to send automatic email receipts to your customers, your receipt emails will include
* the description of the charge(s) that they are describing.
*/
description?: string;
metadata?: IMetadata;
/**
* Whether or not to immediately capture the charge. When false, the charge issues an authorization (or pre-authorization),
* and will need to be captured later. Uncaptured charges expire in 7 days. For more information, see authorizing charges
* and settling later: https://support.stripe.com/questions/can-i-authorize-a-charge-and-then-wait-to-settle-it-later
*/
capture?: boolean;
/**
* An arbitrary string to be displayed on your customer's credit card statement. This may be up to 22 characters.
* As an example, if your website is RunClub and the item you're charging for is a race ticket, you may want to
* specify a statement_descriptor of RunClub 5K race ticket. The statement description may not include <>"' characters,
* and will appear on your customer's statement in capital letters. Non-ASCII characters are automatically stripped.
* While most banks display this information consistently, some may display it incorrectly or not at all.
*/
statement_descriptor?: string;
/**
* The email address to send this charge's receipt to. The receipt will not be sent until the charge is paid.
* If this charge is for a customer, the email address specified here will override the customer's email address.
* Receipts will not be sent for test mode charges. If receipt_email is specified for a charge in live mode, a receipt
* will be sent regardless of your email settings.
*/
receipt_email?: string;
/**
* A fee in cents that will be applied to the charge and transferred to the application owner's Stripe account.
* The request must be made with an OAuth key in order to take an application fee. For more information,
* see the application fees documentation: https://stripe.com/docs/connect/collecting-fees
*/
application_fee?: string;
/**
* Shipping information for the charge. Helps prevent fraud on charges for physical goods.
*/
shipping?: IShippingInformation;
}, response: IResponseFn<charges.ICharge>): void;
/**
* Retrieves the details of a charge that has previously been created. Supply the unique charge ID that was returned
* from your previous request, and Stripe will return the corresponding charge information. The same information is
* returned when creating or refunding the charge.
*
* @param id The identifier of the charge to be retrieved
* @param response A callback that takes in a potential error and a charge object.
*/
retrieve(id: string, response: IResponseFn<charges.ICharge>): void;
/**
* Updates the specified charge by setting the values of the parameters passed. Any parameters not provided will be left unchanged.
* This request accepts only the description, metadata, receipt_emailand fraud_details as arguments.
*
* @param id The identifier of the charge to be updated
* @param update An object containing the updated properties.
*/
update(id: string, update: {
/**
* An arbitrary string which you can attach to a charge object. It is displayed when in the web interface alongside the charge.
* Note that if you use Stripe to send automatic email receipts to your customers, your receipt emails will include the description
* of the charge(s) that they are describing. This can be unset by updating the value to null and then saving.
*/
description?: string;
/**
* You can unset an individual key by setting its value to null and then saving. To clear all keys, set metadata to null, then save.
*/
metadata?: IMetadata;
/**
* This is the email address that the receipt for this charge will be sent to.
* If this field is updated, then a new email receipt will be sent to the updated address.
*/
receipt_email?: string;
/**
* A set of key/value pairs you can attach to a charge giving information about its riskiness.
*/
fraud_details?: {
/**
* If you believe a charge is fraudulent, include a user_report key with a value of fraudulent. If you believe a
* charge is safe, include a user_report key with a value of safe. Note that you must refund a charge before setting
* the user_report to fraudulent. Stripe will use the information you send to improve our fraud detection algorithm
*/
user_report?: string;
}
}, response: IResponseFn<charges.ICharge>): void;
/**
* Capture the payment of an existing, uncaptured, charge. This is the second half of the two-step payment flow, where first
* you created a charge with the capture option set to false. Uncaptured payments expire exactly seven days after they are
* created. If they are not captured by that point in time, they will be marked as refunded and will no longer be capturable.
*/
capture(id: string, response: IResponseFn<charges.ICharge>): void;
/**
* Returns a list of charges you've previously created. The charges are returned in sorted order, with the most recent charges
* appearing first.
*
* @returns An object with a data property that contains an array of up to limit charges, starting after charge starting_after.
* Each entry in the array is a separate charge object. If no more charges are available, the resulting array will be empty.
* If you provide a non-existent customer ID, this call throws an error. You can optionally request that the response include
* the total count of all charges that match your filters. To do so, specify include[]=total_count in your request.
*
* @param options Filtering options for the returned items.
*/
list(options: IListOptions, response: IResponseFn<IList<charges.ICharge>>): void;
/**
* When you get a dispute, contacting your customer is always the best first step. If that doesn't work, you can submit evidence in
* order to help us resolve the dispute in your favor. You can do this in your dashboard, but if you prefer, you can use the API to
* submit evidence programmatically. Depending on your dispute type, different evidence fields will give you a better chance of winning
* your dispute. You may want to consult our guide to dispute types to help you figure out which evidence fields to provide:
* https://stripe.com/help/dispute-types
*
* @param chargeId The ID for the disputed charge
* @param options The fields to update
*/
updateDispute(chargeId: string, options: {
/**
* Evidence to upload to respond to a dispute. Updating any field in the hash will submit all fields in the hash for review.
*/
evidence?: IDisputeEvidence;
/**
* A set of key/value pairs that you can attach to a dispute object. It can be useful for storing additional information about the
* dispute in a structured format. This can be unset by updating the value to null and then saving.
*/
metadata?: IMetadata;
}, response: IResponseFn<IDispute>): void;
/**
* Closing the dispute for a charge indicates that you do not have any evidence to submit and are essentially 'dismissing' the dispute,
* acknowledging it as lost. The status of the dispute will change from under_review to lost.
*
* IMPORTANT: Closing a dispute is irreversible.
*
* @param chargeId The ID of the disputed charge
*/
closeDispute(chargeId: string): void;
/**
* When you create a new refund, you must specify a charge to create it on. Creating a new refund will refund a charge that has previously
* been created but not yet refunded. Funds will be refunded to the credit or debit card that was originally charged. The fees you were
* originally charged are also refunded. You can optionally refund only part of a charge. You can do so as many times as you wish until
* the entire charge has been refunded. Once entirely refunded, a charge can't be refunded again. This method will throw an error when
* called on an already-refunded charge, or when trying to refund more money than is left on a charge.
*
* @returns Returns the refund object if the refund succeeded. Throws an error if the charge has already been refunded or an invalid
* charge identifier was provided.
*
* @param id The identifier of the charge to be refunded.
* @param options Options for specifying reasons and refund amount
* @param response The refund.
*/
createRefund(id: string, options: {
/**
* A positive integer in cents representing how much of this charge to refund. Can only refund up to the unrefunded amount remaining
* of the charge.
*/
amount?: number;
/**
* Boolean indicating whether the application fee should be refunded when refunding this charge. If a full charge refund is given, the
* full application fee will be refunded. Else, the application fee will be refunded with an amount proportional to the amount of the
* charge refunded. An application fee can only be refunded by the application that created the charge.
*/
refund_applcation_fee?: boolean;
/**
* String indicating the reason for the refund. If set, possible values are duplicate, fraudulent, and requested_by_customer. Specifying
* fraudulent as the reason when you believe the charge to be fraudulent will help us improve our fraud detection algorithms.
*/
reason?: string;
/**
* A set of key/value pairs that you can attach to a refund object. It can be useful for storing additional information about the refund
* in a structured format. You can unset an individual key by setting its value to null and then saving. To clear all keys, set metadata
* to null, then save.
*/
metadata?: IMetadata;
}, response: IResponseFn<chargeRefunds.IRefund>): void;
/**
* By default, you can see the 10 most recent refunds stored directly on the charge object, but you can also retrieve details about a specific
* refund stored on the charge.
*
* @param chargeId The ID of the charge refunded
* @param refundId The ID of the refund to retrieve
*/
retrieveRefund(chargeId: string, refundId: string, response: IResponseFn<chargeRefunds.IRefund>): void;
/**
* Updates the specified refund by setting the values of the parameters passed. Any parameters not provided will be left unchanged.
* This request only accepts metadata as an argument.
*
* @param chargeId The ID of the charge refunded
* @param refundId The ID of the refund to update
*/
updateRefund(chargeId: string, refundId: string, options: {
/**
* A set of key/value pairs that you can attach to a refund object. It can be useful for storing additional information about the refund
* in a structured format. You can unset an individual key by setting its value to null and then saving. To clear all keys, set metadata
* to null, then save.
*/
metadata: IMetadata;
}, response: IResponseFn<chargeRefunds.IRefund>): void;
/**
* You can see a list of the refunds belonging to a specific charge. Note that the 10 most recent refunds are always available by default on
* the charge object. If you need more than those 10, you can use this API method and the limit and starting_after parameters to page through
* additional refunds.
*
* @returns A object with a data property that contains an array of up to limit refunds, starting after refund starting_after.
* Each entry in the array is a separate refund object. If no more refunds are available, the resulting array will be empty. If you provide
* a non-existent customer ID or charge ID, this call throws an error. You can optionally request that the response include the total count
* of all refunds that match your filters. To do so, specify include[]=total_count in your request.
*
* @param chargeId The ID of the charge refunded
* @param options Used to filter the refunds returned
*/
listRefunds(chargeId: string, options: IListOptions, response: IResponseFn<IList<chargeRefunds.IRefund>>): void;
}
class Coupons extends StripeResource {
/**
* You can create coupons easily via the coupon management page of the Stripe dashboard. Coupon creation is also accessible via the API if
* you need to create coupons on the fly. A coupon has either a percent_off or an amount_off and currency. If you set an amount_off, that
* amount will be subtracted from any invoice's subtotal. For example, an invoice with a subtotal of $10 will have a final total of $0 if
* a coupon with an amount_off of 2000 is applied to it and an invoice with a subtotal of $30 will have a final total of $10 if a coupon
* with an amount_off of 2000 is applied to it.
*
* @returns Returns the coupon object.
*
* @param options Options for creating the coupon.
*/
create(options: {
/**
* Unique string of your choice that will be used to identify this coupon when applying it a customer. This is often a specific code
* you<6F>ll give to your customer to use when signing up (e.g. FALL25OFF). If you don<6F>t want to specify a particular code, you can leave
* the ID blank and we<77>ll generate a random code for you.
*/
id?: string;
/**
* Specifies how long the discount will be in effect. Can be forever, once, or repeating.
*/
duration: string;
/**
* A positive integer representing the amount to subtract from an invoice total (required if percent_off is not passed)
*/
amount_off?: number;
/**
* Currency of the amount_off parameter (required if amount_off is passed)
*/
currency?: string;
/**
* required only if duration is repeating If duration is repeating, a positive integer that specifies the number of months the
* discount will be in effect
*/
duration_in_months?: number;
/**
* A positive integer specifying the number of times the coupon can be redeemed before it<69>s no longer valid. For example, you might
* have a 50% off coupon that the first 20 readers of your blog can use.
*/
max_redemptions?: number;
/**
* A set of key/value pairs that you can attach to a coupon object. It can be useful for storing additional information about the
* coupon in a structured format. This can be unset by updating the value to null and then saving.
*/
metadata?: IMetadata;
/**
* A positive integer between 1 and 100 that represents the discount the coupon will apply (required if amount_off is not passed)
*/
percent_off?: number;
/**
* Unix timestamp specifying the last time at which the coupon can be redeemed. After the redeem_by date, the coupon can no longer
* be applied to new customers.
*/
redeem_by?: number;
}, response: IResponseFn<coupons.ICoupon>): void;
/**
* Retrieves the coupon with the given ID.
*
* @returns Returns a coupon if a valid coupon ID was provided. Throws an error otherwise.
*
* @param id The ID of the desired coupon
*/
retrieve(id: string, response: IResponseFn<coupons.ICoupon>): void;
/**
* Updates the metadata of a coupon. Other coupon details (currency, duration, amount_off) are, by design, not editable.
*
* @returns The newly updated coupon object if the call succeeded. Otherwise, this call throws an error, such as if the coupon has
* been deleted.
*
* @param id The ID of the coupon to be updated
* @param options Metadata to update
*/
update(id: string, options: {
/**
* A set of key/value pairs that you can attach to a coupon object. It can be useful for storing additional information about the
* coupon in a structured format.
*/
metadata?: IMetadata;
}, response: IResponseFn<coupons.ICoupon>): void;
/**
* You can delete coupons via the coupon management page of the Stripe dashboard. However, deleting a coupon does not affect any
* customers who have already applied the coupon; it means that new customers can't redeem the coupon. You can also delete coupons
* via the API.
*
* @returns An object with the deleted coupon's ID and a deleted flag upon success. Otherwise, this call throws an error, such as
* if the coupon has already been deleted.
*
* @param id The ID of the coupon to be deleted.
*/
del(id: string, response: IResponseFn<IDeleteConfirmation>): void;
/**
* Returns a list of your coupons.
*
* @returns A object with a data property that contains an array of up to limit coupons, starting after coupon starting_after. Each
* entry in the array is a separate coupon object. If no more coupons are available, the resulting array will be empty. This request
* should never throw an error. You can optionally request that the response include the total count of all coupons. To do so, specify
* include[]=total_count in your request.
*
* @param options Filtering options for the list.
*/
list(options: IListOptions, response: IResponseFn<coupons.ICoupon>): void;
}
class CustomerCards extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
del(id: string): void;
}
class Customers extends StripeResource {
/**
* Creates a new customer object.
*
* @returns Returns a customer object if the call succeeded. The returned object will have information about subscriptions, discount,
* and payment sources, if that information has been provided. If a non-free plan is specified and a source is not provided (unless
* the plan has a trial period), the call will throw an error. If a non-existent plan or a non-existent or expired coupon is provided,
* the call will throw an error. If a source has been attached to the customer, the returned customer object will have a default_source
* attribute, which is an ID that can be expanded into the full source details when retrieving the customer.
*
* @param options The options for the new customer
*/
create(options: {
/**
* An integer amount in cents that is the starting account balance for your customer. A negative amount represents a credit that
* will be used before attempting any charges to the customer<65>s card; a positive amount will be added to the next invoice.
*/
account_balance?: number;
/**
* If you provide a coupon code, the customer will have a discount applied on all recurring charges. Charges you create through the
* API will not have the discount.
*/
coupon?: string;
/**
* An arbitrary string that you can attach to a customer object. It is displayed alongside the customer in the dashboard. This can
* be unset by updating the value to null and then saving.
*/
description?: string;
/**
* Customer<65>s email address. It<49>s displayed alongside the customer in your dashboard and can be useful for searching and tracking.
* This can be unset by updating the value to null and then saving.
*/
email?: string;
/**
* A set of key/value pairs that you can attach to a customer object. It can be useful for storing additional information about the
* customer in a structured format. This can be unset by updating the value to null and then saving.
*/
metadata?: IMetadata;
/**
* The identifier of the plan to subscribe the customer to. If provided, the returned customer object will have a list of subscriptions
* that the customer is currently subscribed to. If you subscribe a customer to a plan without a free trial, the customer must have a
* valid card as well.
*/
plan?: string;
/**
* The quantity you<6F>d like to apply to the subscription you<6F>re creating (if you pass in a plan). For example, if your plan is
* 10 cents/user/month, and your customer has 5 users, you could pass 5 as the quantity to have the customer charged 50 cents
* (5 x 10 cents) monthly. Defaults to 1 if not set. Only applies when the plan parameter is also provided.
*/
quantity?: number;
source?: string | ICard;
/**
* Unix timestamp representing the end of the trial period the customer will get before being charged. If set, trial_end will
* override the default trial period of the plan the customer is being subscribed to. The special value now can be provided to
* end the customer<65>s trial immediately. Only applies when the plan parameter is also provided.
*/
trial_end?: number;
}, response: IResponseFn<customers.ICustomer>): void;
/**
* Returns a list of your customers. The customers are returned sorted by creation date, with the most recently created customers
* appearing first.
*
* @returns A object with a data property that contains an array of up to limit customers, starting after customer starting_after.
* Each entry in the array is a separate customer object. If no more customers are available, the resulting array will be empty.
* This request should never throw an error. You can optionally request that the response include the total count of all customers
* that match your filters. To do so, specify include[]=total_count in your request.
*
* @param options Allows you to filter the customers you want.
*/
list(options: IListOptions, response: IResponseFn<IList<customers.ICustomer>>): void;
/**
* Updates the specified customer by setting the values of the parameters passed. Any parameters not provided will be left unchanged.
* For example, if you pass the card parameter, that becomes the customer's active card to be used for all charges in the future.
* When you update a customer to a new valid card: for each of the customer's current subscriptions, if the subscription is in the
* past_due state, then the latest unpaid, unclosed invoice for the subscription will be retried (note that this retry will not count
* as an automatic retry, and will not affect the next regularly scheduled payment for the invoice). (Note also that no invoices
* pertaining to subscriptions in the unpaid state, or invoices pertaining to canceled subscriptions, will be retried as a result
* of updating the customer's card.) This request accepts mostly the same arguments as the customer creation call.
*
* @returns Returns the customer object if the update succeeded. Throws an error if update parameters are invalid (e.g. specifying
* an invalid coupon or an invalid card).
*/
update(id: string, options: {
/**
* An integer amount in cents that is the starting account balance for your customer. A negative amount represents a credit that
* will be used before attempting any charges to the customer<65>s card; a positive amount will be added to the next invoice.
*/
account_balance?: number;
/**
* If you provide a coupon code, the customer will have a discount applied on all recurring charges. Charges you create through the
* API will not have the discount.
*/
coupon?: string;
/**
* An arbitrary string that you can attach to a customer object. It is displayed alongside the customer in the dashboard. This can
* be unset by updating the value to null and then saving.
*/
description?: string;
/**
* Customer<65>s email address. It<49>s displayed alongside the customer in your dashboard and can be useful for searching and tracking.
* This can be unset by updating the value to null and then saving.
*/
email?: string;
/**
* A set of key/value pairs that you can attach to a customer object. It can be useful for storing additional information about the
* customer in a structured format. This can be unset by updating the value to null and then saving.
*/
metadata?: IMetadata;
/**
* The identifier of the plan to subscribe the customer to. If provided, the returned customer object will have a list of subscriptions
* that the customer is currently subscribed to. If you subscribe a customer to a plan without a free trial, the customer must have a
* valid card as well.
*/
plan?: string;
/**
* The quantity you<6F>d like to apply to the subscription you<6F>re creating (if you pass in a plan). For example, if your plan is
* 10 cents/user/month, and your customer has 5 users, you could pass 5 as the quantity to have the customer charged 50 cents
* (5 x 10 cents) monthly. Defaults to 1 if not set. Only applies when the plan parameter is also provided.
*/
quantity?: number;
source?: ICard;
/**
* Unix timestamp representing the end of the trial period the customer will get before being charged. If set, trial_end will
* override the default trial period of the plan the customer is being subscribed to. The special value now can be provided to
* end the customer<65>s trial immediately. Only applies when the plan parameter is also provided.
*/
trial_end?: number;
}, response: IResponseFn<customers.ICustomer>): void;
/**
* Retrieves the details of an existing customer. You need only supply the unique customer identifier that was returned upon customer
* creation.
*
* @returns Returns a customer object if a valid identifier was provided. When requesting the ID of a customer that has been deleted,
* a subset of the customer's information will be returned, including a "deleted" property, which will be true.
*
* @param id The identifier of the customer to be retrieved.
*/
retrieve(id: string, response: IResponseFn<customers.ICustomer>): void;
/**
* Permanently deletes a customer. It cannot be undone. Also immediately cancels any active subscriptions on the customer.
*
* @returns Returns an object with a deleted parameter on success. If the customer ID does not exist, this call throws an error. Unlike
* other objects, deleted customers can still be retrieved through the API, in order to be able to track the history of customers while
* still removing their credit card details and preventing any further operations to be performed (such as adding a new subscription).
*
* @param id The identifier of the customer to be deleted.
*/
del(id: string, response: IResponseFn<IDeleteConfirmation>): void;
/**
* When you create a new credit card, you must specify a customer or recipient to create it on. If the card's owner has no default card,
* then the new card will become the default. However, if the owner already has a default then it will not change. To change the default,
* you should either update the customer to have a new default_source or update the recipient to have a new default_card.
*
* @returns Returns the card object.
*
* @param customerId The customer ID to which to add the card.
*/
createCard(customerId: string, options: {
/**
* The source can either be a token, like the ones returned by our Stripe.js, or a dictionary containing a user<65>s credit card details
* (with the options shown below). Whenever you create a new card for a customer, Stripe will automatically validate the card.
*/
source?: string | ICard;
card?: string | IPaymentToken;
}, response: IResponseFn<ICard>): void;
/**
* By default, you can see the 10 most recent cards stored on a customer or recipient directly on the customer or recipient object, but
* you can also retrieve details about a specific card stored on the customer or recipient.
*
* @returns Returns the card object.
*
* @param customerId The ID of the customer whose card needs to be retrieved.
* @param cardId The ID of the card to be retrieved.
*/
retrieveCard(customerId: string, cardId: string, response: IResponseFn<ICard>): void;
/**
* If you need to update only some card details, like the billing address or expiration date, you can do so without having to re-enter the
* full card details. Stripe also works directly with card networks so that your customers can continue using your service without
* interruption. When you update a card, Stripe will automatically validate the card.
*
* @returns Returns the card object.
*
* @param customerId The ID of the customer whose card needs to be retrieved.
* @param cardId The ID of the card to be retrieved.
*/
updateCard(customerId: string, cardId: string, options: {
/**
* The card number
*/
'number'?: number;
exp_month?: number;
exp_year?: number;
address_city?: string;
/**
* Billing address country, if provided when creating card
*/
address_country?: string;
address_line1?: string;
address_line2?: string;
address_state?: string;
address_zip?: string;
/**
* Two-letter ISO code representing the country of the card. You could use this
* attribute to get a sense of the international breakdown of cards you<6F>ve collected.
*/
country?: string;
/**
* Cardholder name
*/
name?: string;
}, response: IResponseFn<ICard>): void;
/**
* You can delete cards from a customer or recipient. If you delete a card that is currently the
* default source on a customer, then the most recently added source will become the new default.
* If you delete a card that is the last remaining source on the customer then the default_source
* attribute will become null. Similarly, if you delete the default card on a recipient, then the
* most recently added card will become the new default. If you delete the last remaining card on
* a recipient, then the default_card attribute will become null. Note that for cards belonging to
* customers, you may want to prevent customers on paid subscriptions from deleting all cards on
* file so that there is at least one default card for the next invoice payment attempt.
*
* @returns Returns the deleted card object.
*
* @param customerId The ID of the customer whose card needs to be retrieved.
* @param cardId The ID of the card to be retrieved.
*/
deleteCard(customerId: string, cardId: string, response: IResponseFn<IDeleteConfirmation>): void;
/**
* You can see a list of the cards belonging to a customer or recipient. Note that the 10 most recent
* cards are always available by default on the customer or recipient object. If you need more than
* those 10, you can use this API method and the limit and starting_after parameters to page through
* additional cards.
*
* @returns Returns a list of the cards stored on the customer or recipient. You can optionally request
* that the response include the total count of all cards for the customer or recipient. To do so,
* specify include[]=total_count in your request.
*
* @param customerId The ID of the customer whose cards will be retrieved
* @param options Filtering options
*/
listCards(customerId: string, options: IListOptions, response: IResponseFn<IList<ICard>>): void;
/**
* Creates a new subscription on an existing customer.
*
* @returns The newly created subscription object if the call succeeded. If the customer has no card or the
* attempted charge fails, this call throws an error (unless the specified plan is free or has a trial
* period).
*
* @param customerId The customer to which the add the subscription.
* @param options The options for the new subscription
*/
createSubscription(customerId: string, options: {
/**
* The identifier of the plan to subscribe the customer to.
*/
plan: string;
/**
* The code of the coupon to apply to this subscription. A coupon applied to a subscription will only
* affect invoices created for that particular subscription.
*/
coupon?: string;
/**
* Unix timestamp representing the end of the trial period the customer will get before being charged
* for the first time. If set, trial_end will override the default trial period of the plan the customer
* is being subscribed to. The special value now can be provided to end the customer's trial immediately.
*/
trial_end?: number;
/**
* The source can either be a token, like the ones returned by our Stripe.js, or a object containing a
* user's credit card details (with the options shown below). You must provide a source if the customer
* does not already have a valid source attached, and you are subscribing the customer for a plan that
* is not free. Passing source will create a new source object, make it the customer default source, and
* delete the old customer default if one exists. If you want to add an additional source to use with
* subscriptions, instead use the card creation API to add the card and then the customer update API to
* set it as the default. Whenever you attach a card to a customer, Stripe will automatically validate
* the card.
*/
source?: IPaymentToken | ICard;
/**
* The quantity you'd like to apply to the subscription you're creating. For example, if your plan is
* $10/user/month, and your customer has 5 users, you could pass 5 as the quantity to have the customer
* charged $50 (5 x $10) monthly. If you update a subscription but don't change the plan ID (e.g.
* changing only the trial_end), the subscription will inherit the old subscription's quantity attribute
* unless you pass a new quantity parameter. If you update a subscription and change the plan ID, the new
* subscription will not inherit the quantity attribute and will default to 1 unless you pass a quantity
* parameter.
*/
quantity?: number;
/**
* A positive decimal (with at most two decimal places) between 1 and 100. This represents the percentage
* of the subscription invoice subtotal that will be transferred to the application owner<65>s Stripe account.
* The request must be made with an OAuth key in order to set an application fee percentage. For more
* information, see the application fees documentation: https://stripe.com/docs/connect/collecting-fees#subscriptions
*/
application_fee_percent?: number;
/**
* A positive decimal (with at most two decimal places) between 1 and 100. This represents the percentage
* of the subscription invoice subtotal that will be calculated and added as tax to the final amount each
* billing period. For example, a plan which charges $10/month with a tax_percent of 20.0 will charge
* $12 per invoice.
*/
tax_percent?: number;
/**
* A set of key/value pairs that you can attach to a subscription object. It can be useful for
* storing additional information about the subscription in a structured format.
*/
metadata?: IMetadata;
}, response: IResponseFn<customerSubscriptions.ISubscription>): void;
/**
* By default, you can see the 10 most recent active subscriptions stored on a customer directly on the customer
* object, but you can also retrieve details about a specific active subscription for a customer.
*
* @returns Returns the subscription object.
*
* @param customerId The customer ID for the subscription
* @param subscriptionId The ID of the subscription to retrieve
*/
retrieveSubscription(customerId: string, subscriptionId: string, response: IResponseFn<customerSubscriptions.ISubscription>): void;
/**
* Updates an existing subscription on a customer to match the specified parameters. When changing plans or quantities,
* we will optionally prorate the price we charge next month to make up for any price changes.
*
* By default, we prorate subscription changes. For example, if a customer signs up on May 1 for a $10 plan, she'll be billed
* $10 immediately. If she then switches to a $20 plan on May 15, on June 1 she'll be billed $25 ($20 for a renewal of her
* subscription and a $5 prorating adjustment for the previous month). Similarly, a downgrade will generate a credit to be
* applied to the next invoice. We also prorate when you make quantity changes. Switching plans does not change the billing
* date or generate an immediate charge unless you're switching between different intervals (e.g. monthly to yearly), in which
* case we apply a credit for the time unused on the old plan and charge for the new plan starting right away, resetting the
* billing date. (Note that if we charge for the new plan, and that payment fails, the plan change will not go into effect). If
* you'd like to charge for an upgrade immediately, just pass prorate as true as usual, and then invoice the customer as soon
* as you make the subscription change. That'll collect the proration adjustments into a new invoice, and Stripe will automatically
* attempt to pay the invoice. If you don't want to prorate at all, set the prorate option to false and the customer would be billed
* $10 on May 1 and $20 on June 1. Similarly, if you set prorate to false when switching between different billing intervals
* (monthly to yearly, for example), we won't generate any credits for the old subscription's unused time, although we will still
* reset the billing date and bill immediately for the new subscription.
*
* @returns The newly updated subscription object if the call succeeded. If a charge is required for the update, and
* the charge fails, this call raises throws an error, and the subscription update does not go into effect.
*
* @param customerId The ID of the customer whose subscription needs to be updated.
* @param subscriptionId The ID of the subscription to update.
* @param options The fields to update
*/
updateSubscription(customerId: string, subscriptionId: string, options: {
/**
* The identifier of the plan to update the subscription to. If omitted, the subscription will not change plans.
*/
plan?: string;
/**
* The code of the coupon to apply to the customer if you would like to apply it at the same time as updating the subscription.
*/
coupon?: string;
/**
* Flag telling us whether to prorate switching plans during a billing cycle.
*/
prorate?: boolean;
/**
* Unix timestamp representing the end of the trial period the customer will get before being charged for the first time. If set,
* trial_end will override the default trial period of the plan the customer is being subscribed to. The special value now can be
* provided to end the customer's trial immediately.
*/
trial_end?: number;
/**
* The source can either be a token, like the ones returned by our Stripe.js, or a object containing a user's credit card details
* (with the options shown below). You must provide a source if the customer does not already have a valid source attached, and
* you are subscribing the customer for a plan that is not free. Passing source will create a new source object, make it the
* customer default source, and delete the old customer default if one exists. If you want to add an additional source to use
* with subscriptions, instead use the card creation API to add the card and then the customer update API to set it as the default.
* Whenever you attach a card to a customer, Stripe will automatically validate the card.
*/
source?: IPaymentToken | ICard;
/**
* The quantity you'd like to apply to the subscription you're updating. For example, if your plan is $10/user/month, and your
* customer has 5 users, you could pass 5 as the quantity to have the customer charged $50 (5 x $10) monthly. If you update a
* subscription but don't change the plan ID (e.g. changing only the trial_end), the subscription will inherit the old subscription's
* quantity attribute unless you pass a new quantity parameter. If you update a subscription and change the plan ID, the new
* subscription will not inherit the quantity attribute and will default to 1 unless you pass a quantity parameter.
*/
quantity?: number;
/**
* A positive decimal (with at most two decimal places) between 1 and 100 that represents the percentage of the subscription
* invoice amount due each billing period (including any bundled invoice items) that will be transferred to the application
* owner<65>s Stripe account. The request must be made with an OAuth key in order to set an application fee percentage . For more
* information, see the application fees documentation: https://stripe.com/docs/connect/collecting-fees#subscriptions
*/
application_fee_percent?: number;
/**
* Update the amount of tax applied to this subscription. Changing the tax_percent of a subscription will only affect future
* invoices.
*/
tax_percent?: number;
/**
* A set of key/value pairs that you can attach to a subscription object. It can be useful for storing additional information
* about the subscription in a structured format.
*/
metadata?: IMetadata;
}, response: IResponseFn<customerSubscriptions.ISubscription>): void;
/**
* Cancels a customer's subscription. If you set the at_period_end parameter to true, the subscription will remain active until
* the end of the period, at which point it will be canceled and not renewed. By default, the subscription is terminated
* immediately. In either case, the customer will not be charged again for the subscription. Note, however, that any pending
* invoice items that you've created will still be charged for at the end of the period unless manually deleted. If you've set
* the subscription to cancel at period end, any pending prorations will also be left in place and collected at the end of the
* period, but if the subscription is set to cancel immediately, pending prorations will be removed. By default, all unpaid
* invoices for the customer will be closed upon subscription cancellation. We do this in order to prevent unexpected payment
* retries once the customer has canceled a subscription. However, you can reopen the invoices manually after subscription
* cancellation to have us proceed with automatic retries, or you could even re-attempt payment yourself on all unpaid invoices
* before allowing the customer to cancel the subscription at all.
*
* @returns The canceled subscription object. Its subscription status will be set to "canceled" unless you've set at_period_end
* to true when canceling, in which case the status will remain "active" but the cancel_at_period_end attribute will change to true.
*
* @param customerId The ID of the customer whose subscription needs to be cancelled.
* @param subscriptionId The ID of the subscription to cancel.
* @param options Specify when to cancel the subscription
*/
cancelSubscription(customerId: string, subscriptionId: string, options: {
/**
* A flag that if set to true will delay the cancellation of the subscription until the end of the current period.
*/
at_period_end?: boolean;
}, response: IResponseFn<customerSubscriptions.ISubscription>): void;
/**
* You can see a list of the customer's active subscriptions. Note that the 10 most recent active subscriptions are always available
* by default on the customer object. If you need more than those 10, you can use the limit and starting_after parameters to page
* through additional subscriptions.
*
* @returns Returns a list of the customer's active subscriptions. You can optionally request that the response include the total
* count of all subscriptions for the customer. To do so, specify include[]=total_count in your request.
*
* @param customerId The ID of the customer whose subscriptions will be retrieved
* @param options Filtering options
*/
listSubscriptions(customerId: string, options: IListOptions, response: IResponseFn<IList<customerSubscriptions.ISubscription>>): void;
/**
* Removes the currently applied discount on a customer.
*
* @returns An object with a deleted flag set to true upon success. This call throws an error otherwise, such as if no
* discount exists on this customer.
*
* @param customerId The ID of the customer.
*/
deleteDiscount(customerId: string, response: IResponseFn<IDeleteConfirmation>): void;
/**
* Removes the currently applied discount on a subscription.
*
* @returns An object with a deleted flag set to true upon success. This call throws an error otherwise, such as if no
* discount exists on this subscription.
*
* @param customerId The ID of the customer.
* @param subscriptionId The ID of the subscription.
*/
deleteSubscriptionDiscount(customerId: string, subscriptionId: string, response: IResponseFn<IDeleteConfirmation>): void;
}
class CustomerSubscriptions extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
del(id: string): void;
}
class Events extends StripeResource {
list(): void;
retrieve(id: string): void;
}
class FileUploads extends StripeResource {
list(): void;
retrieve(id: string): void;
}
class InvoiceItems extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
del(id: string): void;
}
class Invoices extends StripeResource {
/**
* If you need to invoice your customer outside the regular billing cycle, you can create an invoice that
* pulls in all pending invoice items, including prorations. The customer's billing cycle and regular subscription
* won't be affected. Once you create the invoice, it'll be picked up and paid automatically, though you can
* choose to pay it right away: https://stripe.com/docs/api#pay_invoice
*
* @returns Returns the invoice object if there are pending invoice items to invoice. Throws an error if there
* are no pending invoice items or if the customer ID provided is invalid.
*
* @param options Options used to create the invoice.
*/
create(options: {
customer: string;
/**
* A fee in cents that will be applied to the invoice and transferred to the application owner<65>s Stripe account.
* The request must be made with an OAuth key or the Stripe-Account header in order to take an application fee.
* For more information, see the application fees documentation.
*/
application_fee?: number;
description?: string;
metadata?: IMetadata;
/**
* Extra information about a charge for the customer<65>s credit card statement.
*/
statement_descriptor?: string;
/**
* The ID of the subscription to invoice. If not set, the created invoice will include all pending invoice items
* for the customer. If set, the created invoice will exclude pending invoice items that pertain to other
* subscriptions.
*/
subscription?: string;
/**
* The percent tax rate applied to the invoice, represented as a decimal number.
*/
tax_percent?: number;
}, response: IResponseFn<invoices.IInvoice>): void;
/**
* Retrieves the invoice with the given ID. The invoice object contains a
* lines hash that contains information about the subscriptions and invoice items that have been applied to the
* invoice, as well as any prorations that Stripe has automatically calculated. Each line on the invoice has an
* amount attribute that represents the amount actually contributed to the invoice's total. For invoice items and
* prorations, the amount attribute is the same as for the invoice item or proration respectively. For
* subscriptions, the amount may be different from the plan's regular price depending on whether the invoice
* covers a trial period or the invoice period differs from the plan's usual interval. The invoice object has
* both a subtotal and a total. The subtotal represents the total before any discounts, while the total is the final
* amount to be charged to the customer after all coupons have been applied. The invoice also has a
* next_payment_attempt attribute that tells you the next time (as a Unix timestamp) payment for the invoice will be
* automatically attempted. For invoices that have been closed or that have reached the maximum number of retries
* (specified in your retry settings), the next_payment_attempt will be null.
*
* @returns Returns an invoice object if a valid invoice ID was provided. Throws an error otherwise.
*
* @param id The ID of the desired invoice.
*/
retrieve(id: string, response: IResponseFn<invoices.IInvoice>): void;
/**
* When retrieving an invoice, you'll get a lines property containing the total count of line items and the first
* handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items.
*
* @returns Returns a list of line_item objects.
*
* @param id The id of the invoice containing the lines to be retrieved
* @param options Filtering options
*/
retrieveLines(id: string, options: {
/**
* In the case of upcoming invoices, the customer of the upcoming invoice is required. In other cases it is ignored.
*/
customer?: string;
/**
* A cursor for use in pagination. ending_before is an object ID that defines your place in the list.
* For instance, if you make a list request and receive 100 objects, starting with obj_bar, your subsequent
* call can include ending_before=obj_bar in order to fetch the previous page of the list.
*/
ending_before?: string;
/**
* A limit on the number of objects to be returned. Limit can range between 1 and 100 items.
*/
limit?: number;
/**
* A cursor for use in pagination. starting_after is an object ID that defines your place in the list. For instance,
* if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include
* starting_after=obj_foo in order to fetch the next page of the list.
*/
starting_after?: string;
/**
* In the case of upcoming invoices, the subscription of the upcoming invoice is optional. In other cases it is ignored.
*/
subscription?: string;
}, response: IResponseFn<IList<invoiceItems.InvoiceLineItem>>): void;
/**
* At any time, you can preview the upcoming invoice for a customer. This will show you all the charges that are pending,
* including subscription renewal charges, invoice item charges, etc. It will also show you any discount that is applicable
* to the customer. 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.
*
* @returns Returns an invoice if a valid customer ID was provided. Throws an error otherwise.
*
* @param id The identifier of the customer whose upcoming invoice you'd like to retrieve.
*/
retrieveUpcoming(id: string, options: {
/**
* The identifier of the subscription for which you'd like to retrieve the upcoming invoice. If not provided, you will
* retrieve the next upcoming invoice from among the customer's subscriptions.
*/
subscription?: string;
}, response: IResponseFn<invoices.IInvoice>): void;
/**
* Until an invoice is paid, it is marked as open (closed=false). If you'd like to stop Stripe from automatically attempting
* payment on an invoice or would simply like to close the invoice out as no longer owed by the customer, you can update the
* closed parameter.
*
* @returns Returns the invoice object.
*
* @param id The ID of the invoice to update
* @param options Fields to update
*/
update(id: string, options: {
/**
* A fee in cents that will be applied to the invoice and transferred to the application owner<65>s Stripe account. The request
* must be made with an OAuth key or the Stripe-Account header in order to take an application fee. For more information,
* see the application fees documentation: https://stripe.com/docs/connect/collecting-fees#subscriptions
*/
application_fee?: number;
/**
* Boolean representing whether an invoice is closed or not. To close an invoice, pass true.
*/
closed?: boolean;
description?: string;
/**
* Boolean representing whether an invoice is forgiven or not. To forgive an invoice, pass true. Forgiving an invoice instructs
* us to update the subscription status as if the invoice were succcessfully paid. Once an invoice has been forgiven, it
* cannot be unforgiven or reopened.
*/
forgiven?: string;
metadata?: IMetadata;
/**
* Extra information about a charge for the customer<65>s credit card statement.
*/
statement_descriptor?: string;
/**
* The percent tax rate applied to the invoice, represented as a decimal number. The tax rate of a paid or forgiven invoice
* cannot be changed.
*/
tax_percent?: number;
}, response: IResponseFn<invoices.IInvoice>): void;
/**
* Stripe automatically creates and then attempts to pay invoices for customers on subscriptions. We'll also retry unpaid
* invoices according to your retry settings. However, if you'd like to attempt to collect payment on an invoice out of the
* normal retry schedule or for some other reason, you can do so.
*
* @returns Returns the invoice object.
*
* @param id The ID of the invoice to pay.
*/
pay(id: string, response: IResponseFn<invoices.IInvoice>): void;
/**
* 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.
*
* @returns A object with a data property that contains an array of invoice objects. Throws an error if the
* customer ID is invalid.
*
* @param options Filtering options
*/
list(options: IListOptions, response: IResponseFn<IList<invoices.IInvoice>>): void;
}
class Plans extends StripeResource {
/**
* You can create plans easily via the plan management page of the Stripe dashboard. Plan creation is also
* accessible via the API if you need to create plans on the fly.
*
* @returns The newly created plan
*
* @param options Options for the new plan.
*/
create(options: {
/**
* Unique string of your choice that will be used to identify this plan when subscribing a customer.
* This could be an identifier like "gold" or a primary key from your own database.
*/
id: string;
/**
* A positive integer in cents (or 0 for a free plan) representing how much to charge (on a recurring basis).
*/
amount: number;
/**
* 3-letter ISO code for currency.
*/
currency: string;
/**
* Specifies billing frequency. Either day, week, month or year.
*/
interval: string;
/**
* The number of intervals between each subscription billing. For example, interval=month and
* interval_count=3 bills every 3 months. Maximum of one year interval allowed (1 year, 12 months,
* or 52 weeks).
*/
interval_count?: number;
/**
* Name of the plan, to be displayed on invoices and in the web interface.
*/
name: string;
/**
* Specifies a trial period in (an integer number of) days. If you include a trial period, the customer
* won't be billed for the first time until the trial period ends. If the customer cancels before the
* trial period is over, she'll never be billed at all.
*/
trial_period_days?: number;
/**
* A set of key/value pairs that you can attach to a plan object. It can be useful for storing additional
* information about the plan in a structured format.
*/
metadata?: IMetadata;
/**
* An arbitrary string to be displayed on your customer's credit card statement. This may be up to 22 characters.
* As an example, if your website is RunClub and the item you're charging for is your Silver Plan, you may want
* to specify a statement_descriptor of RunClub Silver Plan. The statement description may not include <>"'
* characters, and will appear on your customer's statement in capital letters. Non-ASCII characters are
* automatically stripped. While most banks display this information consistently, some may display it incorrectly
* or not at all.
*/
statement_descriptor?: string;
}, response: IResponseFn<plans.IPlan>): void;
/**
* Retrieves the plan with the given ID.
*
* @returns Returns a plan if a valid plan ID was provided. Throws an error otherwise.
*
* @param id The ID of the desired plan.
*/
retrieve(id: string, response: IResponseFn<plans.IPlan>): void;
/**
* Updates the name of a plan. Other plan details (price, interval, etc.) are, by design, not editable.
*
* @returns The updated plan object is returned upon success. Otherwise, this call throws an error.
*
* @param id The plan ID to update
* @param options The fields to update
*/
update(id: string, options: {
/**
* Name of the plan, to be displayed on invoices and in the web interface.
*/
name?: string;
/**
* A set of key/value pairs that you can attach to a plan object. It can be useful for storing additional information
* about the plan in a structured format. You can unset an individual key by setting its value to null and then saving.
* To clear all keys, set metadata to null, then save.
*/
metadata?: IMetadata;
/**
* An arbitrary string to be displayed on your customer's credit card statement. This may be up to 22 characters.
* As an example, if your website is RunClub and the item you're charging for is your Silver Plan, you may want
* to specify a statement_descriptor of RunClub Silver Plan. The statement description may not include <>"'
* characters, and will appear on your customer's statement in capital letters. Non-ASCII characters are
* automatically stripped. While most banks display this information consistently, some may display it incorrectly
* or not at all.
*/
statement_descriptor?: string;
}, response: IResponseFn<plans.IPlan>): void;
/**
* You can delete plans via the plan management page of the Stripe dashboard. However, deleting a plan does not affect
* any current subscribers to the plan; it merely means that new subscribers can't be added to that plan. You can also
* delete plans via the API.
*
* @returns An object with the deleted plan's ID and a deleted flag upon success. Otherwise, this call throws an error, such as if the plan has already been deleted.
*
* @param id The identifier of the plan to be deleted.
*/
del(id: string, response: IResponseFn<IDeleteConfirmation>): void;
/**
* Returns a list of your plans.
*
* @returns An object with a data property that contains an array of up to limit plans, starting after plan starting_after.
* Each entry in the array is a separate plan object. If no more plans are available, the resulting array will be empty. This
* request should never throw an error. You can optionally request that the response include the total count of all plans. To
* do so, specify include[]=total_count in your request.
*/
list(options: IListOptions, response: IResponseFn<IList<plans.IPlan>>): void;
}
class RecipientCards extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
del(id: string): void;
}
class Recipients extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
del(id: string): void;
}
class Tokens extends StripeResource {
create(): void;
retrieve(id: string): void;
}
class TransferReversals extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
}
class Transfers extends StripeResource {
create(): void;
list(): void;
update(id: string): void;
retrieve(id: string): void;
}
}
interface IResponseFn<R> {
(err: IStripeError, value: R): void;
}
interface IDeleteConfirmation { id: string; deleted: boolean; }
/**
* Options for filtering a list by created period.
*/
interface IDateFilter {
/**
* Return values where the created field is after this timestamp.
*/
gt?: string;
/**
* Return values where the created field is after or equal to this timestamp.
*/
gte?: string;
/**
* Return values where the created field is before this timestamp.
*/
lt?: string;
/**
* Return values where the created field is before or equal to this timestamp.
*/
lte?: string;
}
/**
* A dispute occurs when a customer questions your charge with their bank or credit card company.
* When a customer disputes your charge, you're given the opportunity to respond to the dispute with
* evidence that shows the charge is legitimate. You can find more information about the dispute process
* in our disputes FAQ: https://stripe.com/help/disputes
*/
interface IDispute {
/**
* Valud is 'dispute'
*/
object: string;
livemode: boolean;
/**
* Disputed amount. Usually the amount of the charge, but can differ (usually because of currency
* fluctuation or because only part of the order is disputed).
*/
amount: number;
/**
* ID of the charge that was disputed
*/
charge: string;
/**
* Date dispute was opened
*/
created: number;
/**
* Three-letter ISO currency code representing the currency of the amount that was disputed.
*/
currency: string;
/**
* Reason given by cardholder for dispute. Possible values are duplicate, fraudulent, subscription_canceled,
* product_unacceptable, product_not_received, unrecognized, credit_not_processed, general.
* Read more about dispute reasons: https://stripe.com/help/disputes#reasons
*/
reason: string;
/**
* Current status of dispute. Possible values are warning_needs_response, warning_under_review, warning_closed,
* needs_response, response_disabled, under_review, charge_refunded, won, lost.
*/
status: string;
/**
* List of zero, one, or two balance transactions that show funds withdrawn and reinstated to your
* Stripe account as a result of this dispute.
*/
balance_transactions: Array<balance.IBalanceTransaction>;
/**
* Evidence provided to respond to a dispute. Updating any field in the hash will submit all fields in the hash for review.
*/
evidence: IDisputeEvidence;
/**
* Information about the evidence submission.
*/
evidence_details?: {
/**
* Whether or not evidence has been saved for this dispute.
*/
has_evidence: boolean;
/**
* The number of times the evidence has been submitted. You may submit evidence a maximum of 5 times
*/
submission_count: number;
/**
* Date by which evidence must be submitted in order to successfully challenge dispute. Will be null
* if the customer<65>s bank or credit card company doesn<73>t allow a response for this particular dispute.
*/
due_by: number;
/**
* Whether or not the last evidence submission was submitted past the due date. Defaults to false
* if no evidence submissions have occurred. If true, then delivery of the latest evidence is not guaranteed.
*/
past_due: boolean;
};
/**
* If true, it is still possible to refund the disputed payment. Once the payment has been fully
* refunded, no further funds will be withdrawn from your Stripe account as a result of this dispute.
*/
is_charge_refundable: boolean;
metadata: IMetadata;
}
interface IBankAccount {
id: string;
object: string;
/**
* Two-letter ISO code representing the country the bank account is located in.
*/
country: string;
/**
* Three-letter ISO currency code representing the currency paid out to the bank account.
*/
currency: string;
default_for_currency: boolean;
last4: string;
/**
* Possible values are new, validated, verified, or errored. A bank account that hasn<73>t had any activity or validation performed
* is new. If Stripe can determine that the bank account exists, its status will be validated. Note that there often isn<73>t enough
* information to know (e.g. for smaller credit unions), and the validation is not always run. If the recipient or customer proves
* that they own the bank account (via microdeposit or login), the status will be verified. If a transfer sent to this bank account
* fails, we<77>ll set the status to errored and will not continue to send transfers until the bank details are updated.
*/
status: string;
/**
* Name of the bank associated with the routing number, e.g. WELLS FARGO.
*/
bank_name: string;
/**
* Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
*/
fingerprint: string;
/**
* The routing transit number for the bank account.
*/
routing_number: string;
}
interface IReversal {
id: string;
/**
* Value is 'list'
*/
object: string;
/**
* Amount reversed, in cents.
*/
amount: number;
created: number;
/**
* Three-letter ISO currency code representing the currency.
*/
currency: string;
/**
* Balance transaction that describes the impact of this reversal on your account balance.
*/
balance_transaction: string;
metadata: IMetadata;
/**
* ID of the transfer that was reversed.
*/
transfer: string;
}
interface IDisputeEvidence {
/**
* Any server or activity logs showing proof that the customer accessed or downloaded the purchased
* digital product. This information should include IP addresses, corresponding timestamps, and any
* detailed recorded activity.
*/
access_activity_log?: string;
/**
* The billing addess provided by the customer.
*/
billing_address?: string;
/**
* (ID of a file upload) Your subscription cancellation policy, as shown to the customer.
*/
cancellation_policy?: string;
/**
* An explanation of how and when the customer was shown your refund policy prior to purchase.
*/
cancellation_policy_disclosure?: string;
/**
* A justification for why the customer<65>s subscription was not canceled.
*/
cancellation_rebuttal?: string;
/**
* (ID of a file upload) Any communication with the customer that you feel is relevant to your case (for
* example emails proving that they received the product or service, or demonstrating their use of or
* satisfaction with the product or service).
*/
customer_communication?: string;
/**
* The email address of the customer.
*/
customer_email_address?: string;
/**
* The name of the customer.
*/
customer_name?: string;
/**
* The IP address that the customer used when making the purchase.
*/
customer_purchase_ip?: string;
/**
* (ID of a file upload) A relevant document or contract showing the customer<65>s signature.
*/
customer_signature?: string;
/**
* (ID of a file upload) Documentation for the prior charge that can uniquely identify the charge,
* such as a receipt, shipping label, work order, etc. This document should be paired with a similar
* document from the disputed payment that proves the two payments are separate.
*/
duplicate_charge_documentation?: string;
/**
* An explanation of the difference between the disputed charge and the prior charge that appears to be a duplicate.
*/
duplicate_charge_explanation?: string;
/**
* The Stripe ID for the prior charge which appears to be a duplicate of the disputed charge.
*/
duplicate_charge_id?: string;
/**
* A description of the product or service which was sold.
*/
product_description?: string;
/**
* (ID of a file upload) Any receipt or message sent to the customer notifying them of the charge.
*/
receipt?: string;
/**
* (ID of a file upload) Your refund policy, as shown to the customer.
*/
refund_policy?: string;
/**
* Documentation demonstrating that the customer was shown your refund policy prior to purchase.
*/
refund_policy_disclosure?: string;
/**
* A justification for why the customer is not entitled to a refund.
*/
refund_refusal_explanation?: string;
/**
* The date on which the customer received or began receiving the purchased service, in a clear human-readable format.
*/
service_date?: string;
/**
* (ID of a file upload) Documentation showing proof that a service was provided to the customer. This could
* include a copy of a signed contract, work order, or other form of written agreement.
*/
service_documentation?: string;
/**
* The address to which a physical product was shipped. You should try to include as much complete address information as possible.
*/
shipping_address?: string;
/**
* The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc. If multiple carriers were used
* for this purchase, please separate them with commas.
*/
shipping_carrier?: string;
/**
* The date on which a physical product began its route to the shipping address, in a clear human-readable format.
*/
shipping_date?: string;
/**
* (ID of a file upload) Documentation showing proof that a product was shipped to the customer at the same address
* the customer provided to you. This could include a copy of the shipment receipt, shipping label, etc, and should
* show the full shipping address of the customer, if possible.
*/
shipping_documentation?: string;
/**
* The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers
* were generated for this purchase, please separate them with commas.
*/
shipping_tracking_number?: string;
/**
* (ID of a file upload) Any additional evidence or statements.
*/
uncategorized_file?: string;
/**
* Any additional evidence or statements.
*/
uncategorized_text?: string;
}
/**
* To safely retry an API request without accidentally performing the same operation twice,
* you can attach a unique key to any POST request made to the Stripe API via the Idempotency-Key: <key> header.
* For example, if a request to create a charge fails due to a network connection error, you can make
* a second request with the same key to guarantee that only a single charge is created.
* The creation of the key is completely up to you <20> we suggest using random strings or UUIDs.
* We'll always send back the same response for requests made with the same key, even if you make the request
* with different request parameters. The keys expire after 24 hours.
*/
interface IIdempotentOptions {
idempotency_key: string;
}
/**
* A set of key/value pairs that you can attach to a reversal. It can be useful for storing
* additional information about the reversal in a structured format.
*/
interface IMetadata extends Object { }
interface IShippingInformation {
/**
* Shipping address.
*/
address: {
/**
* Address line 1 (Street address/PO Box/Company name)
*/
line1: string;
/**
* Address line 2 (Apartment/Suite/Unit/Building)
*/
line2: string;
/**
* City/Suburb/Town/Village
*/
city: string;
/**
* State/Province/County
*/
state: string;
/**
* Zip/Postal Code
*/
postal_code: string;
/**
* 2-letter country code
*/
country: string;
};
/**
* Recipient name.
*/
name: string;
/**
* The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
*/
carrier: string;
/**
* Recipient phone (including extension).
*/
phone: string;
/**
* The tracking number for a physical product, obtained from the delivery service. If multiple
* tracking numbers were generated for this purchase, please separate them with commas.
*/
tracking_number: string;
}
interface IList<T> {
/**
* Value is 'list'
*/
object: string;
data: Array<T>;
has_more: boolean;
/**
* The URL where this list can be accessed.
*/
url: string;
/**
* The total number of items available. This value is not included by default,
* but you can request it by specifying ?include[]=total_count
*/
total_count: number;
}
interface IPaymentToken {
id: string;
card: {
name: string;
address_line1: string;
address_line2: string;
address_city: string;
address_state: string;
address_zip: string;
address_country: string;
country: string;
exp_month: number;
exp_year: number;
last4: string;
object: string;
brand: string;
funding: string;
};
created: number;
livemode: boolean;
type: string;
object: string;
used: boolean;
}
/**
* You can store multiple cards on a customer in order to charge the customer later. You
* can also store multiple debit cards on a recipient in order to transfer to those cards later.
*/
interface ICard {
/**
* ID of card (used in conjunction with a customer or recipient ID)
*/
id: string;
/**
* Value is 'card'
*/
object: string;
/**
* The card number
*/
'number': number;
/**
* Card brand. Can be Visa, American Express, MasterCard, Discover, JCB, Diners Club, or Unknown.
*/
brand: string;
exp_month: number;
exp_year: number;
/**
* Card funding type. Can be credit, debit, prepaid, or unknown
*/
funding: string;
last4: string;
address_city: string;
/**
* Billing address country, if provided when creating card
*/
address_country: string;
address_line1: string;
/**
* If address_line1 was provided, results of the check: pass, fail, unavailable, or unchecked.
*/
address_line1_check: string;
address_line2: string;
address_state: string;
address_zip: string;
/**
* If address_zip was provided, results of the check: pass, fail, unavailable, or unchecked.
*/
address_zip_check: string;
/**
* Two-letter ISO code representing the country of the card. You could use this
* attribute to get a sense of the international breakdown of cards you<6F>ve collected.
*/
country: string;
/**
* The customer that this card belongs to. This attribute will not be in the card object
* if the card belongs to a recipient instead.
*/
customer: string;
/**
* If a CVC was provided, results of the check: pass, fail, unavailable, or unchecked
*/
cvc_check: string;
/**
* (For Apple Pay integrations only.) The last four digits of the device account number.
*/
dynamic_last4: string;
/**
* Cardholder name
*/
name: string;
/**
* The recipient that this card belongs to. This attribute will not be in the card object if
* the card belongs to a customer instead.
*/
recipient: string;
/**
* Uniquely identifies this particular card number. You can use this attribute to check
* whether two customers who<68>ve signed up with you are using the same card number, for example.
*/
fingerprint: string;
}
interface IListOptions {
/**
* A filter on the list based on the object created field. The value can be a string with an integer Unix timestamp, or it can
* be a dictionary.
*/
created?: string | IDateFilter;
/**
* A filter on the list based on the object date field. The value can be a string with an integer Unix timestamp,
* or it can be a dictionary.
*/
date?: string | IDateFilter;
/**
* Only return charges for the customer specified by this customer ID.
*/
customer?: string;
/**
* A cursor for use in pagination. ending_before is an object ID that defines your place in the list. For instance, if you make
* a list request and receive 100 objects, starting with obj_bar, your subsequent call can include ending_before=obj_bar in
* order to fetch the previous page of the list.
*/
ending_before?: string;
/**
* A limit on the number of objects to be returned. Limit can range between 1 and 100 items.
*/
limit?: number;
/**
* A cursor for use in pagination. starting_after is an object ID that defines your place in the list. For instance, if you make
* a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo in order
* to fetch the next page of the list.
*/
starting_after?: string;
}
/**
* Stripe uses conventional HTTP response codes to indicate success or failure of an API request.
* In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that
* resulted from the provided information (e.g. a required parameter was missing, a charge failed, etc.),
* and codes in the 5xx range indicate an error with Stripe's servers. Not all errors map cleanly onto HTTP
* response codes, however. When a request is valid but does not complete successfully (e.g. a card is
* declined), we return a 402 error code.
*
* 200 - OK Everything worked as expected.
* 400 - Bad Request Often missing a required parameter.
* 401 - Unauthorized No valid API key provided.
* 402 - Request Failed Parameters were valid but request failed.
* 404 - Not Found The requested item doesn't exist.
* 500, 502, 503, 504 - Server Errors Something went wrong on Stripe's end.
*/
interface IStripeError {
/**
* The type of error returned. Can be invalid_request_error, api_error, or card_error.
*
*
* invalid_request_error Invalid request errors arise when your request has invalid parameters.
*
* api_error API errors cover any other type of problem (e.g. a temporary problem with Stripe's
* servers) and should turn up only very infrequently.
*
* card_error Card errors are the most common type of error you should expect to handle. They result
* when the user enters a card that can't be charged for some reason.
*/
type: string;
/**
* A human-readable message giving more details about the error. For card errors, these messages can
* be shown to your users.
*/
message?: string;
/**
* For card errors, a short string from amongst those listed on the right describing the kind of card
* error that occurred.
*
* incorrect_number The card number is incorrect.
* invalid_number The card number is not a valid credit card number.
* invalid_expiry_month The card's expiration month is invalid.
* invalid_expiry_year The card's expiration year is invalid.
* invalid_cvc The card's security code is invalid.
* expired_card The card has expired.
* incorrect_cvc The card's security code is incorrect.
* incorrect_zip The card's zip code failed validation.
* card_declined The card was declined.
* missing There is no card on a customer that is being charged.
* processing_error An error occurred while processing the card.
* rate_limit An error occurred due to requests hitting the API too
* quickly. Please let us know if you're consistently running
* into this error.
*/
code?: string;
/**
* The parameter the error relates to if the error is parameter-specific. You can use this to display a
* message near the correct form field, for example.
*/
param?: string;
}
}