API Test Keys

Update an Invoice

PATCH
/v1/invoices/:id

Click to copy

Use this endpoint to update the details of the invoice.

The following table displays ths updates allowed as per invoice states:

Is this page helpful?

Curl

change language

change language

1
curl -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET]
2
-X PATCH https://api.razorpay.com/v1/invoices/inv_DAtUWmR3Y5Dmxb \
3
-H 'content-type : application/json'
4
-d '{
5
"line_items": [
6
{
7
"id": "li_DAweOizsysoJU6",
8
"name": "Book / English August - Updated name and quantity",
9
"quantity": 1
10
},
11
{
12
"name": "Book / A Wild Sheep Chase",
13
"amount": 200,
14
"currency": "INR",
15
"quantity": 1
16
}
17
],
18
"notes": {
19
"updated-key": "An updated note."
20
}
21
}'

Success

Failure

1
{
2
"id": "inv_DAtUWmR3Y5Dmxb",
3
"entity": "invoice",
4
"receipt": "#0961",
5
"invoice_number": "#0961",
6
"customer_id": "cust_DAtUWmvpktokrT",
7
"customer_details": {
8
"id": "cust_DAtUWmvpktokrT",
9
"name": "Gaurav Kumar",
10
"email": "gaurav.kumar@example.com",
11
"contact": "9977886633",
12
"gstin": null,
13
"billing_address": {
14
"id": "addr_DAtUWoxgu91obl",
15
"type": "billing_address",
16
"primary": true,
17
"line1": "318 C-Wing, Suyog Co. Housing Society Ltd.",
18
"line2": "T.P.S Road, Vazira, Borivali",
19
"zipcode": "400092",
20
"city": "Mumbai",
21
"state": "Maharashtra",
22
"country": "in"
23
},
24
"shipping_address": null,
25
"customer_name": "Gaurav Kumar",
26
"customer_email": "gaurav.kumar@example.com",
27
"customer_contact": "9977886633"
28
},
29
"order_id": null,
30
"line_items": [
31
{
32
"id": "li_DAweOizsysoJU6",
33
"item_id": null,
34
"name": "Book / English August - Updated name and quantity",
35
"description": "150 points in Quidditch",
36
"amount": 400,
37
"unit_amount": 400,
38
"gross_amount": 400,
39
"tax_amount": 0,
40
"taxable_amount": 400,
41
"net_amount": 400,
42
"currency": "INR",
43
"type": "invoice",
44
"tax_inclusive": false,
45
"hsn_code": null,
46
"sac_code": null,
47
"tax_rate": null,
48
"unit": null,
49
"quantity": 1,
50
"taxes": []
51
},
52
{
53
"id": "li_DAwjWQUo07lnjF",
54
"item_id": null,
55
"name": "Book / A Wild Sheep Chase",
56
"description": null,
57
"amount": 200,
58
"unit_amount": 200,
59
"gross_amount": 200,
60
"tax_amount": 0,
61
"taxable_amount": 200,
62
"net_amount": 200,
63
"currency": "INR",
64
"type": "invoice",
65
"tax_inclusive": false,
66
"hsn_code": null,
67
"sac_code": null,
68
"tax_rate": null,
69
"unit": null,
70
"quantity": 1,
71
"taxes": []
72
}
73
],
74
"payment_id": null,
75
"status": "draft",
76
"expire_by": 1567103399,
77
"issued_at": null,
78
"paid_at": null,
79
"cancelled_at": null,
80
"expired_at": null,
81
"sms_status": null,
82
"email_status": null,
83
"date": 1566891149,
84
"terms": null,
85
"partial_payment": false,
86
"gross_amount": 600,
87
"tax_amount": 0,
88
"taxable_amount": 600,
89
"amount": 600,
90
"amount_paid": null,
91
"amount_due": null,
92
"currency": "INR",
93
"currency_symbol": "₹",
94
"description": "This is a test invoice.",
95
"notes": {
96
"updated-key": "An updated note."
97
},
98
"comment": null,
99
"short_url": null,
100
"view_less": true,
101
"billing_start": null,
102
"billing_end": null,
103
"type": "invoice",
104
"group_taxes_discounts": false,
105
"created_at": 1566906474,
106
"idempotency_key": null
107
}
Path Parameters
id

*

string

The unique identifier of the invoice.

Request Parameters
type
string

Indicates the type of entity. Here, it is invoice.

description
string

A brief description of the invoice.

draft
string

