How to Create an Invoice Programmatically?
You can create an invoice programmatically in GetPaid. The general syntax to create an invoice is:
wpinv_insert_invoice( array $invoice_data = array(), bool $wp_error = false )
Parameters
$invoice_data
(array) (Required) An array of elements to insert an invoice.
- status (string) (Optional) The invoice status. Learn more about invoice statuses.
- Default: ‘wpi-pending’
- user_id (int) (Optional) The invoice user id.
- Default: user ID of current logged user
- post_date (string) (Optional) The date-time in Y-m-d H:i:s format.
- Default: Default is the current time.
- cart_details (array) (Required) The invoice items details.
- id (int) (Required) The item id.
- quantity (int) (Optional) The item quantity.
- Default: 1
- custom_price (float) (Optional) The item custom price. This price will overwrite the item price.
- Default: empty
- meta (array) (Optional) The item meta. This stores custom values that to be used for this line item.
- payment_details (array) (Optional) The invoice payment details. Required for paid invoice.
- gateway (string) (Optional) The payment gateway name. Required for paid invoice.
- Default: ‘manual’
- currency (string) (Optional) The currency code (ISO 4217). ex: USD
- Default: Store’s default currency.
- transaction_id (string) (Optional) The payment transaction id for paid invoices.
- Default: Current invoice ID.
- user_info (array) (Optional) User billing address details.
- first_name (string) (Optional) Billing address first name.
- Default: User’s saved first name.
- last_name (string) (Optional) Billing address last name or surname.
- Default: User’s saved last name.
- phone (string) (Optional) Billing address phone number.
- Default: User’s saved phone number.
- address (string) (Optional) Billing address street name/street no./block no etc.
- Default: User’s saved phone address.
- city (string) (Optional) Billing address city.
- Default: User’s saved city.
- country (string) (Optional) The country code (ISO2). ex: US
- Default: User’s saved country or store’s default country.
- state (string) (Optional) The state name or state code.
- Default: User’s saved state or store’s default state.
- zip (string) (Optional) Billing address postcode.
- Default: User’s saved postcode.
- company (string) (Optional) User’s company name.
- Default: empty
- vat_number (string) (Optional) User’s vat number.
- Default: empty
- discount (string) (Optional) The coupon code to apply discount.
- Default: empty
- due_date (string) (Optional) The invoice due date in Y-m-d. Only for invoice which has payment pending.
- ip (string) (Optional) IP address of the system from which invoice created/paid.
- Default: IP address of the current system.
- user_note (string) (Optional) Short message or note for user. User notes will be included in user invoice email sent to users.
- Default: empty
- private_note (string) (Optional) Short message or note for system use. Only admin can see private notes from backend invoice page.
- Default: empty
- parent (int) (Optional) For renewal payment only. Parent invoice ID for which the renewal payment is being paid.
- Default: 0
- $wp_error (bool) (Optional) Whether to return a WP_Error on failure.
- Default: false
- Return # (int|object|WP_Error) The value 0 or WP_Error on failure. The WPInv_Invoice object on success.
Examples
Create an invoice with simple data with status “pending payment”. (GitHub)
$data = array( 'status' => 'wpi-pending', 'user_id' => 1, 'cart_details' => array( array( 'id' => 2118 ), ) ); $invoice = wpinv_insert_invoice( $data, true );
Create an invoice with advanced data with status “pending payment”. (GitHub)
$data = array( 'status' => 'wpi-pending', 'user_id' => 1, 'cart_details' => array( array( 'id' => 2118, 'quantity' => 1, 'custom_price' => '100.00', 'meta' => array( 'post_id' => 1239 ) ),), 'user_info' => array( 'first_name' => 'GD', 'last_name' => 'User', 'phone' => '+91 1119348834', 'address' => 'Kankariya Lake', 'city' => 'Ahmedabad', 'country' => 'IN', 'state' => 'GJ', 'zip' => '380002', 'company' => '', 'vat_number' => '', 'discount' => '10P' ), 'due_date' => '2017-08-10', 'ip' => '1.39.51.23', 'user_note' => 'This is user note.', 'private_note' => 'This is a system note.', ); $invoice = wpinv_insert_invoice( $data, true );
Create an invoice with simple data with status “paid payment”. (GitHub)
$data = array( 'status' => 'publish', 'user_id' => 1, 'post_date' => '2017-08-08 11:20:38', 'cart_details' => array( array( 'id' => 2118 ), ), 'payment_details' => array( 'gateway' => 'paypal', 'currency' => 'USD', 'transaction_id' => '9TK485797B9101342' ), ); $invoice = wpinv_insert_invoice( $data, true );
Create a invoice with advance data with status “paid payment”. (GitHub)
$data = array( 'status' => 'publish', 'user_id' => 1, 'post_date' => '2017-08-08 10:10:15', 'cart_details' => array( array( 'id' => 2118, 'quantity' => 1, 'custom_price' => '100.00', 'meta' => array( 'post_id' => 1239 ) ),), 'payment_details' => array( 'gateway' => 'bank_transfer', 'currency' => 'USD', 'transaction_id' => 'BNK443545454557' ), 'user_info' => array( 'first_name' => 'GD', 'last_name' => 'User', 'phone' => '+91 1119348834', 'address' => 'Kankariya Lake', 'city' => 'Ahmedabad', 'country' => 'IN', 'state' => 'GJ', 'zip' => '380002', 'company' => '', 'vat_number' => '', 'discount' => '10P' ), 'ip' => '1.39.51.23', 'user_note' => 'This is user note.', 'private_note' => 'This is a system note.', 'parent' => 0 ); $invoice = wpinv_insert_invoice( $data, true )