Skip to main content
GET
JavaScript

Authorizations

Authorization
string
header
required

Send your API key as a bearer token: Authorization: Bearer <api_key>. A test mode key starts with dodo_test_, for example dodo_test_AbCd1234EfGh5678.<secret>. A live mode key starts with dodo_live_. Use a test mode key on test.dodopayments.com and a live mode key on live.dodopayments.com. Keys from before these tags have no tag and operate as before.

Path Parameters

invoice_id
string
required

Invoice ID

Response

An invoice-led invoice. Every read and every invoice.* webhook uses this schema.

allowed_actions
enum<string>[]
required

The actions that the current status accepts.

An action that a merchant can request on the invoice in its current status.

Available options:
edit,
finalize,
delete,
send,
retry,
void,
mark_uncollectable,
change_dunning,
add_note,
duplicate
amount_due
integer<int64>
required

The amount that the customer must pay. Zero unless the invoice is open or past due.

amount_paid
integer<int64>
required

The sum of the succeeded payments, in the smallest currency unit. A late payment is not included after its late refund.

amount_refunded
integer<int64>
required

The sum of the succeeded refunds, in the currency of each payment. The late refund of a late payment is not included.

billing_mode
enum<string>
required
Available options:
normal,
invoice_led
business_id
string
required
created_at
string<date-time>
required
credits
integer<int64>
required

Customer credits applied at finalise, in the smallest currency unit. Zero or less.

currency
enum<string>
required
Available options:
AED,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BWP,
BYN,
BZD,
CAD,
CHF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ETB,
EUR,
FJD,
FKP,
GBP,
GEL,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HRK,
HTG,
HUF,
IDR,
ILS,
INR,
IQD,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SEK,
SGD,
SHP,
SLE,
SLL,
SOS,
SRD,
SSP,
STN,
SVC,
SZL,
THB,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XCD,
XOF,
XPF,
YER,
ZAR,
ZMW
customer
object
required
discount_ids
string[]
required

The discount codes of the invoice.

editable_fields
enum<string>[]
required

The fields that PATCH can change in the current status.

Available options:
customer,
items,
discounts,
currency,
billing_address,
tax_id,
review_required,
due_at,
collection_method,
memo,
customer_email,
cc_emails,
dunning,
metadata
frequency
One Time · object
required

How often the invoice lines bill. mixed covers several intervals, or one-time lines next to a plan.

invoice_id
string
required
metadata
object
required
refund_ids
string[]
required
retry_count
integer<int32>
required

The number of failed automatic charges.

row_version
integer<int64>
required

Goes up by one on each change. Use it to ignore an older webhook delivery.

status
enum<string>
required

The message of each variant is the label of the invoice document.

Available options:
open,
paid,
void,
draft,
past_due,
uncollectable
subscription_ids
string[]
required
tags
enum<string>[]
required
Available options:
refunded,
partially_refunded,
disputed,
payment_reversed
tax
integer<int32>
required

Tax in the smallest currency unit.

total_amount
integer<int32>
required

Total with tax, before credits, in the smallest currency unit.

collection_method
null | enum<string>
Available options:
auto_charge,
manual
due_at
string<date-time> | null
dunning_state
null | enum<string>

null for an invoice that has no collection: draft, paid, void or uncollectable.

Available options:
not_started,
active,
paused,
exhausted
finalized_at
string<date-time> | null
hosted_url
string | null

The page where the customer pays. null until the invoice is sent.

lines
object[] | null

Only on a single invoice. A list leaves it out.

memo
string | null
next_reminder_at
string<date-time> | null

The time of the next reminder email to the customer, before or after the due date. null when no reminder email will go out.

next_retry_at
string<date-time> | null
payment_terms_days
integer<int32> | null

Days from finalise to the due date. null when the invoice has a custom due date.

payments
object[] | null

Only on a single invoice. A list leaves it out.

pdf_url
string | null
reminder_settings
Snapshot · object

null on a draft that keeps all reminder settings of the business.

review_deadline
string<date-time> | null

The time at which a draft that waits for review finalises.

sent_at
string<date-time> | null
Last modified on November 10, 2026