---
title: "Get a payment link (public)"
description: "Retrieves a payment link by its ID without requiring authentication. This endpoint is intended for the payer-facing checkout experience. Only active payment links are returned."
protocol: rest
method: GET
endpoint: "/v1/payment-links/public/{id}"
baseUrl: "https://api.gravv.xyz"
group: "Payment Links"
---

# Get a payment link (public)

<Endpoint method="GET" path="/v1/payment-links/public/{id}" />

Retrieves a payment link by its ID without requiring authentication. This endpoint is intended for the payer-facing checkout experience. Only active payment links are returned.

## Path Parameters

<ParamField name="id" path="id" type="string" required>
  Unique identifier of the payment link.
</ParamField>

## Responses

| Status | Description |
| --- | --- |
| `200` | Payment link retrieved successfully. |
| `400` | Invalid request parameters. |
| `404` | Payment link not found or not active. |

### 200 response

<ResponseField name="payment_link" type="object" required>

  <Expandable title="properties">
    <ResponseField name="id" type="string" required>
      Unique identifier for the payment link.
    </ResponseField>

    <ResponseField name="created_at" type="string" required>
      Timestamp when the payment link was created (UTC).
    </ResponseField>

    <ResponseField name="updated_at" type="string" required>
      Timestamp when the payment link was last updated (UTC).
    </ResponseField>

    <ResponseField name="customer_id" type="string" required>
      ID of the customer associated with this payment link.
    </ResponseField>

    <ResponseField name="tenant_id" type="string" required>
      ID of the tenant that owns this payment link.
    </ResponseField>

    <ResponseField name="payer_name" type="string" required>
      Name of the person making the payment.
    </ResponseField>

    <ResponseField name="payer_email" type="string,null">
      Email address of the person making the payment.
    </ResponseField>

    <ResponseField name="payee_name" type="string" required>
      Name of the person or business receiving the payment.
    </ResponseField>

    <ResponseField name="settlement_account_id" type="string" required>
      ID of the account where settled funds will be deposited after a successful payment.
    </ResponseField>

    <ResponseField name="supported_networks" type="string[]" required>
      List of blockchain networks the payer can use to complete the payment.

      Possible values: `stellar`, `ethereum`, `polygon`, `avalanche`, `solana`
    </ResponseField>

    <ResponseField name="wallet_addresses" type="object" required>
      A map of blockchain network names to their corresponding wallet addresses for receiving crypto payments.
    </ResponseField>

    <ResponseField name="link_url" type="string,null">
      Shareable URL the payer visits to complete the payment.
    </ResponseField>

    <ResponseField name="status" type="string" required>
      Current status of the payment link.

      Possible values: `active`, `paused`
    </ResponseField>

  </Expandable>
</ResponseField>

<ResponseField name="wallet_addresses" type="object" required>
  A map of blockchain network names to their corresponding wallet addresses for receiving crypto payments.
</ResponseField>

<ResponseExample>

```json title="Response"
{
  "payment_link": {
    "id": "b905cc64-0f90-4de0-a77c-b183de86b248",
    "created_at": "2026-05-07T15:39:02.639185Z",
    "updated_at": "2026-05-07T15:39:02.639186Z",
    "customer_id": "5e713759-3416-44f5-b797-efd0299aefc1",
    "tenant_id": "dfa96ede-fc13-43cf-8328-8b910d1cd1d2",
    "payer_name": "payer2",
    "payer_email": "payer@example.com",
    "payee_name": "Rose",
    "settlement_account_id": "b3e3c9fd-77ed-4d14-9c45-68db60d17d3a",
    "supported_networks": [
      "stellar",
      "ethereum"
    ],
    "wallet_addresses": {
      "ethereum": "0x119827bef8a3030cd401478fa7b33ac94d3c2572",
      "stellar": "GD2WTFAKQJA4BRQRNY3RWGWOFMK52WXZWV3CPCHZV2SJP2QGNBIL6TXQ"
    },
    "link_url": "https://stables.gravv.xyz/b905cc64-0f90-4de0-a77c-b183de86b248",
    "status": "active"
  },
  "wallet_addresses": {
    "ethereum": "0x119827bef8a3030cd401478fa7b33ac94d3c2572",
    "stellar": "GD2WTFAKQJA4BRQRNY3RWGWOFMK52WXZWV3CPCHZV2SJP2QGNBIL6TXQ"
  }
}
```

</ResponseExample>

### 400 response

<ResponseField name="data" type="null" required>
</ResponseField>

<ResponseField name="error" type="string" required>
  Human-readable error message.
</ResponseField>

<ResponseExample>

```json title="Response"
{
  "data": null,
  "error": "Invalid request parameters"
}
```

</ResponseExample>

### 404 response

<ResponseField name="data" type="any" required>
  Always null for error responses.
</ResponseField>

<ResponseField name="error" type="string" required>
  Human-readable error message.
</ResponseField>

<ResponseField name="error" type="any">

  <Expandable title="properties">
    <ResponseField name="code" type="any">
    </ResponseField>

    <ResponseField name="message" type="any">
    </ResponseField>

  </Expandable>
</ResponseField>

<ResponseExample>

```json title="Response"
{
  "data": null,
  "error": {
    "code": "NOT_FOUND",
    "message": "Payment link not found or inactive",
    "details": {}
  }
}
```

</ResponseExample>