Invoice is created in draft state when value is set to 1.

customer_id
string

You can pass the customer_id in this field, if you are using the

. If not, you can pass the customer object described in the below fields.

customer
object

Customer details.

Show child parameters (5)

line_items
object

Details of the line item that is billed in the invoice. Maximum of 50 line items.

Show child parameters (6)

expire_by
integer

Timestamp, in Unix format, at which the invoice will expire.

sms_notify
boolean

Defines who handles the SMS notification. Possible values:

  • 0: You send the notification to the customer.
  • 1 (default): Razorpay sends the notification to the customer.

email_notify
boolean

Defines who handles the email notification. Possible values:

  • 0: You send the notification to the customer.
  • 1 (default): Razorpay sends the notification to the customer.

partial_payment
boolean

Indicates whether the customer can make a partial payment on the invoice. Possible values:

  • true: The customer can make partial payments.
  • false (default): The customer cannot make partial payments.

currency
string

The currency associated with the invoice. You must mandatorily pass this parameter if accepting international payments. If you have passed currency as a sub-parameter in the line_item object, you must ensure that the same currency is passed in both places. Know about the

Handy Tips

Razorpay has added support for zero decimal currencies, such as JPY, and three decimal currencies, such as KWD, BHD, and OMR, allowing businesses to accept international payments in these currencies. Know more about

(May 2024).

Response Parameters
id
string

The unique identifier of the invoice.

entity
string

Indicates the type of entity. Here, it is invoice.

type
string

Here, it should be invoice.

invoice_number
string

Unique number you added for internal reference. The minimum character length is 1 and maximum is 40.

customer_id
string

The unique identifier of the customer. You can create customer_id using the

. Alternatively, you can pass the customer object described in the below fields.

customer_details
object

Details of the customer.

Show child parameters (6)

order_id
string

The unique identifier of the order associated with the invoice.

line_items
object

Details of the line item that is billed in the invoice. Maximum of 50 line items.

Show child parameters (8)

payment_id
string

Unique identifier of a payment made against this invoice.

status
string

The status of the invoice. Know more about

. Possible values:
  • draft
  • issued
  • partially_paid
  • paid
  • cancelled
  • expired
  • deleted

expire_by
integer

Timestamp, in Unix format, at which the invoice will expire.

issued_at
integer

Timestamp, in Unix format, at which the invoice was issued to the customer.

paid_at
integer

Timestamp, in Unix format, at which the payment was made.

cancelled_at
integer

Timestamp, in Unix format, at which the invoice was cancelled.

expired_at
integer

Timestamp, in Unix format, at which the invoice expired.

sms_status
string

The delivery status of the SMS notification for the invoice sent to the customer. Possible values:

  • pending
  • sent

email_status
string

The delivery status of the email notification for the invoice sent to the customer. Possible values:

  • pending
  • sent

partial_payment
boolean

Indicates whether the customer can make a partial payment on the invoice. Possible values:

  • true: The customer can make partial payments.
  • false (default): The customer cannot make partial payments.

amount
integer

Amount to be paid using the invoice. Must be in the smallest unit of the currency. For example, if the amount to be received from the customer is ₹300.00, pass the value as 30000.

amount_paid
integer

Amount paid by the customer against the invoice.

amount_due
integer

The remaining amount to be paid by the customer for the issued invoice.

currency
string

The currency associated with the invoice. You must mandatorily pass this parameter if accepting international payments. If you have passed currency as a sub-parameter in the line_item object, you must ensure that the same currency is passed in both places. Know about the

description
string

A brief description of the invoice. The maximum character length is 2048.

notes
object

Any custom notes added to the invoice. Maximum of 2048 characters.

short_url
string

The short URL that is generated. Share this link with customers to accept payments.

date
integer

Timestamp, in Unix format, that indicates the issue date of the invoice.

terms
string

Any terms to be included in the invoice. Maximum of 2048 characters.

comment
string

Any comments to be added in the invoice. Maximum of 2048 characters.

Errors

The api key provided is invalid

Error Status: 400

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

Solution

customer, line_items, sms_notify, email_notify, draft, date is/are not required and should not be sent

Error Status: 400

The mentioned parameters are not required for updating an invoice.

Solution

The amount field is required when item id is not present.

Error Status: 400

Only name is entered without item id or amount.

Solution

The name field is required when item id is not present.

Error Status: 400

Possible reasons:

  • Only the amount field is entered without a name or item id.
  • The amount, name or item id are not entered.

