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

# GoPay Documentation

> Accept payments, send transfers, and receive signed webhooks with GoPay

<div className="flex flex-col items-center justify-center text-center mt-12 mb-12">
  <h1 className="text-4xl font-bold tracking-tight mb-4">
    Hey, let's integrate GoPay
  </h1>

  <p className="text-sm text-blue-500 max-w-2xl mx-auto leading-relaxed">
    Licensed by the National Bank of Ethiopia under directive ONPS 02/2020 (PSO Licence No. NPS-PII/029/2026).
    Receive payments, make payouts, and get real-time settlement notifications. Simple, Secure, and Instant.
  </p>
</div>

<CardGroup cols={3}>
  <Card title="Accept Payments" icon="credit-card" href="/receive-payments/index">
    Take customer payments through a hosted checkout — one signed API call returns a checkout URL
  </Card>

  <Card title="Make Transfers" icon="money-bill-transfer" href="/transfers/index">
    Pay out to Telebirr, CBE Birr, Awash, Dashen, and Bank of Abyssinia from your merchant wallet
  </Card>

  <Card title="Webhooks" icon="webhook" href="/webhooks/index">
    Receive signed, verifiable notifications the moment a transaction settles
  </Card>
</CardGroup>

## How an Integration Works

<Steps>
  <Step title="Create your API key">
    Generate an Ed25519 key pair in the merchant dashboard — or bring your own key and register just the public half. Your private key never leaves your servers. See [Authentication](/getting-started/authentication).
  </Step>

  <Step title="Sign and send a request">
    Sign each request with your private key and call `initiate-payment` (C2B) or `initiate-transfer` (B2C). GoPay verifies the signature, checks replay protection, and processes the transaction.
  </Step>

  <Step title="Receive the settlement webhook">
    When the transaction reaches a final state, GoPay POSTs a signed callback to your notify URL. Verify it with GoPay's public key — no shared secrets involved.
  </Step>
</Steps>

## Security by Design

<CardGroup cols={3}>
  <Card title="Ed25519 Signatures" icon="key">
    Public-key request signing in both directions. Neither a leaked database nor a compromised channel can forge requests or callbacks.
  </Card>

  <Card title="Replay Protection" icon="shield-halved">
    Single-use request IDs, strict timestamp windows, and host-bound signatures stop replayed or redirected requests cold.
  </Card>

  <Card title="Defense in Depth" icon="lock">
    Per-key permissions and IP allowlists, per-merchant rate limits, and HTTPS-only callbacks — enforced on every request.
  </Card>
</CardGroup>

## Developer Resources

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/getting-started/authentication">
    Ed25519 request signing with helpers in Node.js, Python, and Go
  </Card>

  <Card title="Errors" icon="triangle-exclamation" href="/getting-started/errors">
    Error format, code taxonomy, and retry guidance
  </Card>

  <Card title="Payment Quick Start" icon="bolt" href="/receive-payments/quickstart">
    Accept your first payment in minutes
  </Card>

  <Card title="Transfer Quick Start" icon="paper-plane" href="/transfers/quickstart">
    Send your first payout in minutes
  </Card>

  <Card title="Code Examples" icon="file-code" href="/receive-payments/examples">
    Complete API calls in Node.js, Python, and Go
  </Card>

  <Card title="Testing Guide" icon="vial" href="/resources/testing-guide">
    Test your integration end to end before going live
  </Card>
</CardGroup>
