curl --request GET \
--url https://api.fernhq.com/customers/{customerId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fernhq.com/customers/{customerId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fernhq.com/customers/{customerId}', 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.fernhq.com/customers/{customerId}",
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.fernhq.com/customers/{customerId}"
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.fernhq.com/customers/{customerId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fernhq.com/customers/{customerId}")
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{
"customerId": "abc123",
"customerStatus": "ACTIVE",
"email": "john.doe@example.com",
"name": "John Doe",
"verificationLink": "https://forms.fernhq.com/verify-customer/0423300f-ae6d-4e82-8afb-a3b430e22e29",
"updatedAt": "2023-11-07T05:31:56Z",
"organizationId": "8469411c-48c1-4e26-a032-44688be9cb4b",
"availablePaymentMethods": [
"ACH",
"WIRE",
"SEPA",
"CA_INTERAC",
"IN_NEFT_RTGS_IMPS",
"ARBITRUM",
"BASE",
"ETHEREUM",
"OPTIMISM",
"POLYGON",
"SOLANA"
],
"verificationIssues": [
{
"code": "DOCUMENT_MISSING_BACK",
"message": "Please upload clear photos of both the front and back of your ID.",
"timestamp": "2023-10-01T12:00:00Z"
}
],
"kycData": {
"legalFirstName": "John",
"legalMiddleName": "Michael",
"legalLastName": "Doe",
"phoneNumber": "+12223334444",
"dateOfBirth": "1990-01-15",
"address": {
"countryCode": "US",
"streetLine1": "350 5th Avenue",
"city": "New York",
"stateRegionProvince": "NY",
"streetLine2": "Floor 21",
"postalCode": "10016",
"locale": "en-US"
},
"nationalIdIssuingCountry": "US",
"nationalIdType": "ssn",
"nationalIdNumber": "123-45-6789",
"nationality": "US",
"employmentStatus": "EMPLOYED",
"mostRecentOccupation": "132011",
"sourceOfFunds": "SALARY",
"accountPurpose": "PERSONAL_EXPENSES",
"accountPurposeOther": "Real estate transactions",
"expectedMonthlyPaymentsUsd": "BETWEEN_10000_49999",
"isIntermediary": false,
"documents": [
{
"type": "DRIVERS_LICENSE_FRONT",
"frontIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"backIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"proofOfAddressImage": "data:application/pdf;base64,JVBERi0xLjQKJ...",
"documentImage": "data:application/pdf;base64,JVBERi0xLjQKJ..."
}
]
},
"kybData": {
"businessInfo": {
"legalBusinessName": "Acme Corporation Inc.",
"dbaName": "Acme Corp",
"businessType": "B_CORPORATION",
"businessIndustries": "611519",
"businessDescription": "Software development and technology consulting services",
"website": "https://www.acmecorp.com",
"otherLinks": [
"https://linkedin.com/company/acme",
"@acmetech"
],
"formationDate": "2020-01-15",
"registrationCountry": "DE",
"isDao": false
},
"businessRegisteredAddress": {
"countryCode": "US",
"streetLine1": "350 5th Avenue",
"city": "New York",
"stateRegionProvince": "NY",
"streetLine2": "Floor 21",
"postalCode": "10016",
"locale": "en-US"
},
"businessOperatingAddress": {
"countryCode": "US",
"streetLine1": "350 5th Avenue",
"city": "New York",
"stateRegionProvince": "NY",
"streetLine2": "Floor 21",
"postalCode": "10016",
"locale": "en-US"
},
"businessRegistrationNumber": "<string>",
"sourceOfFunds": "SALE_OF_GOODS_AND_SERVICES",
"sourceOfFundsDescription": "Revenue from software licensing and consulting services",
"accountPurpose": "CHARITABLE_DONATIONS",
"accountPurposeOther": "International trade financing",
"expectedMonthlyVolumeUsd": "LESS_THAN_10000",
"estimatedAnnualRevenueUsd": "LESS_THAN_100000",
"conductsMoneyServices": false,
"conductsMoneyServicesDescription": "International wire transfers for clients",
"conductsMoneyServicesThroughFern": false,
"operatesInProhibitedCountries": false,
"complianceScreeningDescription": "We screen all clients against OFAC and international sanctions lists",
"highRiskActivities": [
"ADULT_ENTERTAINMENT",
"FOREIGN_EXCHANGE_OR_BROKERAGE"
],
"highRiskActivitiesExplanation": "We operate an adult entertainment platform with proper licensing and compliance measures in place.",
"associatedPersons": [
{
"legalFirstName": "Jane",
"legalLastName": "Smith",
"email": "jane.smith@example.com",
"phoneNumber": "+14155551234",
"dateOfBirth": "1985-06-20",
"address": {
"countryCode": "US",
"streetLine1": "350 5th Avenue",
"city": "New York",
"stateRegionProvince": "NY",
"streetLine2": "Floor 21",
"postalCode": "10016",
"locale": "en-US"
},
"legalMiddleName": "Marie",
"ownershipPercentage": 0.25,
"title": "Chief Technology Officer",
"isControlPerson": true,
"isSigner": true,
"isDirector": false,
"nationalIdIssuingCountry": "US",
"nationalIdType": "ssn",
"nationalIdNumber": "123-45-6789",
"nationality": "US",
"documents": [
{
"type": "DRIVERS_LICENSE_FRONT",
"frontIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"backIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"proofOfAddressImage": "data:application/pdf;base64,JVBERi0xLjQKJ...",
"documentImage": "data:application/pdf;base64,JVBERi0xLjQKJ..."
}
]
}
],
"businessDocuments": [
{
"type": "DRIVERS_LICENSE_FRONT",
"frontIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"backIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"proofOfAddressImage": "data:application/pdf;base64,JVBERi0xLjQKJ...",
"documentImage": "data:application/pdf;base64,JVBERi0xLjQKJ..."
}
]
}
}Get customer
Get details about a customer
curl --request GET \
--url https://api.fernhq.com/customers/{customerId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fernhq.com/customers/{customerId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fernhq.com/customers/{customerId}', 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.fernhq.com/customers/{customerId}",
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.fernhq.com/customers/{customerId}"
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.fernhq.com/customers/{customerId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fernhq.com/customers/{customerId}")
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{
"customerId": "abc123",
"customerStatus": "ACTIVE",
"email": "john.doe@example.com",
"name": "John Doe",
"verificationLink": "https://forms.fernhq.com/verify-customer/0423300f-ae6d-4e82-8afb-a3b430e22e29",
"updatedAt": "2023-11-07T05:31:56Z",
"organizationId": "8469411c-48c1-4e26-a032-44688be9cb4b",
"availablePaymentMethods": [
"ACH",
"WIRE",
"SEPA",
"CA_INTERAC",
"IN_NEFT_RTGS_IMPS",
"ARBITRUM",
"BASE",
"ETHEREUM",
"OPTIMISM",
"POLYGON",
"SOLANA"
],
"verificationIssues": [
{
"code": "DOCUMENT_MISSING_BACK",
"message": "Please upload clear photos of both the front and back of your ID.",
"timestamp": "2023-10-01T12:00:00Z"
}
],
"kycData": {
"legalFirstName": "John",
"legalMiddleName": "Michael",
"legalLastName": "Doe",
"phoneNumber": "+12223334444",
"dateOfBirth": "1990-01-15",
"address": {
"countryCode": "US",
"streetLine1": "350 5th Avenue",
"city": "New York",
"stateRegionProvince": "NY",
"streetLine2": "Floor 21",
"postalCode": "10016",
"locale": "en-US"
},
"nationalIdIssuingCountry": "US",
"nationalIdType": "ssn",
"nationalIdNumber": "123-45-6789",
"nationality": "US",
"employmentStatus": "EMPLOYED",
"mostRecentOccupation": "132011",
"sourceOfFunds": "SALARY",
"accountPurpose": "PERSONAL_EXPENSES",
"accountPurposeOther": "Real estate transactions",
"expectedMonthlyPaymentsUsd": "BETWEEN_10000_49999",
"isIntermediary": false,
"documents": [
{
"type": "DRIVERS_LICENSE_FRONT",
"frontIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"backIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"proofOfAddressImage": "data:application/pdf;base64,JVBERi0xLjQKJ...",
"documentImage": "data:application/pdf;base64,JVBERi0xLjQKJ..."
}
]
},
"kybData": {
"businessInfo": {
"legalBusinessName": "Acme Corporation Inc.",
"dbaName": "Acme Corp",
"businessType": "B_CORPORATION",
"businessIndustries": "611519",
"businessDescription": "Software development and technology consulting services",
"website": "https://www.acmecorp.com",
"otherLinks": [
"https://linkedin.com/company/acme",
"@acmetech"
],
"formationDate": "2020-01-15",
"registrationCountry": "DE",
"isDao": false
},
"businessRegisteredAddress": {
"countryCode": "US",
"streetLine1": "350 5th Avenue",
"city": "New York",
"stateRegionProvince": "NY",
"streetLine2": "Floor 21",
"postalCode": "10016",
"locale": "en-US"
},
"businessOperatingAddress": {
"countryCode": "US",
"streetLine1": "350 5th Avenue",
"city": "New York",
"stateRegionProvince": "NY",
"streetLine2": "Floor 21",
"postalCode": "10016",
"locale": "en-US"
},
"businessRegistrationNumber": "<string>",
"sourceOfFunds": "SALE_OF_GOODS_AND_SERVICES",
"sourceOfFundsDescription": "Revenue from software licensing and consulting services",
"accountPurpose": "CHARITABLE_DONATIONS",
"accountPurposeOther": "International trade financing",
"expectedMonthlyVolumeUsd": "LESS_THAN_10000",
"estimatedAnnualRevenueUsd": "LESS_THAN_100000",
"conductsMoneyServices": false,
"conductsMoneyServicesDescription": "International wire transfers for clients",
"conductsMoneyServicesThroughFern": false,
"operatesInProhibitedCountries": false,
"complianceScreeningDescription": "We screen all clients against OFAC and international sanctions lists",
"highRiskActivities": [
"ADULT_ENTERTAINMENT",
"FOREIGN_EXCHANGE_OR_BROKERAGE"
],
"highRiskActivitiesExplanation": "We operate an adult entertainment platform with proper licensing and compliance measures in place.",
"associatedPersons": [
{
"legalFirstName": "Jane",
"legalLastName": "Smith",
"email": "jane.smith@example.com",
"phoneNumber": "+14155551234",
"dateOfBirth": "1985-06-20",
"address": {
"countryCode": "US",
"streetLine1": "350 5th Avenue",
"city": "New York",
"stateRegionProvince": "NY",
"streetLine2": "Floor 21",
"postalCode": "10016",
"locale": "en-US"
},
"legalMiddleName": "Marie",
"ownershipPercentage": 0.25,
"title": "Chief Technology Officer",
"isControlPerson": true,
"isSigner": true,
"isDirector": false,
"nationalIdIssuingCountry": "US",
"nationalIdType": "ssn",
"nationalIdNumber": "123-45-6789",
"nationality": "US",
"documents": [
{
"type": "DRIVERS_LICENSE_FRONT",
"frontIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"backIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"proofOfAddressImage": "data:application/pdf;base64,JVBERi0xLjQKJ...",
"documentImage": "data:application/pdf;base64,JVBERi0xLjQKJ..."
}
]
}
],
"businessDocuments": [
{
"type": "DRIVERS_LICENSE_FRONT",
"frontIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"backIdImage": "data:image/png;base64,iVBORw0KGgoAAA...",
"proofOfAddressImage": "data:application/pdf;base64,JVBERi0xLjQKJ...",
"documentImage": "data:application/pdf;base64,JVBERi0xLjQKJ..."
}
]
}
}Authorizations
To authenticate server-side requests
Path Parameters
Unique identifier of the customer
Query Parameters
Whether to include verification details
Whether to include available payment methods in the response
Response
Developer API customer response including optional KYC/KYB verification data.
Developer API customer response including optional KYC/KYB verification data.
Unique identifier of the customer
"abc123"
Current status of the customer
CREATED, UNDER_REVIEW, NEEDS_ADDITIONAL_INFORMATION, ACTIVE, REJECTED, DEACTIVATED "ACTIVE"
Email of the customer
"john.doe@example.com"
The type of customer - either individual or business
INDIVIDUAL, BUSINESS Full name of the customer or business
"John Doe"
URL for KYC/KYB verification process
"https://forms.fernhq.com/verify-customer/0423300f-ae6d-4e82-8afb-a3b430e22e29"
Timestamp of the last status update
Organization identifier
"8469411c-48c1-4e26-a032-44688be9cb4b"
Available payment methods for the customer
[
"ACH",
"WIRE",
"SEPA",
"CA_INTERAC",
"IN_NEFT_RTGS_IMPS",
"ARBITRUM",
"BASE",
"ETHEREUM",
"OPTIMISM",
"POLYGON",
"SOLANA"
]Current verification issues blocking customer approval. Only present for customers in NEEDS_ADDITIONAL_INFORMATION, UNDER_REVIEW, or REJECTED status.
Show child attributes
Show child attributes
[
{
"code": "DOCUMENT_MISSING_BACK",
"message": "Please upload clear photos of both the front and back of your ID.",
"timestamp": "2023-10-01T12:00:00Z"
}
]Know Your Customer data for an individual.
Show child attributes
Show child attributes
Know Your Business data for a business entity.
Show child attributes
Show child attributes
Was this page helpful?