Solution

Update an Invoice

PATCH
/v1/invoices/:id

Click to copy

Use this endpoint to update the details of the invoice.

The following table displays ths updates allowed as per invoice states:

Is this page helpful?

Path Parameters
id

*

string

The unique identifier of the invoice.

Request Parameters
type
string

Indicates the type of entity. Here, it is invoice.

description
string

A brief description of the invoice.

draft
string

Invoice is created in draft state when value is set to 1.

customer_id
string

You can pass the customer_id in this field, if you are using the

. If not, you can pass the customer object described in the below fields.

customer
object

Customer details.

Show child parameters (5)

line_items
object

Details of the line item that is billed in the invoice. Maximum of 50 line items.

Show child parameters (6)

expire_by
integer

Timestamp, in Unix format, at which the invoice will expire.

sms_notify
boolean

Defines who handles the SMS notification. Possible values:

  • 0: You send the notification to the customer.
  • 1 (default): Razorpay sends the notification to the customer.

email_notify
boolean

Defines who handles the email notification. Possible values:

  • 0: You send the notification to the customer.
  • 1 (default): Razorpay sends the notification to the customer.

partial_payment
boolean

Indicates whether the customer can make a partial payment on the invoice. Possible values:

  • true: The customer can make partial payments.
  • false (default): The customer cannot make partial payments.

currency
string

The currency associated with the invoice. You must mandatorily pass this parameter if accepting international payments. If you have passed currency as a sub-parameter in the line_item object, you must ensure that the same currency is passed in both places. Know about the

Handy Tips

Razorpay has added support for zero decimal currencies, such as JPY, and three decimal currencies, such as KWD, BHD, and OMR, allowing businesses to accept international payments in these currencies. Know more about

(May 2024).

Response Parameters
id
string

The unique identifier of the invoice.

entity
string

Indicates the type of entity. Here, it is invoice.

type
string

Here, it should be invoice.

invoice_number
string

Unique number you added for internal reference. The minimum character length is 1 and maximum is 40.

customer_id
string

The unique identifier of the customer. You can create customer_id using the

. Alternatively, you can pass the customer object described in the below fields.

customer_details
object

Details of the customer.

Show child parameters (6)

order_id
string

The unique identifier of the order associated with the invoice.

line_items
object

Details of the line item that is billed in the invoice. Maximum of 50 line items.

Show child parameters (8)

payment_id
string

Unique identifier of a payment made against this invoice.

status
string

The status of the invoice. Know more about

. Possible values:
  • draft
  • issued
  • partially_paid
  • paid
  • cancelled
  • expired
  • deleted

expire_by
integer

Timestamp, in Unix format, at which the invoice will expire.

issued_at
integer

Timestamp, in Unix format, at which the invoice was issued to the customer.

paid_at
integer

Timestamp, in Unix format, at which the payment was made.

cancelled_at
integer

Timestamp, in Unix format, at which the invoice was cancelled.

expired_at
integer

Timestamp, in Unix format, at which the invoice expired.

sms_status
string

The delivery status of the SMS notification for the invoice sent to the customer. Possible values:

  • pending
  • sent

email_status
string

The delivery status of the email notification for the invoice sent to the customer. Possible values:

  • pending
  • sent

partial_payment
boolean

Indicates whether the customer can make a partial payment on the invoice. Possible values:

  • true: The customer can make partial payments.
  • false (default): The customer cannot make partial payments.

amount
integer

Amount to be paid using the invoice. Must be in the smallest unit of the currency. For example, if the amount to be received from the customer is ₹300.00, pass the value as 30000.

amount_paid
integer

Amount paid by the customer against the invoice.

amount_due
integer

The remaining amount to be paid by the customer for the issued invoice.

currency
string

The currency associated with the invoice. You must mandatorily pass this parameter if accepting international payments. If you have passed currency as a sub-parameter in the line_item object, you must ensure that the same currency is passed in both places. Know about the

description
string

A brief description of the invoice. The maximum character length is 2048.

notes
object

Any custom notes added to the invoice. Maximum of 2048 characters.

short_url
string

The short URL that is generated. Share this link with customers to accept payments.

date
integer

Timestamp, in Unix format, that indicates the issue date of the invoice.

terms
string

Any terms to be included in the invoice. Maximum of 2048 characters.

comment
string

Any comments to be added in the invoice. Maximum of 2048 characters.

Errors

The api key provided is invalid

Error Status: 400

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

Solution

