1. Customers
Artha All Module Api's
  • Introduction
  • Authentication
  • KYC/KYB Requirements
  • API Setup Guide
  • Products
    • List Products
      GET
    • Get Product
      GET
    • Get Customer Product Status
      GET
  • Customers
    • Create Customer
      POST
    • List Customers
      GET
    • Get Customer
      GET
    • Submit Applicant (KYC/KYB)
      POST
    • Create Onboarding Session
      POST
  • Wallets
    • Beneficiary
      • Create Crypto Beneficiary
      • Update Crypto Beneficiary
      • List Crypto Withdraw Beneficiaries
    • Create Wallet
      POST
    • Get Wallet Address
      GET
    • Get Customer Balances
      GET
    • List Wallets
      GET
    • List Withdrawals
      GET
    • List Withdrawal Networks
      GET
    • Preview Withdrawal Summary
      POST
    • Create Crypto Withdrawal
      POST
  • Cards
    • Issuance
      • Issue Card
      • List Cards
      • List Customer Cards
      • Get Card Details
      • Get Sensitive Card Details
    • Funding
      • Top Up Card
      • Get Card Balance
      • Get Top-Up Status
      • List Top-Up History
    • Operations
      • Resend Activation Code
      • Activate Card
      • Set Card PIN
      • Change Card PIN
      • Update Card Limits
      • Freeze Card
      • Unfreeze Card
      • Replace Card
      • Cancel Card
      • Get Card Limits
      • Show Card PIN Details
      • Get PIN View Iframe URL
      • Get PIN Change Iframe URL
      • Get PIN Set Iframe URL
      • Get Card View Iframe URL
      • Show Card PIN
  • Payees
    • Create a payee for a customer.
      POST
    • List a customer's payees.
      GET
    • Update a payee.
      PUT
    • Retrieve a payee by id.
      GET
    • Look up an existing payee.
      GET
    • List the currencies a payee can be created in.
      GET
    • List the accepted payment purpose codes for a payee.
      GET
    • List the countries a payee can be created in.
      GET
    • List currency/country pairings for payees.
      GET
    • List the accepted beneficiary relationship codes.
      GET
  • Payments
    • Onboarding
      • List the customer's payout-currency configuration sections.
      • Enable a payout-currency section for the customer.
      • Get the customer's terms-of-service acceptance status.
      • Enable or disable a payout-currency section.
    • Quote
      • List the currencies a beneficiary can be paid in under a product.
      • List the payout rails available for a product and beneficiary.
      • Create an FX quote giving the rate and fee for a cross-currency payout.
    • Order
      • Submit a payout order to send money to a beneficiary.
      • Retrieve the on-chain address to fund an order.
      • Retrieve the status and settlement detail of a payout order.
    • Lookups
      • List the accepted payment purpose codes for a payout.
      • List the accepted source-of-funds codes for a payout.
      • List the document types accepted on a payout order.
  • Banks
    • Accounts
      • Create Bank Account
      • Get Account Details
      • Get Account Issuance Status
    • Withdraw
      • Create Withdrawal Quote
      • List Withdrawal Purposes
      • Get Payment Schemes
      • Execute Withdrawal
  • Exchange
    • Quote
      • Get Exchange Rate
      • Create Price Quote
    • Order
      • Place Exchange Order
  • Transactions
    • List Transactions
    • Get Transaction Details
  • Utilities
    • List Currencies
    • List Countries
    • Get Fee Schedule
    • List Product Occupations
    • List Product Industry Codes
    • Upload File
  • Webhook's
    • Wallets Webhooks
    • Banks Webhooks
    • Payments Webhooks
    • Exchange Webhooks
    • Card Webhooks
  1. Customers

Submit Applicant (KYC/KYB)

