Get a customer
curl --request GET \
--url https://api.moonpay.com/platform/v1/customers/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.moonpay.com/platform/v1/customers/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.moonpay.com/platform/v1/customers/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.moonpay.com/platform/v1/customers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.moonpay.com/platform/v1/customers/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.moonpay.com/platform/v1/customers/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moonpay.com/platform/v1/customers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "c1d2e3f4-5678-90ab-cdef-1234567890ab",
"externalCustomerId": "customer-1234",
"kyc": {
"status": "collecting",
"requirements": {
"basicDetails": {
"status": "incomplete",
"requiredFields": [
"firstName",
"lastName",
"dateOfBirth",
"nationality"
]
},
"residentialAddress": {
"status": "incomplete",
"requiredFields": [
"street",
"locality",
"postalCode",
"administrativeArea"
]
},
"identityDocuments": {
"status": "incomplete"
},
"selfie": {
"status": "incomplete"
}
},
"challenge": {
"url": "https://platform.moonpay.com/platform/v1/challenge?challengeToken=eyJhbGciOiJFUzI1NiJ9...",
"expiresAt": "2026-01-29T15:30:50.000Z"
}
}
}
}{
"code": "unauthorized",
"message": "Not authorized"
}{
"code": "forbidden",
"message": "Forbidden"
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>",
"details": {}
}
]
}Customers
Get a customer
Get a customer’s details and KYC standing
GET
/
platform
/
v1
/
customers
/
{id}
Get a customer
curl --request GET \
--url https://api.moonpay.com/platform/v1/customers/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.moonpay.com/platform/v1/customers/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.moonpay.com/platform/v1/customers/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.moonpay.com/platform/v1/customers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.moonpay.com/platform/v1/customers/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.moonpay.com/platform/v1/customers/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moonpay.com/platform/v1/customers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "c1d2e3f4-5678-90ab-cdef-1234567890ab",
"externalCustomerId": "customer-1234",
"kyc": {
"status": "collecting",
"requirements": {
"basicDetails": {
"status": "incomplete",
"requiredFields": [
"firstName",
"lastName",
"dateOfBirth",
"nationality"
]
},
"residentialAddress": {
"status": "incomplete",
"requiredFields": [
"street",
"locality",
"postalCode",
"administrativeArea"
]
},
"identityDocuments": {
"status": "incomplete"
},
"selfie": {
"status": "incomplete"
}
},
"challenge": {
"url": "https://platform.moonpay.com/platform/v1/challenge?challengeToken=eyJhbGciOiJFUzI1NiJ9...",
"expiresAt": "2026-01-29T15:30:50.000Z"
}
}
}
}{
"code": "unauthorized",
"message": "Not authorized"
}{
"code": "forbidden",
"message": "Forbidden"
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>",
"details": {}
}
]
}Some Platform API capabilities must be enabled on your account by MoonPay
before you can call them. If this endpoint returns an unexpected
404, see
Capability
enablement.Authorizations
AccessTokenAuthSecretApiKeyInHeaderAuth
Bearer authentication header using an access token.
Example: Authorization: Bearer <accessToken>
Path Parameters
The customer's unique MoonPay identifier.
Response
The request has succeeded.
A MoonPay customer as seen by a partner.
Show child attributes
Show child attributes
⌘I