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
| Method | Path | Description |
|---|---|---|
GET | /identifications | List identifications (paginated). |
POST | /identifications | Create an identification. |
GET | /identifications/{id} | Retrieve one identification. |
PUT | /identifications/{id} | Update an identification. |
DELETE | /identifications/{id} | Delete an identification. |
The identification object
| Field | Type | Description |
|---|---|---|
id | string (uuid) | Unique identifier. |
owner | object | The trader who owns the dossier: { id, name, email }. |
name | string | Legal / commercial name. |
establishment_type | object | { id, name, slug } when loaded. |
authorization_type | object | null | { id, name, slug } when loaded. |
activity | object | null | { id, name } when loaded. |
has_file | boolean | Whether a registration document is attached. |
file_path | string | null | Path to the stored document. |
status | string | KYC status — see statuses. |
reason | string | null | Reason when refused. |
brands | array | Brands attached to this dossier. Present only when the endpoint loads them; today no endpoint does, so treat it as absent. |
created_at / updated_at | string (ISO 8601) | Timestamps. |
List identifications
Query parameters: search, status, establishment_type_id, sort_by
(created_at · name · status), sort_dir (asc · desc), per_page.
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"{
"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
| Status | 200 OK |
| Body | A paginated array of identification objects. |
Errors follow the shared envelope. See Responses.
Create an identification
Send as multipart/form-data to include the document.
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | yes | Max 255. |
establishment_type_id | uuid | yes | |
authorization_type_id | uuid | yes | |
activity_id | uuid | no | |
identification_file | file | no | PDF, max 5 MB. |
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"{
"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
| Status | 201 Created |
| Body | The created identification object, wrapped in data. |
Errors follow the shared envelope. See Responses.
Retrieve an identification
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"{
"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
| Status | 200 OK |
| Body | One 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).
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)"{
"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
| Status | 200 OK |
| Body | The updated identification object, wrapped in data. |
Errors follow the shared envelope. See Responses.
Delete an identification
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"{ "message": "Identification deleted." }You cannot delete an identification that a brand, bank account, or payment instance still depends on.
Response
| Status | 200 OK |
| Body | A confirmation in meta.message. No data. |
Errors follow the shared envelope. See Responses.