POST
/api/v1/customers/{customerId}/products/{productId}/applicant
Submits KYC (individual) or KYB (business) verification details for a customer against a specific
product. Send either the kyc object or the kyb object - exactly one is required.
Prerequisites: the customer and the product must already exist.
Application status values
StatusMeaning
DraftDetails saved, not yet submitted
PendingAwaiting processing
SubmittedSubmitted for verification
UnderReviewVerification in progress
NeedInformationMore information or documents required
ApprovedApplicant verified
RejectedVerification rejected
Cancelled / FailedApplication cancelled or failed
Required Fields
FieldTypeDescription
kycobjectIndividual applicant - required when the customer type is individual
kybobjectBusiness applicant - required when the customer type is business
kyc.person
FieldTypeDescriptionConstraints
firstName / lastNamestringApplicant nameMax: 100
dateOfBirthstring (date)YYYY-MM-DDPattern: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
genderstringe.g. male, female, other-
emailstring (email)Applicant emailMax: 256
countryIsoTwostringApplicant country ISO 2-letter codeMax: 2
phoneCountryCodestringDialling codeMax: 8 - Pattern: ^\+?\d{1,6}$
phoneNumberstringPhone numberMax: 20
occupationstringOccupationMax: 100
emergencyContactNamestringEmergency contactMax: 100
annualSalarynumberAnnual salary0 - 999999999999
accountPurposestringPurpose of the accountMax: 100
expectedMonthlyVolumenumberExpected monthly volume0 - 999999999999
kyc.address
FieldTypeConstraints
addressLine1 / addressLine2stringMax: 1024
town / city / statestringMax: 100
postalCodestringMax: 16
addressCountryIsoTwostring2-3 letters; must exist in the country master
kyc.documents[] - one unified list. The item's type decides how it is handled:
type valueTreated asFields used
PASSPORT, NATIONAL_ID, ID_CARD, DRIVERS_LICENSE, RESIDENCE_PERMIT, VOTER_IDPrimary identity document - send only onedocumentNumber, issueDate, expiryDate, frontUrl, backUrl
SELFIE, SIGNATURE, BIOMETRIC, HANDHELD_ID, CARD_HANDHELD_IDSingle-image biometric capturefrontUrl
anything elseSupporting document (proof of address, secondary ID, ...)frontUrl
type is required on every item (max 100); documentNumber max 100; issueDate/expiryDate are
YYYY-MM-DD; frontUrl/backUrl must be absolute URLs (max 2048). type is case-insensitive.
kyc top level (optional)
FieldTypeDescriptionConstraints
ipAddressstringIP address the submission came fromMax: 45
kycRequirementsstringWhich requirement set this submission satisfies (see the product's kycRequirements)Max: 1024
kyb.company
FieldTypeConstraints
companyName / companyType / industrystringMax: 100
descriptionstringMax: 1024
registrationNumber / taxIdstringMax: 100
websitestring (uri)Valid URL
certificateOfIncorporationUrl / shareholderRegistryUrl / taxDocumentUrlstring (uri)Supporting document URLs
companyAddressobjectaddressType, addressLine1, addressLine2, town, city, state, postalCode, countryIsoTwo
requiredDocuments[]arraydocumentType (100), documentUrl (2048)
kyb.primaryContact, kyb.representatives[], kyb.directors[], kyb.ubos[]
FieldTypeDescriptionConstraints
personDetails.firstName / lastNamestringPerson nameMax: 100
personDetails.dateOfBirthstring (date)YYYY-MM-DD-
personDetails.genderstringGender-
personDetails.countryIsoTwostringISO country code2-3 letters
personDetails.emailstring (email)EmailMax: 256
personDetails.phoneCountryCode / phoneNumberstringPhoneMax: 8 / 20
personDetails.shareholderPercentagestringOwnership percentageMax: 8
documents[]arraydocumentType, documentNumber, countryIsoTwo, documentIssueDate, documentExpiryDate, frontDocumentUrl, backDocumentUrldates YYYY-MM-DD, URLs max 2048
selfieUrlstring (uri)Liveness selfieMax: 2048
addressobjectSame shape as companyAddress-
id / recordStatusuuid / stringOnly on representatives/directors/ubos - supply id to update an existing member-
kyb.ipAddressstringIP address the submission came fromMax: 45
Response Fields (inside data)
FieldTypeDescription
customerIdstring (uuid)Customer the applicant record belongs to
productIdstring (uuid)Product the applicant record was submitted for
walletIdstring (uuid) Wallet associated with the card
applicationStatusstringSee the status table above
applicationReasonstringHuman-readable status detail (empty when there is none)
Supply employeeId when the product is issued for an employee - the details are then verified
against that employee. Omit it when the customer is onboarding themselves.

Request

Path Params

Query Params

Header Params

Body Params application/jsonRequired

Examples

Responses

🟢200
application/json
Applicant details submitted successfully.
Bodyapplication/json

🟠401
🟠404
🟠422
🔴500
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location '/api/v1/customers/3fa85f64-5717-4562-b3fc-2c963f66afa6/products/b1f3c7a2-6c4e-4d91-9f2a-123456789abc/applicant?employeeId=a3d5c8e2-1234-4abc-9def-0123456789ab' \
--header 'X-API-Key;' \
--header 'X-Signature;' \
--header 'X-Timestamp;' \
--header 'X-Nonce;' \
--header 'X-Body-Hash;' \
--header 'X-Idempotency-Key;' \
--header 'Content-Type: application/json' \
--data-raw '{
    "kyc": {
        "person": {
            "firstName": "Jane",
            "lastName": "Doe",
            "dateOfBirth": "1990-06-15",
            "gender": "female",
            "email": "jane.doe@example.com",
            "countryIsoTwo": "GB",
            "phoneCountryCode": "+44",
            "phoneNumber": "7700900000",
            "occupation": "software_engineer",
            "emergencyContactName": "John Doe",
            "annualSalary": 75000,
            "accountPurpose": "personal_spending",
            "expectedMonthlyVolume": 5000
        },
        "address": {
            "addressLine1": "10 Downing Street",
            "addressLine2": "Flat 2",
            "city": "London",
            "state": "England",
            "postalCode": "SW1A 2AA",
            "addressCountryIsoTwo": "GB"
        },
        "documents": [
            {
                "type": "PASSPORT",
                "documentNumber": "AB1234567",
                "issueDate": "2020-01-01",
                "expiryDate": "2030-01-01",
                "frontUrl": "https://storage.blob.core.windows.net/docs/passport_front.jpg",
                "backUrl": "https://storage.blob.core.windows.net/docs/passport_back.jpg"
            },
            {
                "type": "SELFIE",
                "frontUrl": "https://storage.blob.core.windows.net/docs/selfie.jpg"
            },
            {
                "type": "PROOF_OF_ADDRESS",
                "frontUrl": "https://storage.blob.core.windows.net/docs/utility_bill.pdf"
            }
        ],
        "ipAddress": "192.168.1.10",
        "kycRequirements": "FullName,Comms,FullAddress,IdDocument,Selfie"
    }
}'
Response Response Example
200 - Success
{
    "data": {
        "customerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "productId": "b1f3c7a2-6c4e-4d91-9f2a-123456789abc",
        "walletId": "3fa85f64-5717-3462-b3fc-2c963f66efa6",
        "applicationStatus": "UnderReview",
        "applicationReason": ""
    },
    "requestId": "9f2c4b6e8a1d4f0cb7e35a91d2c46f80",
    "timestamp": "2026-08-22T10:30:00.123Z"
}
Modified at 2026-09-20 09:19:59
Previous
Get Customer
Next
Create Onboarding Session
Built with