> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spark.money/llms.txt
> Use this file to discover all available pages before exploring further.

# createLightningInvoice

> Create a BOLT11 Lightning invoice to receive payments.

Creates a Lightning invoice for receiving payments via the `SparkWallet`.

## Method Signature

```typescript theme={null}
type CreateLightningInvoiceParams = {
  amountSats: number;
  memo?: string;
  expirySeconds?: number;
  includeSparkAddress?: boolean;
  includeSparkInvoice?: boolean;
  receiverIdentityPubkey?: string;
  descriptionHash?: string;
};

async createLightningInvoice(params: CreateLightningInvoiceParams): Promise<LightningReceiveRequest>;
```

## Parameters

<ResponseField name="amountSats" type="number" required>
  Amount in satoshis to receive. Use `0` for zero-amount invoices. Must be a safe integer (less than 2^53).
</ResponseField>

<ResponseField name="memo" type="string">
  Optional memo/description for the invoice (max 639 characters). Cannot be used together with `descriptionHash`.
</ResponseField>

<ResponseField name="expirySeconds" type="number">
  Invoice expiry time in seconds (default: 2,592,000 = 30 days)
</ResponseField>

<ResponseField name="includeSparkAddress" type="boolean">
  Whether to embed Spark address in the invoice fallback field. Mutually exclusive with `includeSparkInvoice`. **Note:** If the payer uses the fallback address instead of Lightning, the payment cannot be correlated to this invoice—it appears as a separate Spark transfer.
</ResponseField>

<ResponseField name="includeSparkInvoice" type="boolean">
  Whether to include a Spark invoice in the invoice routing hints. Mutually exclusive with `includeSparkAddress`. When enabled, allows payers to seamlessly pay over Spark if they support it.
</ResponseField>

<ResponseField name="receiverIdentityPubkey" type="string">
  33-byte compressed identity pubkey for generating invoices for other Spark users
</ResponseField>

<ResponseField name="descriptionHash" type="string">
  SHA256 hash of the description for BOLT11 description\_hash field. Cannot be used together with `memo`.
</ResponseField>

## Returns

<ResponseField name="request" type="LightningReceiveRequest" required>
  The Lightning receive request object containing:

  * `id`: Unique identifier for the request
  * `invoice`: Invoice object with `encodedInvoice`, `paymentHash`, `amount`, etc.
  * `status`: Request status
  * `createdAt`, `updatedAt`: Timestamps
</ResponseField>

<Note>
  Access the BOLT11 invoice string via `request.invoice.encodedInvoice`.
</Note>

## Examples

```typescript theme={null}
// Basic Lightning invoice
const request = await wallet.createLightningInvoice({
  amountSats: 1000,
  memo: "Payment for services",
  expirySeconds: 3600 // 1 hour
});

console.log("Lightning invoice:", request.invoice.encodedInvoice);
console.log("Request ID:", request.id);
console.log("Payment hash:", request.invoice.paymentHash);

// Invoice with embedded Spark invoice (for seamless Spark payments)
const sparkEnabledRequest = await wallet.createLightningInvoice({
  amountSats: 1000,
  memo: "Payment with Spark fallback",
  includeSparkInvoice: true // Enables Spark-to-Spark payments
});

console.log("Invoice with Spark support:", sparkEnabledRequest.invoice.encodedInvoice);
```
