> ## 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.

# Addressing

Spark doesn't force a single address format on your users. Depending on what you're building, your users might interact with standard Bitcoin taproot addresses, Lightning invoices, Spark addresses, or none of the above. You choose what to expose.

***

## Address types

### Bitcoin taproot addresses

Every Spark wallet has a standard Bitcoin taproot address (`bc1p...` on mainnet) for L1 deposits. This is the same address format used by any Bitcoin wallet. Your users can receive Bitcoin from Coinbase, a hardware wallet, or any on-chain source.

On test networks you'll see different prefixes: `tb1p...` (testnet/signet) and `bcrt1p...` (regtest/local).

```typescript theme={null}
const depositAddress = await wallet.getStaticDepositAddress();
// bc1p5d7rjq7g6rdk2yhzks9smtbqtedr4dekq08ge8ztwac72sfr9rusxg3297
```

This means a Spark-powered app can function as a full L1 Bitcoin wallet. Users deposit to a taproot address, hold Bitcoin on Spark, and withdraw back to L1 whenever they want.

### Lightning invoices

Spark wallets can create and pay Lightning invoices without running a node or managing channels. Some apps only expose Lightning. Users never see a Spark address or know Spark exists.

```typescript theme={null}
// Create a Lightning invoice
const { invoice } = await wallet.createLightningInvoice({
  amountSats: 50000,
  memo: "Payment for order #1234",
});

// Pay a Lightning invoice
const payment = await wallet.payLightningInvoice({
  invoice: "lnbc500u1p...",
});
```

### Spark addresses

Spark addresses are Bech32m-encoded identifiers that map to a wallet's identity public key. Think of them as user IDs. They identify a wallet on the Spark network. Transfers between Spark addresses are instant and free.

```typescript theme={null}
const sparkAddress = await wallet.getSparkAddress();
// spark1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu
```

Most wallets don't expose Spark addresses to end users. They're useful behind the scenes for free, instant transfers between your own users, between services, or for settlement between apps.

***

## What to expose

Spark is modular. Pick the addressing that fits your use case:

| Use case               | What users see                                        | What Spark does behind the scenes           |
| ---------------------- | ----------------------------------------------------- | ------------------------------------------- |
| **Bitcoin wallet**     | Taproot address (`bc1p...` / `tb1p...` / `bcrt1p...`) | L1 deposits, Spark balance, L1 withdrawals  |
| **Payments app**       | Lightning invoices                                    | Spark handles routing, no node needed       |
| **Exchange / fintech** | Nothing (internal accounts)                           | Spark addresses for free internal transfers |
| **P2P transfers**      | Spark addresses or usernames                          | Instant, free Spark-to-Spark settlement     |

The point: Spark adapts to your product. It can be a full L1 wallet, a Lightning payments backend, a free internal ledger, or all three at once. Your users don't need to know what's underneath.

***

## Spark address format

For developers working directly with Spark addresses, here's the format:

<CodeGroup>
  ```typescript MAINNET theme={null}
  spark1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu
  ```

  ```typescript REGTEST theme={null}
  sparkrt1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu
  ```

  ```typescript TESTNET theme={null}
  sparkt1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu
  ```

  ```typescript SIGNET theme={null}
  sparks1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu
  ```

  ```typescript LOCAL theme={null}
  sparkl1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu
  ```
</CodeGroup>

### Network prefixes

| Network     | Prefix    | Availability |
| ----------- | --------- | ------------ |
| **Mainnet** | `spark`   | Available    |
| **Regtest** | `sparkrt` | Available    |
| **Testnet** | `sparkt`  | Coming soon  |
| **Signet**  | `sparks`  | Coming soon  |
| **Local**   | `sparkl`  | Available    |

### Key facts

* Derived from your wallet's network and identity public key
* Same wallet always produces the same Spark address
* Network-specific. A mainnet wallet and regtest wallet will have different addresses
