{"id":461,"date":"2025-03-20T17:26:54","date_gmt":"2025-03-20T17:26:54","guid":{"rendered":"http:\/\/documentation.wpgetpaid.com\/?post_type=gd_place&#038;p=461"},"modified":"2025-03-26T15:15:21","modified_gmt":"2025-03-26T15:15:21","slug":"how-to-create-an-invoice-programmatically","status":"publish","type":"gd_place","link":"https:\/\/wpgetpaid.com\/documentation\/article\/discounts\/how-to-create-an-invoice-programmatically\/","title":{"rendered":"How to Create an Invoice Programmatically?"},"content":{"rendered":"\n<p>You can create an invoice programmatically in GetPaid. The general syntax to create an invoice is:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\">wpinv_insert_invoice( array $invoice_data = array(), bool $wp_error = false );<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><br>Parameters<\/h2>\n\n\n\n<div><strong>$invoice_data&nbsp;<\/strong><strong>(array) (Required)<\/strong> An array of elements to insert an invoice.<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>status\u00a0<\/strong><strong>(string) (Optional)<\/strong> The invoice status. Learn more about invoice statuses.\n<ul class=\"wp-block-list\">\n<li>Default: \u2018wpi-pending\u2019\u00a0<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>user_id (int) (Optional)<\/strong> The invoice user id.\n<ul class=\"wp-block-list\">\n<li>Default: user ID of current logged user<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>post_date (string) (Optional)<\/strong> The date-time in Y-m-d H:i:s format.\n<ul class=\"wp-block-list\">\n<li>Default: Default is the current time.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>cart_details (array) (Required)<\/strong> The invoice items details.<\/li>\n\n\n\n<li><strong>id (int) (Required)<\/strong> The item id.<\/li>\n\n\n\n<li><strong>quantity (int) (Optional)<\/strong> The item quantity.\n<ul class=\"wp-block-list\">\n<li>Default: 1<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>custom_price (float) (Optional)<\/strong> The item custom price. This price will overwrite the item price.\n<ul class=\"wp-block-list\">\n<li>Default: empty<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>meta (array) (Optional)<\/strong> The item meta. This stores custom values that to be used for this line item.<\/li>\n\n\n\n<li><strong>payment_details (array) (Optional)<\/strong> The invoice payment details. Required for paid invoice.<\/li>\n\n\n\n<li><strong>gateway (string) (Optional)<\/strong> The payment gateway name. Required for paid invoice.\n<ul class=\"wp-block-list\">\n<li>Default: \u2018manual\u2019<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>currency (string) (Optional)<\/strong> The currency code (ISO 4217). ex: USD\n<ul class=\"wp-block-list\">\n<li>Default: Store\u2019s default currency.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>transaction_id (string) (Optional)<\/strong> The payment transaction id for paid invoices.\n<ul class=\"wp-block-list\">\n<li>Default: Current invoice ID.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>user_info (array) (Optional)<\/strong> User billing address details.<\/li>\n\n\n\n<li><strong>first_name (string) (Optional)<\/strong> Billing address first name.\n<ul class=\"wp-block-list\">\n<li>Default: User\u2019s saved first name.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>last_name (string) (Optional)<\/strong> Billing address last name or surname.\n<ul class=\"wp-block-list\">\n<li>Default: User\u2019s saved last name.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>phone (string) (Optional)<\/strong> Billing address phone number.\n<ul class=\"wp-block-list\">\n<li>Default: User\u2019s saved phone number.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>address (string) (Optional)<\/strong> Billing address street name\/street no.\/block no etc.\n<ul class=\"wp-block-list\">\n<li>Default: User\u2019s saved phone address.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>city (string) (Optional)<\/strong> Billing address city.\n<ul class=\"wp-block-list\">\n<li>Default: User\u2019s saved city.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>country (string) (Optional)<\/strong> The country code (ISO2). ex: US\n<ul class=\"wp-block-list\">\n<li>Default: User\u2019s saved country or store\u2019s default country.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>state (string) (Optional)<\/strong> The state name or state code.\n<ul class=\"wp-block-list\">\n<li>Default: User\u2019s saved state or store\u2019s default state.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>zip (string) (Optional)<\/strong> Billing address postcode.\n<ul class=\"wp-block-list\">\n<li>Default: User\u2019s saved postcode.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>company (string) (Optional) <\/strong>User\u2019s company name.\n<ul class=\"wp-block-list\">\n<li>Default: empty<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>vat_number (string) (Optional)<\/strong> User\u2019s vat number.\n<ul class=\"wp-block-list\">\n<li>Default: empty<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>discount (string) (Optional)<\/strong> The coupon code to apply discount.\n<ul class=\"wp-block-list\">\n<li>Default: empty<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>due_date (string) (Optional)<\/strong> The invoice due date in Y-m-d. Only for invoice which has payment pending.<\/li>\n\n\n\n<li><strong>ip (string) (Optional)<\/strong> IP address of the system from which invoice created\/paid.\n<ul class=\"wp-block-list\">\n<li>Default: IP address of the current system.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>user_note (string) (Optional)<\/strong> Short message or note for user. User notes will be included in user invoice email sent to users.\n<ul class=\"wp-block-list\">\n<li>Default: empty<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>private_note (string) (Optional)<\/strong> Short message or note for system use. Only admin can see private notes from backend invoice page.\n<ul class=\"wp-block-list\">\n<li>Default: empty<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>parent (int) (Optional)<\/strong> For renewal payment only. Parent invoice ID for which the renewal payment is being paid.\n<ul class=\"wp-block-list\">\n<li>Default: 0<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>$wp_error (bool) (Optional)<\/strong> Whether to return a WP_Error on failure.\n<ul class=\"wp-block-list\">\n<li>Default: false<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Return # (int|object|WP_Error) <\/strong>The value 0 or WP_Error on failure. The WPInv_Invoice object on success.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Examples<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Create an invoice with simple data with status \u201cpending payment\u201d. (<a href=\"https:\/\/github.com\/AyeCode\/wpinv-example\/blob\/master\/invoices\/create-invoice-pending-payment-simple.php\">GitHub<\/a>)<\/h3>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\">$data = array(\n\t&#039;status&#039;        =&gt; &#039;wpi-pending&#039;, \n\t&#039;user_id&#039;       =&gt; 1,\n\t&#039;cart_details&#039;  =&gt; array(\n\tarray(\n\t\t&#039;id&#039;    =&gt; 2118\n\t),\n) ); \n$invoice = wpinv_insert_invoice( $data, true );<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Create an invoice with advanced data with status \u201cpending payment\u201d. (<a href=\"https:\/\/github.com\/AyeCode\/wpinv-example\/blob\/master\/invoices\/create-invoice-pending-payment-advanced\">GitHub<\/a>)<\/h3>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\">$data = array(\n\t&#039;status&#039;            =&gt; &#039;wpi-pending&#039;,\n\t&#039;user_id&#039;           =&gt; 1,\n\t&#039;cart_details&#039;      =&gt; array(\n\tarray(\n\t\t&#039;id&#039;            =&gt; 2118,\n\t\t&#039;quantity&#039;      =&gt; 1,\n\t\t&#039;custom_price&#039;  =&gt; &#039;100.00&#039;,\n\t\t&#039;meta&#039;          =&gt; array(\n\t\t&#039;post_id&#039;   =&gt; 1239\n\t\t)\n\t),),\n\t&#039;user_info&#039;         =&gt; array(\n\t\t&#039;first_name&#039;        =&gt; &#039;GD&#039;,\n\t\t&#039;last_name&#039;         =&gt; &#039;User&#039;,\n\t\t&#039;phone&#039;             =&gt; &#039;+91 1119348834&#039;,\n\t\t&#039;address&#039;           =&gt; &#039;Kankariya Lake&#039;,\n\t\t&#039;city&#039;              =&gt; &#039;Ahmedabad&#039;,\n\t\t&#039;country&#039;           =&gt; &#039;IN&#039;,\n\t\t&#039;state&#039;             =&gt; &#039;GJ&#039;,\n\t\t&#039;zip&#039;               =&gt; &#039;380002&#039;,\n\t\t&#039;company&#039;           =&gt; &#039;&#039;,\n\t\t&#039;vat_number&#039;        =&gt; &#039;&#039;,\n\t\t&#039;discount&#039;          =&gt; &#039;10P&#039;\n\t\t),\n\t&#039;due_date&#039;          =&gt; &#039;2017-08-10&#039;,\n\t&#039;ip&#039;                =&gt; &#039;1.39.51.23&#039;,\n\t&#039;user_note&#039;         =&gt; &#039;This is user note.&#039;,\n\t&#039;private_note&#039;      =&gt; &#039;This is a system note.&#039;,\n);\n$invoice = wpinv_insert_invoice( $data, true );<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Create an invoice with simple data with status \u201cpaid payment\u201d. (<a href=\"https:\/\/github.com\/AyeCode\/wpinv-example\/blob\/master\/invoices\/create-invoice-paid-payment-simple.php\">GitHub<\/a>)<\/h3>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\">$data = array(\n\t&#039;status&#039;            =&gt; &#039;publish&#039;,\n\t&#039;user_id&#039;           =&gt; 1,\n\t&#039;post_date&#039;         =&gt; &#039;2017-08-08 11:20:38&#039;,\n\t&#039;cart_details&#039;      =&gt; array(\n\t\tarray(\n\t\t\t&#039;id&#039;        =&gt; 2118 ),\n\t\t),\n\t&#039;payment_details&#039;   =&gt; array(\n\t\t\t&#039;gateway&#039;           =&gt; &#039;paypal&#039;,\n\t\t\t&#039;currency&#039;          =&gt; &#039;USD&#039;,\n\t\t\t&#039;transaction_id&#039;    =&gt; &#039;9TK485797B9101342&#039;\n\t\t),\n\t);\n$invoice = wpinv_insert_invoice( $data, true );\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Create an invoice with advance data withthe status \u201cpaid payment\u201d. (<a href=\"https:\/\/github.com\/AyeCode\/wpinv-example\/blob\/master\/invoices\/create-invoice-paid-payment-advanced.php\">GitHub<\/a>)<\/h3>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\">$data = array(\n\t&#039;status&#039;            =&gt; &#039;publish&#039;,\n\t&#039;user_id&#039;           =&gt; 1,\n\t&#039;post_date&#039;         =&gt; &#039;2017-08-08 10:10:15&#039;,\n\t&#039;cart_details&#039;      =&gt; array(\n\t\tarray(\n\t\t\t&#039;id&#039;            =&gt; 2118,\n\t\t\t&#039;quantity&#039;      =&gt; 1,\n\t\t\t&#039;custom_price&#039;  =&gt; &#039;100.00&#039;,\n\t\t\t&#039;meta&#039;          =&gt; array(\n\t\t\t\t&#039;post_id&#039;   =&gt; 1239 ) ),),\n\t&#039;payment_details&#039;   =&gt; array(\n\t&#039;gateway&#039;           =&gt; &#039;bank_transfer&#039;,\n\t&#039;currency&#039;          =&gt; &#039;USD&#039;,\n\t&#039;transaction_id&#039;    =&gt; &#039;BNK443545454557&#039; ),\n\t&#039;user_info&#039;         =&gt; array(\n\t\t&#039;first_name&#039;        =&gt; &#039;GD&#039;,\n\t\t&#039;last_name&#039;         =&gt; &#039;User&#039;,\n\t\t&#039;phone&#039;             =&gt; &#039;+91 1119348834&#039;,\n\t\t&#039;address&#039;           =&gt; &#039;Kankariya Lake&#039;,\n\t\t&#039;city&#039;              =&gt; &#039;Ahmedabad&#039;,\n\t\t&#039;country&#039;           =&gt; &#039;IN&#039;,\n\t\t&#039;state&#039;             =&gt; &#039;GJ&#039;,\n\t\t&#039;zip&#039;               =&gt; &#039;380002&#039;,\n\t\t&#039;company&#039;           =&gt; &#039;&#039;,\n\t\t&#039;vat_number&#039;        =&gt; &#039;&#039;,\n\t\t&#039;discount&#039;          =&gt; &#039;10P&#039; ),\n\t&#039;ip&#039;                =&gt; &#039;1.39.51.23&#039;,\n\t&#039;user_note&#039;         =&gt; &#039;This is user note.&#039;,\n\t&#039;private_note&#039;      =&gt; &#039;This is a system note.&#039;,\n\t&#039;parent&#039;            =&gt; 0 ); \n$invoice = wpinv_insert_invoice( $data, true )\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>You can create an invoice programmatically in GetPaid. The general syntax to create an invoice is:&nbsp; Parameters $invoice_data&nbsp;(array) (Required) An array of elements to insert an invoice. Examples Create an invoice with simple data with status \u201cpending payment\u201d. (GitHub) Create an invoice with advanced data with status \u201cpending payment\u201d. (GitHub) Create an invoice with simple [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"article\/tags":[288,289,290],"article\/categories":[220,211],"class_list":["post-461","gd_place","type-gd_place","status-publish","hentry","gd_place_tags-create-invoice","gd_place_tags-rest-api","gd_place_tags-remote-invoice","gd_placecategory-discounts","gd_placecategory-tips-tricks-more"],"_links":{"self":[{"href":"https:\/\/wpgetpaid.com\/documentation\/wp-json\/wp\/v2\/article\/461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpgetpaid.com\/documentation\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/wpgetpaid.com\/documentation\/wp-json\/wp\/v2\/types\/gd_place"}],"author":[{"embeddable":true,"href":"https:\/\/wpgetpaid.com\/documentation\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wpgetpaid.com\/documentation\/wp-json\/wp\/v2\/comments?post=461"}],"version-history":[{"count":0,"href":"https:\/\/wpgetpaid.com\/documentation\/wp-json\/wp\/v2\/article\/461\/revisions"}],"wp:attachment":[{"href":"https:\/\/wpgetpaid.com\/documentation\/wp-json\/wp\/v2\/media?parent=461"}],"wp:term":[{"taxonomy":"gd_place_tags","embeddable":true,"href":"https:\/\/wpgetpaid.com\/documentation\/wp-json\/wp\/v2\/article\/tags?post=461"},{"taxonomy":"gd_placecategory","embeddable":true,"href":"https:\/\/wpgetpaid.com\/documentation\/wp-json\/wp\/v2\/article\/categories?post=461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}