---
title: "Upload Documents for KYC (Know Your Customers)"
method: POST
path: "/v2/accounts/{accountid}/documents/upload"
tags: ["Accounts | Create & KYC"]
---

# Upload Documents for KYC (Know Your Customers)

`POST /v2/accounts/{accountid}/documents/upload`

KYC is a regulatory obligation for Payment Institutions. European Directive 2015/849 of the European Parliament states this requirement    
for the prevention of the use of the financial system for the purposes of money laundering and terrorist financing.    

To upload documents for KYC use the following guidelines:  
* Use JPG, JPEG, PNG or PDF (maximum 2 pages) for ID documentation only (for example: Passport, Driving Licence and Residence Permit).  
* Maximum file upload size is **4MB** for automatic verification.    
* Minimum file upload size is **100KB**.  
* Full Colour, and straighten file.   
* Card ID: Scan both sides. One file should contain both sides (maximum 2 pages).  

**Important** Documents over 4MB and upto 10MB will be manually validated.  
**Note:** TIFF format is not accepted.  
**Note:** If a document has been rejected, it is still possible to use the same slot to upload a new file.

## Path parameters

- `accountid` string, required

## Headers

- `Authorization` string, required
- `PSU-Accept-Language` string
- `PSU-IP-Address` string, required
- `PSU-User-Agent` string

## Request body

- UploadDocumentInput
  - `name` string — Document Name
  - `type` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 — Document Type: **Note:** If you have previously uploaded a document in a reserved **slot(0-13)** and need to upload another document of the same type, use the slot **Other document(6, 14-20)**.<br/>0 = ID card (both sides in one file).<br/>1 = Proof of address.<br/>2 = Scan of a proof of IBAN.<br/>3 = Passport (European Union).<br/>4 = Passport (outside the European Union).<br/>5 = Residence permit (both sides in one file).<br/>6 = Other document type.<br/>7 = Official company registration document (Kbis extract or equivalent).<br/>11 = Driver licence (both sides in one file).<br/>12 = Status.<br/>13 = Selfie.<br/>14 = Other document type.<br/>15 = Other document type.<br/>16 = Other document type.<br/>17 = Other document type.<br/>18 = Other document type.<br/>19 = Other document type.<br/>20 = Other document type.<br/>21 = SDD mandate.<br/>
  - `buffer` string — Byte array with the document. Encode in base 64 if necessary.
  - `sddMandateId` integer — Lets you upload your signed(with your own signing partner) mandate document, to validate a mandate ID you previously created with `RegisterSddMandate`.

## Response `200`

OK

- UploadDocumentOutput
  - `uploadDocument` UploadDocument
    - `id` integer — Document ID
    - `status` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 — Document Status:<br/>0 = Document put on hold, waiting for another document.<br/>1 = Received, need manual validation.<br/>2 = Accepted.<br/>3 = Rejected.<br/>4 = Rejected. Unreadable by human (Cropped, blur, glare…).<br/>5 = Rejected. Expired (Expiration Date is passed).<br/>6 = Rejected. Wrong Type (Document not accepted).<br/>7 = Rejected. Wrong Name (Name not matching user information).<br/>8 = Rejected. Duplicated Document.<br/>
    - `substatus` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 — Document sub-status. Only when Status = 1:<br/>1 = Document type not processable automatically.<br/>2 = Unreadable by computer (Cropped, blur, glare…).<br/>3 = Wrong Type.<br/>4 = Wrong Name (Name not matching user information).<br/>5 = File too big (File should not be over 4MB to be processed automatically).<br/>6 = Automatic Controls Failed.<br/>7 = Need 2 sides of the document in one file.<br/>8 = Unknown.<br/>
    - `accountstatus` 2 | 3 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | 14 | 15 | 16 — Payment account status<br/>2 = Registered, KYC incomplete.<br/>3 = Registered, rejected KYC.<br/>5 = Registered, KYC 1 (status given at registration).<br/>6 = Registered, KYC 2.<br/>7 = Registered, KYC 3.<br/>8 = Registered, expired KYC.<br/>10 = Blocked.<br/>12 = Closed.<br/>13 = Registered, status is being updated from KYC 2 to KYC 3.<br/>14 = One-time customer.<br/>15 = Special account for crowdlending.<br/>16 = Technical account.<br/>
  - `error` Error
    - `code` integer
    - `message` string
    - `psp` PSP
      - `message` string — Get the Error Message from PSP

## Other responses

- `401` — Unauthorized
- `500` — InternalServerError

---

[API](https://skmtc.net/lemonway/apis/account-onboarding-management-api.md) · [All operations](https://skmtc.net/lemonway/apis/account-onboarding-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lemonway/account-onboarding-management-api/revisions/73309fe68e2d/schema)
