Artha API
    • Introduction
    • Authentication
    • KYC/KYB Requirements
    • API Setup Guide
    • Card API Integration Flow
    • Customers
      • Create Customer
        POST
      • List Customers
        GET
      • Get Customer
        GET
      • Update Customer
        PATCH
    • Cards
      • Submit KYC/KYB Applicant
        POST
      • Get Applicant KYC Status
        GET
      • Issue Card
        POST
      • Cards List
        GET
      • Get Card
        GET
      • Get Sensitive Card Details
        GET
    • Card Operations
      • Activate Card
        POST
      • Freeze Card
        POST
      • Unfreeze Card
        POST
      • Cancel Card
        POST
      • Replace Card
        POST
      • Set / Reset Card PIN
        POST
      • Get Card Limits
        GET
      • Update Card Limits
        POST
    • Funding
      • Top Up Card
        POST
      • Get Top-Up Status
        GET
      • Get Card Balance
        GET
      • List Top-Up History
        GET
    • Transactions
      • List All Transactions
      • List Card Transactions
      • List Customer Transactions
      • Get Transaction
    • Products
      • List Products
      • Get Product
    • Utilities
      • Upload Documents
    • Webhook's
      • Webhooks

    KYC/KYB Requirements

    How It Works#

    Before submitting a KYC/KYB application, you must check the Product Details to determine which KYC requirements apply. The product response includes a list of required KYC fields that must be provided when submitting the applicant.
    šŸ“Œ
    Need to do KYC/KYB Based on Each Product.
    Step 1: Get product KYC requirements  →  GET /api/v1/Products/{productId}
    Step 2: Upload required documents     →  POST /api/v1/uploadfile
    Step 3: Submit KYC with file URLs     →  POST /api/v1/customers/{customerId}/products/{productId}/applicant

    Step 1 — Check KYC Requirements#

    GET /api/v1/Products/{productId}
    The response will contain a kyc_requirements array listing which requirement types are needed for that product. Use this to determine which fields and documents you need to collect.

    Step 2 — Upload Documents#

    Before submitting KYC, upload all required documents (ID images, selfies, signatures, etc.) using the file upload API.
    POST /api/v1/uploadfile
    Supports images (JPEG, PNG) and PDFs
    Files are stored in Azure Blob Storage
    Returns a file URL for each uploaded file
    Response (200):
    {
      "data": [
        {
          "file_name": "passport_front.jpg",
          "file_url": "https://storage.blob.core.windows.net/docs/abc123.jpg"
        }
      ]
    }
    āš ļø Important: Save the returned file_url values — you will pass these URLs as field values (e.g., frontDoc, backDoc, selfie, photo) in Step 3.

    Step 3 — Submit KYC Application#

    Pass the uploaded file URLs along with the required KYC fields:
    POST /api/v1/customers/{customerId}/products/{productId}/applicant
    ParameterInTypeRequiredDescription
    customerIdpathuuidāœ…The customer identifier
    productIdpathuuidāœ…The product identifier
    bodybodyJSONāœ…KYC fields based on product requirements
    āš ļø Only send the fields that match the KYC requirements returned by the Product Details API. Requirements vary by product.

    Individual(KYC) Requirement Types#

    RequirementRequired Fields
    PassportOnlydocType, docId, frontDoc šŸ“Ž, backDoc šŸ“Ž
    PassportdocType, docId, frontDoc šŸ“Ž, backDoc šŸ“Ž, docExpireDate, docNeverExpire
    FullNameOnlyfirstName, lastName
    FullNamefirstName, lastName, gender, dob
    Commsemail, mobileCode, mobile
    EmergencyContactemergencyContact
    Addressaddress
    FullAddressaddress, town, city, state, zipCode, countryIsoTwo
    HandedPassporthandHoldIdPhoto šŸ“Ž
    Facephoto šŸ“Ž
    SignsignImage šŸ“Ž
    Biomatricbiomatric šŸ“Ž
    IssueDatedocIssueDate
    IpAddressipAddress
    FinancialProfileoccupation, accountPurpose, annualSalary, expectedMonthlyVolume
    IdTypesdocType, docId, frontDoc šŸ“Ž, backDoc šŸ“Ž, docExpireDate, docNeverExpire
    šŸ“Ž = File field. Upload the file first via POST /api/v1/uploadfile, then pass the returned file_url as the value.

    Occupation List#

    The occupation field in FinancialProfile must use one of the following values.
    āš ļø The Description value must be passed in the API request.
    CodeDescription (Value to Send)
    marketing_managerMarketing Managers
    political_scientistPolitical Scientists
    dancerDancers
    nurseNurse Midwives
    teacherTeacher Assistants
    accountantAccountants and Auditors
    lawyerLawyers
    pilotCommercial Pilots
    surveyorSurveyors
    librarianLibrarians
    data_entryData Entry Keyers
    residential_advisorResidential Advisors
    inspectorConstruction and Building Inspectors
    optometristOptometrists
    self_employedSelf-Enrichment Education Teachers
    curatorCurators
    salesSales Managers
    marketingMarketing Managers
    engineerIndustrial Engineers
    architectComputer Network Architects
    mechanicMotorcycle Mechanics
    driverLight Truck or Delivery Services Drivers
    designerInterior Designers
    artistMultimedia Artists and Animators
    trainerAthletic Trainers
    social_workerHealthcare Social Workers
    scientistPhysicists
    computer_operatorComputer Operators
    barberBarbers
    šŸ“Œ Important
    When submitting KYC, pass the Description value.
    Example: occupation = "Software Engineer"

    Business(KYB) Requirement Types#

    Company Information#

    RequirementRequired Fields
    CompanyInformationcompanyName, type, description, industry, registrationNumber, taxId, website
    CompanyDocumentscertificateOfIncorporation šŸ“Ž, shareholderRegistry šŸ“Ž
    CompanyAddressline1, city, postalCode, country

    Personal Information (Primary Applicant)#

    RequirementRequired Fields
    PersonalInformationfirstName, lastName, dateOfBirth, email, phoneNumber, phoneCode
    PersonalInformationAddressline1, city, postalCode, country
    PersonalIdentificationidType, idNumber, country, docExpireDate, frontDocument šŸ“Ž, backDocument šŸ“Ž

    UBOs (Ultimate Beneficial Owners)#

    RequirementRequired Fields
    UBOfirstName, lastName, dateOfBirth, country, email, phoneCode, phoneNumber, shareHolderPercentage
    UBOAddressline1, city, postalCode, country
    UBOIdentificationidType, idNumber, frontDocument šŸ“Ž, backDocument šŸ“Ž
    UBOSelfieselfie šŸ“Ž

    Representatives#

    RequirementRequired Fields
    RepresentativesfirstName, lastName, dateOfBirth, country, email, phoneCode, phoneNumber, shareHolderPercentage
    RepresentativeAddressline1, city, postalCode, country
    RepresentativeIdentificationidType, idNumber, frontDocument šŸ“Ž, backDocument šŸ“Ž
    RepresentativeSelfieselfie šŸ“Ž

    Directors#

    RequirementRequired Fields
    DirectorsfirstName, lastName, dateOfBirth, country, email, phoneCode, phoneNumber, shareHolderPercentage
    DirectorAddressline1, city, postalCode, country
    DirectorIdentificationidType, idNumber, frontDocument šŸ“Ž, backDocument šŸ“Ž
    DirectorSelfieselfie šŸ“Ž

    Example 1: Individual KYC Submission#

    Assume the product requires: FullName, Comms, FullAddress, Passport, Face, Sign, FinancialProfile
    Step 1 — Upload documents:
    POST /api/v1/uploadfile
    
    → passport_front.jpg   → "https://storage.blob.../passport_front.jpg"
    → passport_back.jpg    → "https://storage.blob.../passport_back.jpg"
    → selfie.jpg           → "https://storage.blob.../selfie.jpg"
    → signature.png        → "https://storage.blob.../signature.png"
    Step 2 — Submit KYC:
    POST /api/v1/customers/{customerId}/products/{productId}/applicant
    
    {
      "kycDetails": {
        "customerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "firstName": "Jane",
        "lastName": "Doe",
        "gender": "female",
        "dob": "1990-06-15",
        "email": "jane@example.com",
        "mobileCode": "+44",
        "mobile": "7700900000",
        "addressLine1": "10 Downing Street",
        "city": "London",
        "state": "England",
        "postalCode": "SW1A 2AA",
        "country": "GB",
        "town": "Westminster",
        "idType": "passport",
        "idNumber": "AB1234567",
        "profilePicFront": "https://storage.blob.../passport_front.jpg",
        "profilePicBack": "https://storage.blob.../passport_back.jpg",
        "docExpiryDate": "2030-01-01",
        "docIssueDate": "2020-01-01",
        "faceImage": "https://storage.blob.../selfie.jpg",
        "signature": "https://storage.blob.../signature.png",
        "occupation": "software_engineer",
        "accountPurpose": "personal_spending",
        "annualSalary": 75000,
        "expectedMonthlyVolume": 5000,
        "ipAddress": "192.168.1.1"
      }
    }

    Example 2: Business KYB Submission#

    Assume the product requires: CompanyInformation, CompanyDocuments, CompanyAddress, PersonalInformation, PersonalIdentification, PersonalInformationAddress, UBO, UBOAddress, UBOIdentification, UBOSelfie, Representatives, RepresentativeAddress, RepresentativeIdentification, RepresentativeSelfie, Directors, DirectorAddress, DirectorIdentification, DirectorSelfie
    Step 1 — Upload documents:
    POST /api/v1/uploadfile
    
    → certificate_of_inc.pdf     → "https://storage.blob.../certificate.pdf"
    → shareholder_registry.pdf   → "https://storage.blob.../shareholders.pdf"
    → personal_id_front.jpg      → "https://storage.blob.../personal_front.jpg"
    → personal_id_back.jpg       → "https://storage.blob.../personal_back.jpg"
    → ubo_id_front.jpg           → "https://storage.blob.../ubo_front.jpg"
    → ubo_id_back.jpg            → "https://storage.blob.../ubo_back.jpg"
    → ubo_selfie.jpg             → "https://storage.blob.../ubo_selfie.jpg"
    → rep_id_front.jpg            → "https://storage.blob.../rep_front.jpg"
    → rep_id_back.jpg             → "https://storage.blob.../rep_back.jpg"
    → rep_selfie.jpg              → "https://storage.blob.../rep_selfie.jpg"
    → dir_id_front.jpg            → "https://storage.blob.../dir_front.jpg"
    → dir_id_back.jpg             → "https://storage.blob.../dir_back.jpg"
    → dir_selfie.jpg              → "https://storage.blob.../dir_selfie.jpg"
    Step 2 — Submit KYB:
    POST /api/v1/customers/{customerId}/products/{productId}/applicant
    
    {
      "kybDetails": {
        "company": {
          "companyName": "Acme Corp Ltd",
          "type": "limited_company",
          "description": "Fintech payment solutions provider",
          "industry": "financial_services",
          "registrationNumber": "12345678",
          "taxId": "GB123456789",
          "website": "https://acmecorp.com",
          "certificateofincorporation": "https://storage.blob.../certificate.pdf",
          "shareholderregistry": "https://storage.blob.../shareholders.pdf",
          "companyAddress": {
            "addressType": "registered",
            "line1": "456 Business Avenue",
            "line2": "Floor 3",
            "city": "London",
            "postalCode": "EC1A 1BB",
            "country": "GB",
            "town": "City of London"
          }
        },
        "personaldetails": {
          "firstName": "Jane",
          "lastName": "Smith",
          "dateOfBirth": "1985-03-20",
          "country": "GB",
          "email": "jane.smith@acmecorp.com",
          "phoneCode": "+44",
          "phoneNumber": "7700900000",
          "identification": {
            "idType": "passport",
            "idNumber": "CD7654321",
            "countryOfIssue": "GB",
            "docExpireDate": "2029-06-15",
            "docIssueDate": "2019-06-15",
            "frontDocument": "https://storage.blob.../personal_front.jpg",
            "backDocument": "https://storage.blob.../personal_back.jpg"
          },
          "personalInfoAddress": {
            "line1": "789 Home Lane",
            "city": "London",
            "state": "England",
            "postalCode": "SW1A 1AA",
            "country": "GB"
          }
        },
        "ubos": [
          {
            "personDetails": {
              "firstName": "John",
              "lastName": "Doe",
              "dateOfBirth": "1980-01-10",
              "country": "GB",
              "email": "john.doe@acmecorp.com",
              "phoneCode": "+44",
              "phoneNumber": "7700800000",
              "shareHolderPercentage": "60",
              "gender": "male"
            },
            "identification": {
              "idType": "national_id",
              "idNumber": "NI12345678",
              "countryOfIssue": "GB",
              "docExpireDate": "2028-12-01",
              "frontDocument": "https://storage.blob.../ubo_front.jpg",
              "backDocument": "https://storage.blob.../ubo_back.jpg"
            },
            "selfie": "https://storage.blob.../ubo_selfie.jpg",
            "ubosAddress": {
              "line1": "100 Owner Street",
              "city": "Manchester",
              "postalCode": "M1 1AA",
              "country": "GB"
            }
          }
        ],
        "representatives": [
          {
            "personDetails": {
              "firstName": "Sarah",
              "lastName": "Connor",
              "dateOfBirth": "1988-07-25",
              "country": "GB",
              "email": "sarah@acmecorp.com",
              "phoneCode": "+44",
              "phoneNumber": "7700700000",
              "shareHolderPercentage": "0"
            },
            "identification": {
              "idType": "passport",
              "idNumber": "EF9876543",
              "countryOfIssue": "GB",
              "docExpireDate": "2031-03-10",
              "frontDocument": "https://storage.blob.../rep_front.jpg",
              "backDocument": "https://storage.blob.../rep_back.jpg"
            },
            "selfie": "https://storage.blob.../rep_selfie.jpg",
            "representativesAddress": {
              "line1": "50 Rep Road",
              "city": "Birmingham",
              "postalCode": "B1 1AA",
              "country": "GB"
            }
          }
        ],
        "directors": [
          {
            "personDetails": {
              "firstName": "Mike",
              "lastName": "Johnson",
              "dateOfBirth": "1975-11-30",
              "country": "GB",
              "email": "mike@acmecorp.com",
              "phoneCode": "+44",
              "phoneNumber": "7700600000",
              "shareHolderPercentage": "40"
            },
            "identification": {
              "idType": "driving_license",
              "idNumber": "DL98765432",
              "countryOfIssue": "GB",
              "docExpireDate": "2027-08-20",
              "frontDocument": "https://storage.blob.../dir_front.jpg",
              "backDocument": "https://storage.blob.../dir_back.jpg"
            },
            "selfie": "https://storage.blob.../dir_selfie.jpg",
            "directorAddress": {
              "line1": "25 Director Lane",
              "city": "Leeds",
              "postalCode": "LS1 1AA",
              "country": "GB"
            }
          }
        ]
      }
    }

    Responses#

    StatusMeaning
    200KYC/KYB submitted successfully
    404Customer not found
    422Validation error — missing or invalid fields
    Modified atĀ 2026-03-30 05:30:25
    Previous
    Authentication
    Next
    API Setup Guide
    Built with