customer, line_items, sms_notify, email_notify, draft, date is/are not required and should not be sent

Error Status: 400

The mentioned parameters are not required for updating an invoice.

Solution

The amount field is required when item id is not present.

Error Status: 400

Only name is entered without item id or amount.

Solution

The name field is required when item id is not present.

Error Status: 400

Possible reasons:

  • Only the amount field is entered without a name or item id.
  • The amount, name or item id are not entered.

Solution

Curl

change language

change language

1
curl -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET]
2
-X PATCH https://api.razorpay.com/v1/invoices/inv_DAtUWmR3Y5Dmxb \
3
-H 'content-type : application/json'
4
-d '{
5
"line_items": [
6
{
7
"id": "li_DAweOizsysoJU6",
8
"name": "Book / English August - Updated name and quantity",
9
"quantity": 1
10
},
11
{
12
"name": "Book / A Wild Sheep Chase",
13
"amount": 200,
14
"currency": "INR",
15
"quantity": 1
16
}
17
],
18
"notes": {
19
"updated-key": "An updated note."
20
}
21
}'

Success

Failure

1
{
2
"id": "inv_DAtUWmR3Y5Dmxb",
3
"entity": "invoice",
4
"receipt": "#0961",
5
"invoice_number": "#0961",
6
"customer_id": "cust_DAtUWmvpktokrT",
7
"customer_details": {
8
"id": "cust_DAtUWmvpktokrT",
9
"name": "Gaurav Kumar",
10
"email": "gaurav.kumar@example.com",
11
"contact": "9977886633",
12
"gstin": null,
13
"billing_address": {
14
"id": "addr_DAtUWoxgu91obl",
15
"type": "billing_address",
16
"primary": true,
17
"line1": "318 C-Wing, Suyog Co. Housing Society Ltd.",
18
"line2": "T.P.S Road, Vazira, Borivali",
19
"zipcode": "400092",
20
"city": "Mumbai",
21
"state": "Maharashtra",
22
"country": "in"
23
},
24
"shipping_address": null,
25
"customer_name": "Gaurav Kumar",
26
"customer_email": "gaurav.kumar@example.com",
27
"customer_contact": "9977886633"
28
},
29
"order_id": null,
30
"line_items": [
31
{
32
"id": "li_DAweOizsysoJU6",
33
"item_id": null,
34
"name": "Book / English August - Updated name and quantity",
35
"description": "150 points in Quidditch",
36
"amount": 400,
37
"unit_amount": 400,
38
"gross_amount": 400,
39
"tax_amount": 0,
40
"taxable_amount": 400,
41
"net_amount": 400,
42
"currency": "INR",
43
"type": "invoice",
44
"tax_inclusive": false,
45
"hsn_code": null,
46
"sac_code": null,
47
"tax_rate": null,
48
"unit": null,
49
"quantity": 1,
50
"taxes": []
51
},
52
{
53
"id": "li_DAwjWQUo07lnjF",
54
"item_id": null,
55
"name": "Book / A Wild Sheep Chase",
56
"description": null,
57
"amount": 200,
58
"unit_amount": 200,
59
"gross_amount": 200,
60
"tax_amount": 0,
61
"taxable_amount": 200,
62
"net_amount": 200,
63
"currency": "INR",
64
"type": "invoice",
65
"tax_inclusive": false,
66
"hsn_code": null,
67
"sac_code": null,
68
"tax_rate": null,
69
"unit": null,
70
"quantity": 1,
71
"taxes": []
72
}
73
],
74
"payment_id": null,
75
"status": "draft",
76
"expire_by": 1567103399,
77
"issued_at": null,
78
"paid_at": null,
79
"cancelled_at": null,
80
"expired_at": null,
81
"sms_status": null,
82
"email_status": null,
83
"date": 1566891149,
84
"terms": null,
85
"partial_payment": false,
86
"gross_amount": 600,
87
"tax_amount": 0,
88
"taxable_amount": 600,
89
"amount": 600,
90
"amount_paid": null,
91
"amount_due": null,
92
"currency": "INR",
93
"currency_symbol": "₹",
94
"description": "This is a test invoice.",
95
"notes": {
96
"updated-key": "An updated note."
97
},
98
"comment": null,
99
"short_url": null,
100
"view_less": true,
101
"billing_start": null,
102
"billing_end": null,
103
"type": "invoice",
104
"group_taxes_discounts": false,
105
"created_at": 1566906474,
106
"idempotency_key": null
107
}