> For the complete documentation index, see [llms.txt](https://developer.branta.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.branta.pro/setup/platforms.md).

# Platforms

A **platform** is anything that issues a Bitcoin payment destination (on-chain address, Lightning invoice, etc.) to a sender — a merchant store, a payment processor, an invoicing tool, a donation page. Posting those destinations to Branta means senders see *who* they are paying before they hit send: your name, your logo, a verify link.

### What you get

* **Counterparty rendering** in any wallet using the Branta SDK and on [scan.branta.pro](https://scan.branta.pro/scan).
* **Public verify URL** for every payment (e.g. `guardrail.branta.pro/v2/verify/{destination}`) you can link from your own checkout.
* **Zero-knowledge mode**, where the destination is encrypted client-side before posting — Branta never sees the plain-text address.
* A listing in the [Branta network directory](https://branta.pro/network) if you open a PR on [branta-network](https://github.com/BrantaOps/branta-network).

### Onboarding

Four steps. Steps 1–3 happen once; step 4 is the integration work.

#### 1. Create an account

Sign up at [guardrail.branta.pro](https://guardrail.branta.pro). The Branta dashboard (we call it Guardrail) is where you manage your platform, request approval, and issue API keys.

For testing, the staging dashboard is at [staging.guardrail.branta.pro](https://staging.guardrail.branta.pro/session/new). Staging and production are siloed — see [Environments](/tech/environments.md).

#### 2. Submit a Platform Request

In Guardrail, create a Platform Request. A Branta admin reviews it (a light KYB check — we confirm your business and that the platform brand you're claiming is yours) and approves the platform on your account.

{% hint style="info" %}
Approvals are manual. If you need this turned around quickly for a launch or demo, mention the timeline in the request.
{% endhint %}

#### 3. Create an API key

Once your platform is approved, generate an API key from Guardrail. Keep it secret — see [Authentication](/tech/authentication.md) for header format and handling rules.

{% hint style="danger" %}
API keys carry sensitive privileges. Never commit them to source control, ship them in client-side code, or share them in plain text. Rotate immediately if exposed.
{% endhint %}

#### 4. Integrate

Pick the integration shape that matches what you already run:

| If you use…                                                                 | Do this                                                                                                                    |
| --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **BTCPay Server**                                                           | Install the [BTCPay plugin](/setup/platforms/payment-gateway-options/btcpay-server.md) — no code.                          |
| **Zaprite**                                                                 | Connect Branta in the [Zaprite settings](/setup/platforms/payment-gateway-options/zaprite.md) — no code.                   |
| **Take My Sats**                                                            | Paste your API key into [Take My Sats store settings](/setup/platforms/payment-gateway-options/take-my-sats.md) — no code. |
| **Anything else** (your own checkout, a custom processor, a one-off script) | Use the [Custom Integration](/setup/platforms/custom-integration.md) — SDK or raw HTTP.                                    |

### After you're live

* **Test your integration.** Issue a real payment in your platform and confirm it resolves on [scan.branta.pro](https://scan.branta.pro/scan) and any compatible wallet. The [example QR codes](/setup/wallets/example-qr-codes.md) cover all four destination scenarios (on-chain, Lightning, ZK variants, not-found).

{% hint style="info" %}
If you publish ZK on-chain destinations (`isZk: true`), the QR code you render at checkout must include `branta_id` and `branta_secret` query parameters so wallets can look up and decrypt the record. See [QR code / payment URI](/setup/platforms/custom-integration.md#qr-code-payment-uri-zk-on-chain) in the Custom Integration guide and the [BIP-321 URI scheme spec](https://github.com/bitcoin/bips/blob/master/bip-0321.mediawiki).
{% endhint %}

\* \*\*Get listed.\*\* Open a PR on \[branta-network]\(<https://github.com/BrantaOps/branta-network>) to appear in the public \[partner directory]\(<https://branta.pro/network>). \* \*\*Hosting other platforms?\*\* See \[Parent Platforms]\(../parent-platforms.md) — you'll need the \`parent\_platform\` feature toggled on your account and a slightly different credential flow.
