Skip to main content
GET
https://api.karmapay.xyz/v0
/
v0
/
end-users
/
:externalUserId
/
customer-status
curl -X GET 'https://api.karmapay.xyz/v0/end-users/user_123/customer-status' \
  -H 'Authorization: Bearer karma_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
{
  "data": {
    "externalUserId": "user_123",
    "bridgeCustomerId": "cus_1234567890abcdef",
    "kycStatus": "approved",
    "status": "active",
    "endorsements": [
      {
        "name": "base",
        "status": "approved",
        "requirements": {
          "complete": [
            "government_id_verification",
            "terms_of_service"
          ],
          "missing": {},
          "pending": [],
          "issues": []
        }
      }
    ],
    "baseEndorsementStatus": "approved",
    "baseEndorsementRequirements": {
      "complete": [
        "government_id_verification",
        "terms_of_service"
      ],
      "missing": {},
      "pending": [],
      "issues": []
    }
  }
}
Authentication: Business API Key
Get the Bridge customer endorsement status for an end-user. Poll this endpoint after submitting KYC data to check if the customer’s endorsement has been approved. Endorsement approval is REQUIRED before creating virtual accounts.
Polling Recommendation:
  • Poll this endpoint every 5 seconds until baseEndorsementStatus is "approved"
  • Typical approval time in sandbox: 20-30 seconds
  • Production approval time may vary based on verification complexity

URL Parameters

externalUserId
string
required
Your internal user ID

Response

data
object

Endorsement Status Values

incomplete
status
Requirements not yet met. Continue polling.
approved
status
Customer approved and ready for virtual accounts ✓
rejected
status
Customer rejected. Check baseEndorsementRequirements.issues for details.
curl -X GET 'https://api.karmapay.xyz/v0/end-users/user_123/customer-status' \
  -H 'Authorization: Bearer karma_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
{
  "data": {
    "externalUserId": "user_123",
    "bridgeCustomerId": "cus_1234567890abcdef",
    "kycStatus": "approved",
    "status": "active",
    "endorsements": [
      {
        "name": "base",
        "status": "approved",
        "requirements": {
          "complete": [
            "government_id_verification",
            "terms_of_service"
          ],
          "missing": {},
          "pending": [],
          "issues": []
        }
      }
    ],
    "baseEndorsementStatus": "approved",
    "baseEndorsementRequirements": {
      "complete": [
        "government_id_verification",
        "terms_of_service"
      ],
      "missing": {},
      "pending": [],
      "issues": []
    }
  }
}
Once baseEndorsementStatus is "approved", the end-user is ready for virtual accounts! You can now create virtual accounts or external accounts for them.