Magento 2 API: Create an Invoice
An invoice is created after you receive payment for a specific order. It’s like a confirmation that a purchase has been made and your customers also have all the information about what they’ve bought. In Magento 2, you can create an invoice via API easily. In this post, I will guide you on how to do that with a particular example. In the below example, the order was paid via a bank transfer. Because of this, you have to let Magento know that the order has been captured already.
In today’s article, I will show you how to call API to create a full invoice in Magento 2.
Create an Invoice in 3 steps:
Step 1: Capture payment
By adding an array of items to the payload to be invoiced, you will be able to create a partial invoice.
Endpoint
Here, the orderid
is 3
POST <host>/rest/<store_code>/V1/order/3/invoice
Headers
Content-Type application/json
Authorization Bearer <administrator token>
Payload
{
"capture": true,
"notify": true
}
Response
The invoice id, for example, 3.
Step 2: View the invoice
In general, the structure of an invoice is similar to order. The only difference is that the order contains more details.
Endpoint
GET <host>/rest/<store_code>/V1/invoices/3
Headers
Content-Type application/json
Authorization Bearer <administrator token>
Payload
Irrelevant
Response
The order_item_id
values will be used to create a shipment in the following step.
Code sample
{
"base_currency_code": "USD",
"base_discount_amount": 0,
"base_grand_total": 165,
"base_discount_tax_compensation_amount": 0,
"base_shipping_amount": 5,
"base_shipping_incl_tax": 5,
"base_shipping_tax_amount": 0,
"base_subtotal": 160,
"base_subtotal_incl_tax": 160,
"base_tax_amount": 0,
"base_to_global_rate": 1,
"base_to_order_rate": 1,
"billing_address_id": 6,
"can_void_flag": 0,
"created_at": "2017-08-21 22:36:02",
"discount_amount": 0,
"email_sent": 1,
"entity_id": 3,
"global_currency_code": "USD",
"grand_total": 165,
"discount_tax_compensation_amount": 0,
"increment_id": "000000003",
"order_currency_code": "USD",
"order_id": 3,
"shipping_address_id": 5,
"shipping_amount": 5,
"shipping_discount_tax_compensation_amount": 0,
"shipping_incl_tax": 5,
"shipping_tax_amount": 0,
"state": 2,
"store_currency_code": "USD",
"store_id": 1,
"store_to_base_rate": 0,
"store_to_order_rate": 0,
"subtotal": 160,
"subtotal_incl_tax": 160,
"tax_amount": 0,
"total_qty": 9,
"updated_at": "2017-08-21 22:36:03",
"items": [
{
"base_discount_tax_compensation_amount": 0,
"base_price": 22,
"base_price_incl_tax": 22,
"base_row_total": 22,
"base_row_total_incl_tax": 22,
"base_tax_amount": 0,
"entity_id": 3,
"discount_tax_compensation_amount": 0,
"name": "Radiant Tee-M-Orange",
"parent_id": 3,
"price": 22,
"price_incl_tax": 22,
"product_id": 1553,
"row_total": 22,
"row_total_incl_tax": 22,
"sku": "WS12-M-Orange",
"tax_amount": 0,
"order_item_id": 3,
"qty": 1
},
{
"base_discount_tax_compensation_amount": 0,
"base_price": 18,
"base_price_incl_tax": 18,
"base_row_total": 18,
"base_row_total_incl_tax": 18,
"base_tax_amount": 0,
"entity_id": 4,
"discount_tax_compensation_amount": 0,
"name": "Advanced Pilates & Yoga (Strength)",
"parent_id": 3,
"price": 18,
"price_incl_tax": 18,
"product_id": 49,
"row_total": 18,
"row_total_incl_tax": 18,
"sku": "240-LV08",
"tax_amount": 0,
"order_item_id": 4,
"qty": 1
},
{
"base_price": 68,
"base_price_incl_tax": 68,
"entity_id": 5,
"name": "Sprite Yoga Companion Kit",
"parent_id": 3,
"price": 68,
"price_incl_tax": 68,
"product_id": 51,
"sku": "24-WG080-24-WG084-24-WG088-24-WG082-blue-24-WG086",
"order_item_id": 5,
"qty": 1
},
{
"base_discount_tax_compensation_amount": 0,
"base_price": 27,
"base_price_incl_tax": 27,
"base_row_total": 27,
"base_row_total_incl_tax": 27,
"base_tax_amount": 0,
"entity_id": 6,
"discount_tax_compensation_amount": 0,
"name": "Sprite Stasis Ball 65 cm",
"parent_id": 3,
"price": 27,
"price_incl_tax": 27,
"product_id": 29,
"row_total": 27,
"row_total_incl_tax": 27,
"sku": "24-WG082-blue",
"tax_amount": 0,
"order_item_id": 6,
"qty": 1
},
{
"base_discount_tax_compensation_amount": 0,
"base_price": 5,
"base_price_incl_tax": 5,
"base_row_total": 5,
"base_row_total_incl_tax": 5,
"base_tax_amount": 0,
"entity_id": 7,
"discount_tax_compensation_amount": 0,
"name": "Sprite Foam Yoga Brick",
"parent_id": 3,
"price": 5,
"price_incl_tax": 5,
"product_id": 21,
"row_total": 5,
"row_total_incl_tax": 5,
"sku": "24-WG084",
"tax_amount": 0,
"order_item_id": 7,
"qty": 1
},
{
"base_discount_tax_compensation_amount": 0,
"base_price": 17,
"base_price_incl_tax": 17,
"base_row_total": 17,
"base_row_total_incl_tax": 17,
"base_tax_amount": 0,
"entity_id": 8,
"discount_tax_compensation_amount": 0,
"name": "Sprite Yoga Strap 8 foot",
"parent_id": 3,
"price": 17,
"price_incl_tax": 17,
"product_id": 34,
"row_total": 17,
"row_total_incl_tax": 17,
"sku": "24-WG086",
"tax_amount": 0,
"order_item_id": 8,
"qty": 1
},
{
"base_discount_tax_compensation_amount": 0,
"base_price": 19,
"base_price_incl_tax": 19,
"base_row_total": 19,
"base_row_total_incl_tax": 19,
"base_tax_amount": 0,
"entity_id": 9,
"discount_tax_compensation_amount": 0,
"name": "Sprite Foam Roller",
"parent_id": 3,
"price": 19,
"price_incl_tax": 19,
"product_id": 22,
"row_total": 19,
"row_total_incl_tax": 19,
"sku": "24-WG088",
"tax_amount": 0,
"order_item_id": 9,
"qty": 1
},
{
"base_discount_tax_compensation_amount": 0,
"base_price": 52,
"base_price_incl_tax": 52,
"base_row_total": 52,
"base_row_total_incl_tax": 52,
"base_tax_amount": 0,
"entity_id": 10,
"discount_tax_compensation_amount": 0,
"name": "Chaz Kangeroo Hoodie",
"parent_id": 3,
"price": 52,
"price_incl_tax": 52,
"product_id": 67,
"row_total": 52,
"row_total_incl_tax": 52,
"sku": "MH01-S-Gray",
"tax_amount": 0,
"order_item_id": 10,
"qty": 1
},
{
"base_price": 0,
"entity_id": 11,
"name": "Chaz Kangeroo Hoodie-S-Gray",
"parent_id": 3,
"price": 0,
"product_id": 56,
"sku": "MH01-S-Gray",
"order_item_id": 11,
"qty": 1
}
],
"comments": []
}
Step 3: Verify this step
In this step, you need to log in to Admin. Then go to Sales > Invoices
. In the grid, you will see the invoice is displayed. The status should be Paid.
Next, click Sales > Orders
, the status will be Processing.
Conclusion
In the above information, I have just shown you how to call API to create a full invoice in Magento 2. Hope it’s helpful for you when you need to create an invoice. If you have any questions or new ideas, feel free to leave a comment below.
Thanks for reading!
- How to create a simple Hello World module for Magento 2
- Magento 2 Block Template Ultimate Guides
- How to Create Module in Magento 2
- How to Create Controller in Magento 2
- How to create CRUD Models in Magento 2
- How to Create Magento 2 Block, Layout and Templates
- Configuration - System.xml
- How To Create Admin Menu In Magento 2
- Admin ACL
- Admin Grid