> For the complete documentation index, see [llms.txt](https://ivorypay.gitbook.io/ivorypay-on-off-ramp-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ivorypay.gitbook.io/ivorypay-on-off-ramp-documentation/api-reference-customers/get.md).

# Get Customer

Retrieve a customer by ID, email, or reference code.

Retrieves a customer's details by their ID, email address, or IvoryPay reference code.

## Endpoint

```
GET /v1/customers/:prop
```

## Authentication

Accepts either a merchant API key or a business-user JWT.

| Header          | Value                             |
| --------------- | --------------------------------- |
| `Authorization` | `<api_key>` **or** `Bearer <jwt>` |

{% hint style="info" %}
A sibling endpoint `GET /v1/customers/me` exists for customer self-lookup. It is authenticated with a customer JWT (`Authorization: Bearer <customer_jwt>`) and returns the currently authenticated customer's own record (including KYC data).
{% endhint %}

## Path parameters

| Parameter | Type   | Description                                |
| --------- | ------ | ------------------------------------------ |
| `prop`    | string | Customer UUID, email address, or `refCode` |

## Example requests

{% tabs %}
{% tab title="cURL" %}

```bash
# By UUID
curl -X GET https://ramp-api.ivorypay.io/api/v1/customers/c3d4e5f6-a7b8-9012-cdef-a12345678901 \
  -H "Authorization: your_api_key"

# By email
curl -X GET https://ramp-api.ivorypay.io/api/v1/customers/amina@example.com \
  -H "Authorization: your_api_key"

# By refCode
curl -X GET https://ramp-api.ivorypay.io/api/v1/customers/abc123def4 \
  -H "Authorization: your_api_key"
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
// By UUID, email, or refCode
const prop = "c3d4e5f6-a7b8-9012-cdef-a12345678901";

const response = await fetch(`https://ramp-api.ivorypay.io/api/v1/customers/${prop}`, {
  method: "GET",
  headers: {
    "Authorization": "your_api_key",
  },
});

const data = await response.json();
console.log(data);
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

# By UUID, email, or refCode
prop = "c3d4e5f6-a7b8-9012-cdef-a12345678901"

response = requests.get(
    f"https://ramp-api.ivorypay.io/api/v1/customers/{prop}",
    headers={
        "Authorization": "your_api_key",
    },
)

print(response.json())
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	// By UUID, email, or refCode
	prop := "c3d4e5f6-a7b8-9012-cdef-a12345678901"

	req, _ := http.NewRequest("GET", "https://ramp-api.ivorypay.io/api/v1/customers/"+prop, nil)
	req.Header.Set("Authorization", "your_api_key")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
```

{% endtab %}
{% endtabs %}

## Example response

```json
{
  "success": true,
  "message": "Query successful",
  "data": {
    "id": "c3d4e5f6-a7b8-9012-cdef-a12345678901",
    "refCode": "abc123def4",
    "firstName": "Amina",
    "lastName": "Okafor",
    "email": "amina@example.com",
    "phoneNumber": "+2348012345678",
    "context": "LIVE",
    "isVerified": false,
    "createdAt": "2026-03-26T12:00:00.000Z"
  }
}
```

## Error cases

| Error code      | Description        |
| --------------- | ------------------ |
| `ONOFFRAMP0053` | Customer not found |
