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
      • Resubmit KYC/KYB Applicant
        PUT
      • 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
      • Change Card PIN
        POST
      • Resend Physical Card Activation Code
        PUT
      • Get Set / Reset PIN Iframe URL
        GET
      • Get Change PIN Iframe URL
        GET
      • Get Card-View Iframe URL
        GET
      • Get Card Limits
        GET
      • Update Card Limits
        POST
    • Funding
      • Top Up Card
      • Get Top-Up Status
      • Get Card Balance
      • List Top-Up History
    • 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
    EmergencyContactemerencyContactName
    AddressaddressLine1,addressLine2
    FullAddressaddressLine1, addressLine2,town, city, state, postalCode, countryIsoTwo
    HandedPassporthandHoldingIdPhoto šŸ“Ž
    Facephoto šŸ“Ž
    SignsignImage šŸ“Ž
    Biomatricbiomatric šŸ“Ž
    IssueDatedocIssueDate
    IpAddressipAddress
    FinancialProfileoccupation, accountPurpose, annualSalary, expectedMonthlyVolume
    IdTypesdocType, docId, frontDoc šŸ“Ž, backDoc šŸ“Ž, docExpireDate, docNeverExpire
    TaxIdtaxId
    TaxDoctaxDoc šŸ“Ž
    šŸ“Ž = 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 KYB, 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,state, postalCode, countryIsoTwo
    TaxIdtaxId
    TaxDoctaxDoc šŸ“Ž
    CompanyRequiredDocumentsdocumentType, url šŸ“Ž, subTypes

    Personal Information (Primary Applicant)#

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

    UBOs (Ultimate Beneficial Owners)#

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

    Representatives#

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

    Directors#

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

    IpAddress#

    RequirementRequired Fields
    IpAddressipAddress


    Industry List#

    The industry field in CompanyInformation must use one of the following values.
    āš ļø The exact Description value must be passed in the API request.
    Description (Value to Send)
    International Affairs
    National Security
    Space Research and Technology
    Regulation, Licensing, and Inspection of Miscellaneous Commercial Sectors
    Regulation of Agricultural Marketing and Commodities
    Regulation and Administration of Communications, Electric, Gas, and Other Utilities
    Regulation and Administration of Transportation Programs
    Administration of General Economic Programs
    Administration of Urban Planning and Community and Rural Development
    Administration of Housing Programs
    Administration of Conservation Programs
    Administration of Air and Water Resource and Solid Waste Management Programs
    Administration of Veterans' Affairs
    Administration of Human Resource Programs (except Education, Public, Health, and Veterans' Affairs Programs)
    Administration of Public Health Programs
    Administration of Education Programs
    Other Justice, Public Order, and Safety Activities
    Fire Protection
    Parole Offices and Probation Offices
    Correctional Institutions

    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",
        "addressLine2": "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",
        "taxId": "502086316",
        "taxDoc": "https://storage.googleapis.com/sample-bucket/taxDoc_12345.jpg"
      }
    }

    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",
          "website": "https://acmecorp.com",
          "certificateofincorporation": "https://storage.blob.../certificate.pdf",
          "shareholderregistry": "https://storage.blob.../shareholders.pdf",
          "taxId": "GB502086316",
          "taxDoc": "https://storage.googleapis.com/sample-bucket/taxDoc_12345.jpg",
          "companyAddress": {
            "addressType": "registered",
            "line1": "456 Business Avenue",
            "line2": "Floor 3",
            "city": "London",
            "postalCode": "EC1A 1BB",
            "countryIsoTwo": "GB",
            "town": "City of London"
          },
          "companyRequiredDocuments": [
                   {
          "documentType":
                 "CERTIFICATE_OF_INCORPORATION",
    "url":"https://example.com/docs/certificate_of_incorporation.pdf",
          "subTypes": []
        },
        {
          "documentType": "SHAREHOLDER_REGISTRY",
          "url": "https://example.com/docs/shareholder_registry.pdf",
          "subTypes": []
        }]
        },
        "personaldetails": {
          "firstName": "Jane",
          "lastName": "Smith",
          "dateOfBirth": "1985-03-20",
          "countryIsoTwo": "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"
          },
          "address": {
            "line1": "789 Home Lane",
            "city": "London",
            "state": "England",
            "postalCode": "SW1A 1AA",
            "countryIsoTwo": "GB"
          }
        },
        "ubos": [
          {
            "personDetails": {
              "firstName": "John",
              "lastName": "Doe",
              "dateOfBirth": "1980-01-10",
              "countryIsoTwo": "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",
            "address": {
              "line1": "100 Owner Street",
              "city": "Manchester",
              "postalCode": "M1 1AA",
              "countryIsoTwo": "GB"
            }
          }
        ],
        "representatives": [
          {
            "personDetails": {
              "firstName": "Sarah",
              "lastName": "Connor",
              "dateOfBirth": "1988-07-25",
              "countryIsoTwo": "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",
            "address": {
              "line1": "50 Rep Road",
              "city": "Birmingham",
              "postalCode": "B1 1AA",
              "countryIsoTwo": "GB"
            }
          }
        ],
        "directors": [
          {
            "personDetails": {
              "firstName": "Mike",
              "lastName": "Johnson",
              "dateOfBirth": "1975-11-30",
              "countryIsoTwo": "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",
            "address": {
              "line1": "25 Director Lane",
              "city": "Leeds",
              "postalCode": "LS1 1AA",
              "countryIsoTwo": "GB"
            }
          }
        ],
        "IpAddress": "123.123.123.123"
    
      }
    }

    Responses#

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