Inyo

Payment Person / KYC

The Payment Person API lets you register and validate individuals or businesses before they participate in transactions. This is a required step for KYC (Know Your Customer) compliance in many payment corridors.

Workflow

  1. Query the person schema — Call GET /schema/person?countryCode={code} to get country-specific required fields (see Schemas)
  2. Validate the person — Call POST /person/validate to check if the data satisfies KYC requirements without creating a record
  3. Create the person — Call POST /person to register the person in the system

Endpoints

POST https://{FQDN}/person
POST https://{FQDN}/person/validate

Headers:

HeaderValue
AuthorizationBearer {accessToken}
Content-Typeapplication/json

Both endpoints accept the same request body. The only difference is:

EndpointBehavior
POST /personCreates a payment person record
POST /person/validateValidates the data without creating a record

Request

FieldTypeRequiredDescription
typestringPerson type: "INDIVIDUAL" or "BUSINESS"
identificationTypestringID type (e.g., "NATIONAL_ID", "PASSPORT", "DRIVER_LICENSE", "TAX_ID")
identificationstringIdentification number
genderstringGender: "M" or "F"
firstNamestringFirst name (required for individuals)
lastNamestringLast name (required for individuals)
companyNamestringCompany legal name (required for businesses)
addressobjectAddress details

Note: While most fields are marked as optional in the API schema, country-specific requirements may make them mandatory. Always query GET /schema/person first to determine which fields are required for a given country.

address Object

FieldTypeRequiredDescription
addressLine1stringStreet address line 1
addressLine2stringStreet address line 2
citystringCity name
statestringState or province
postalCodestringPostal/ZIP code
countryCodestringCountry code (ISO Alpha-2)
phoneNumberstringPhone number
emailAddressstringEmail address

Example — Create an Individual

curl -X POST https://{FQDN}/person \
  -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "INDIVIDUAL",
    "identificationType": "NATIONAL_ID",
    "identification": "050482156",
    "gender": "M",
    "firstName": "John",
    "lastName": "Smith",
    "address": {
      "addressLine1": "4429 Candlewood St",
      "addressLine2": "",
      "city": "Los Angeles",
      "state": "CA",
      "postalCode": "90712",
      "countryCode": "US",
      "phoneNumber": "5551234567",
      "emailAddress": "[email protected]"
    }
  }'

Example — Validate a Business

curl -X POST https://{FQDN}/person/validate \
  -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "BUSINESS",
    "identificationType": "TAX_ID",
    "identification": "12-3456789",
    "companyName": "Acme Corp",
    "address": {
      "addressLine1": "100 Market St",
      "addressLine2": "Suite 300",
      "city": "San Francisco",
      "state": "CA",
      "postalCode": "94105",
      "countryCode": "US",
      "phoneNumber": "4155551234",
      "emailAddress": "[email protected]"
    }
  }'

Response — Success (200)

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "type": "INDIVIDUAL",
  "firstName": "John",
  "lastName": "Smith",
  "status": "APPROVED"
}

Response — Validation Failure (200)

{
  "type": "INDIVIDUAL",
  "firstName": "John",
  "lastName": "Smith",
  "status": "REJECTED",
  "message": "Identification number does not match country requirements"
}

What's Next

  • Schemas — Query country-specific field requirements for persons, accounts, and payouts
  • Check Account — Validate a payment method before transacting
  • Push Transaction — Send payouts to recipients