Invoices API Creating Line Items

For example here is a sample code that creates an order then an invoice from the order.

<?php
require 'vendor/autoload.php';

// Replace these values with your Square application credentials
$accessToken = 'YOUR_ACCESS_TOKEN';
$locationId = 'YOUR_LOCATION_ID';

// Create and configure a new API client object
$client = new Square\SquareClient([
    'accessToken' => $accessToken,
    'environment' => Square\Environment::SANDBOX,
]);

// Create an order with one line item
$orderApi = $client->getOrdersApi();
$lineItem = new Square\Models\OrderLineItem('1');
$lineItem->setName('Coffee');
$lineItem->setBasePriceMoney(new Square\Models\Money(300, 'USD'));
$order = new Square\Models\CreateOrderRequest();
$order->setLineItems([$lineItem]);
$order->setLocationId($locationId);
$createOrderResponse = $orderApi->createOrder($order);
$createdOrder = $createOrderResponse->getResult()->getOrder();

// Create an invoice for the order
$invoiceApi = $client->getInvoicesApi();
$invoice = new Square\Models\Invoice();
$invoice->setOrderId($createdOrder->getId());
$invoice->setLocationId($locationId);
$invoice->setPrimaryRecipient(new Square\Models\InvoiceRecipient([
    'customer_id' => 'CUSTOMER_ID', // Replace with a valid customer ID
]));
$invoice->setPaymentRequests([
    new Square\Models\InvoicePaymentRequest([
        'requestType' => 'BALANCE',
        'dueDate' => date('Y-m-d', strtotime('+7 days')), // Set due date to 7 days from now
        'tippingEnabled' => false,
    ]),
]);
$createInvoiceResponse

:slightly_smiling_face: