neo-pays

End customers

Generated page, from the OpenAPI specification the gateway serves (GET /v1/openapi.json). Do not edit it by hand: it is rewritten on every build.

Method Path Description
GET /v1/customers List your end customers
POST /v1/customers Register an end customer
GET /v1/customers/{id} Retrieve an end customer
PATCH /v1/customers/{id} Update an end customer

GET /v1/customers

List your end customers

Your own end customers. external_id filters exactly; search matches loosely on name, phone and email. Scope can_read_customers.

Parameters

Name In Required Description
external_id query no Your own identifier — an exact filter.
search query no
limit query no 20 by default, 100 at most.
offset query no

Responses

  • 200 — OK (object)
  • 401 — API key missing or rejected (Error)
  • 403 — The key does not carry the required scope (can_read_customers / can_write_customers), or the account is not active (Error)
  • 429 — The key's request budget is exceeded (Error)

POST /v1/customers

Register an end customer

Registers a person you already know, BEFORE their first payment. Two effects: a player whose age you declare you have verified is never held on a restricted corridor for want of verification, and their risk profile is pre-warmed, which takes that work off the payment path. Answers 200 with already_existed: true when the person was already known: the deduplication key is shared with the payment path, so a “create” often lands on a record your own payments already made. Scope can_write_customers.

Request body

Field Type Required Description
external_id string no
name string no
phone string no Phone or email is required: the record is deduplicated on one of the two, and a person with neither could never be matched to their own payments.
email string no
country string no
national_id object no
national_id.type string no
national_id.number string no
date_of_birth string no YYYY-MM-DD.
age_verified boolean no You are declaring that you have verified this person is of age. Short form of age_verification_status.
age_verification_status string no
age_verified_at string no RFC3339.
age_verification_method string no

Responses

  • 200 — The person was already known; the existing record is returned, filled in where fields were empty (Customer)
  • 201 — End customer created (Customer)
  • 401 — API key missing or rejected (Error)
  • 403 — The key does not carry the required scope (can_read_customers / can_write_customers), or the account is not active (Error)
  • 422 — Age verification incomplete or outside the vocabulary (Error)
  • 429 — The key's request budget is exceeded (Error)

GET /v1/customers/{id}

Retrieve an end customer

Scope can_read_customers.

Parameters

Name In Required Description
id path yes The end customer's identifier.

Responses

  • 200 — OK (Customer)
  • 401 — API key missing or rejected (Error)
  • 403 — The key does not carry the required scope (can_read_customers / can_write_customers), or the account is not active (Error)
  • 404 — No end customer with that identifier (Error)
  • 429 — The key's request budget is exceeded (Error)

PATCH /v1/customers/{id}

Update an end customer

An omitted field is unchanged. This is how you answer a re-verification request (customer.reverification_requested): send the verification you carried out, and the restriction placed in the meantime is lifted in the same transaction. Scope can_write_customers.

Parameters

Name In Required Description
id path yes The end customer's identifier.

Request body

Field Type Required Description
external_id string no
name string no
phone string no Phone or email is required: the record is deduplicated on one of the two, and a person with neither could never be matched to their own payments.
email string no
country string no
national_id object no
national_id.type string no
national_id.number string no
date_of_birth string no YYYY-MM-DD.
age_verified boolean no You are declaring that you have verified this person is of age. Short form of age_verification_status.
age_verification_status string no
age_verified_at string no RFC3339.
age_verification_method string no

Responses

  • 200 — Updated (Customer)
  • 401 — API key missing or rejected (Error)
  • 403 — The key does not carry the required scope (can_read_customers / can_write_customers), or the account is not active (Error)
  • 404 — No end customer with that identifier (Error)
  • 422 — Age verification incomplete or outside the vocabulary (Error)
  • 429 — The key's request budget is exceeded (Error)

Schemas

The shapes the operations above return.

Error

Field Type Description
error object
error.code string
error.message string

Customer

A merchant's end customer — the person who pays. What you record here does two things: your verified players are never held on a restricted corridor for want of age verification, and their risk profile is warmed up before their first payment. No compliance state is ever returned on this resource.

Field Type Description
id string The end customer's identifier.
external_id string Your own identifier for this person.
name string
phone string E.164 or national; normalised server-side. The phone outranks the email as the deduplication key.
email string
country string ISO 3166-1 alpha-2.
national_id object Identity document, as you captured it.
national_id.type string cni, passport, …
national_id.number string
date_of_birth string YYYY-MM-DD.
age_verification object The state of age verification. It NEVER asserts an age: it records that a verification exists, when, how and by whom. Absent until one has been declared — which is not the same thing as “not verified”.
age_verification.status string
age_verification.verified_at string RFC3339.
age_verification.method string
age_verification.source string
created_at string