Build payments into your product with TPE virtual. Start integrating →
Logo

Identifications

Manage your KYC dossier — the legal entity MyTPE verifies before activation.

An identification is your KYC dossier. It references an establishment type, an authorization type, an optional activity, and an optional registration document. It must be accepted before it can back a payment instance.

Statuses reference

Identification status values (pending, accepted, refused) are defined in Statuses and enums → KYC.

Endpoints

MethodPathDescription
GET/identificationsList identifications (paginated).
POST/identificationsCreate an identification.
GET/identifications/{id}Retrieve one identification.
PUT/identifications/{id}Update an identification.
DELETE/identifications/{id}Delete an identification.

The identification object

FieldTypeDescription
idstring (uuid)Unique identifier.
ownerobjectThe trader who owns the dossier: { id, name, email }.
namestringLegal / commercial name.
establishment_typeobject{ id, name, slug } when loaded.
authorization_typeobject | null{ id, name, slug } when loaded.
activityobject | null{ id, name } when loaded.
has_filebooleanWhether a registration document is attached.
file_pathstring | nullPath to the stored document.
statusstringKYC status — see statuses.
reasonstring | nullReason when refused.
brandsarrayBrands attached to this dossier. Present only when the endpoint loads them; today no endpoint does, so treat it as absent.
created_at / updated_atstring (ISO 8601)Timestamps.

List identifications

Query parameters: search, status, establishment_type_id, sort_by (created_at · name · status), sort_dir (asc · desc), per_page.

Request
curl "https://api.mytpe.app/api/ext/identifications?status=accepted&per_page=15" \
  -H "X-Api-Key: $MYTPE_API_KEY" \
  -H "X-Api-Secret: $MYTPE_API_SECRET"
200 OK
{
  "data": [
    {
      "id": "0b1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
      "name": "Boutique Centrale SARL",
      "establishment_type": { "id": "2f1c...", "name": "SARL", "slug": "sarl" },
      "authorization_type": { "id": "7a9d...", "name": "Registre de commerce", "slug": "rc" },
      "activity": { "id": "c4e2...", "name": "Retail" },
      "has_file": true,
      "file_path": "identifications/0b1d.../registre.pdf",
      "status": "accepted",
      "reason": null,
      "created_at": "2026-06-09T10:00:00.000000Z",
      "updated_at": "2026-06-09T11:00:00.000000Z"
    }
  ],
  "links": { "first": "...?page=1", "last": "...?page=1", "prev": null, "next": null },
  "meta": { "current_page": 1, "from": 1, "to": 1, "per_page": 15, "last_page": 1, "total": 1 }
}

Response

Status200 OK
BodyA paginated array of identification objects.

Errors follow the shared envelope. See Responses.

Create an identification

Send as multipart/form-data to include the document.

FieldTypeRequiredNotes
namestringyesMax 255.
establishment_type_iduuidyes
authorization_type_iduuidyes
activity_iduuidno
identification_filefilenoPDF, max 5 MB.
Request
curl -X POST https://api.mytpe.app/api/ext/identifications \
  -H "X-Api-Key: $MYTPE_API_KEY" \
  -H "X-Api-Secret: $MYTPE_API_SECRET" \
  -F "name=Boutique Centrale SARL" \
  -F "establishment_type_id=2f1c..." \
  -F "authorization_type_id=7a9d..." \
  -F "activity_id=c4e2..." \
  -F "identification_file=@registre-commerce.pdf"
201 Created
{
  "data": {
    "id": "0b1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
    "name": "Boutique Centrale SARL",
    "establishment_type": { "id": "2f1c...", "name": "SARL", "slug": "sarl" },
    "authorization_type": { "id": "7a9d...", "name": "Registre de commerce", "slug": "rc" },
    "activity": { "id": "c4e2...", "name": "Retail" },
    "has_file": true,
    "file_path": "identifications/0b1d.../registre.pdf",
    "status": "pending",
    "reason": null,
    "created_at": "2026-06-09T10:00:00.000000Z",
    "updated_at": "2026-06-09T10:00:00.000000Z"
  }
}

A first brand is created automatically with the same name.

Response

Status201 Created
BodyThe created identification object, wrapped in data.

Errors follow the shared envelope. See Responses.

Retrieve an identification

Request
curl https://api.mytpe.app/api/ext/identifications/0b1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f \
  -H "X-Api-Key: $MYTPE_API_KEY" \
  -H "X-Api-Secret: $MYTPE_API_SECRET"
200 OK
{
  "data": {
    "id": "0b1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
    "name": "Boutique Centrale SARL",
    "establishment_type": { "id": "2f1c...", "name": "SARL", "slug": "sarl" },
    "authorization_type": { "id": "7a9d...", "name": "Registre de commerce", "slug": "rc" },
    "activity": { "id": "c4e2...", "name": "Retail" },
    "has_file": true,
    "file_path": "identifications/0b1d.../registre.pdf",
    "status": "accepted",
    "reason": null,
    "created_at": "2026-06-09T10:00:00.000000Z",
    "updated_at": "2026-06-09T11:00:00.000000Z"
  }
}

A missing identifier, or one belonging to another account, returns 404 with the code NOT_FOUND. See Responses for the envelope.

Response

Status200 OK
BodyOne identification object, wrapped in data.

Errors follow the shared envelope. See Responses.

Update an identification

Accepts the same fields as create (as multipart/form-data).

Request
curl -X PUT https://api.mytpe.app/api/ext/identifications/0b1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f \
  -H "X-Api-Key: $MYTPE_API_KEY" \
  -H "X-Api-Secret: $MYTPE_API_SECRET" \
  -F "name=Boutique Centrale SARL (Alger)"
200 OK
{
  "data": {
    "id": "0b1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
    "name": "Boutique Centrale SARL (Alger)",
    "status": "pending",
    "reason": null,
    "has_file": true,
    "created_at": "2026-06-09T10:00:00.000000Z",
    "updated_at": "2026-06-09T12:00:00.000000Z"
  }
}

Response

Status200 OK
BodyThe updated identification object, wrapped in data.

Errors follow the shared envelope. See Responses.

Delete an identification

Request
curl -X DELETE https://api.mytpe.app/api/ext/identifications/0b1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f \
  -H "X-Api-Key: $MYTPE_API_KEY" \
  -H "X-Api-Secret: $MYTPE_API_SECRET"
200 OK
{ "message": "Identification deleted." }

You cannot delete an identification that a brand, bank account, or payment instance still depends on.

Response

Status200 OK
BodyA confirmation in meta.message. No data.

Errors follow the shared envelope. See Responses.

On this page