Skip to content

Partner API — v3.0.1

Type: Patch Release  ·  Previous version: v3.0.0


✏️ 32 Modified 🚫 1 Deprecated

✏️ Modified Endpoints

DELETE /tenant/customer/forget/{customerAccountId}

Tag: Tenant Customers
Summary: API to delete wallet user (Right to Forget)

Retrieves customer details using customerAccountId provided as a path parameter and deletes the associated wallet user as part of the "Right to Forget" process.

Only the customerAccountId should be provided in the request.

Include the tenant-id in headers to identify the tenant. You may also include the access-token for authentication if applicable.

Use this API to:

  • Permanently delete a wallet user's data
  • Support user data deletion for compliance (e.g., GDPR, user requests)

Updated Response Codes

200

- will wallet user successfully

Successfully removed (forgot) the wallet user. Returns confirmation details.

400

- Bad request response if forget wallet user gets failed

Bad request. Possible reasons: missing parameters, invalid wallet ID, or user already forgotten.

Response Examples

Code Description
200 Successfully removed (forgot) the wallet user. Returns confirmation details.
400 Bad request. Possible reasons: missing parameters, invalid wallet ID, or user already forgotten.

200 — Successfully removed (forgot) the wallet user. Returns confirmation details.

{
  "data": {
    "message": "success"
  }
}

400 — Bad request. Possible reasons: missing parameters, invalid wallet ID, or user already forgotten.

{
  "errors": [
    {
      "type": "wallet user",
      "message": "something went wrong! please try again"
    }
  ]
}

GET /consent/consent-message/{tenantId}

Tag: Consent
Summary: Fetch vendor consent details

Retrieves the consent message configured for a specific tenant and vendor combination.

Useful to:

  • Display consent copy to the customer before accepting consent
  • Retrieve vendor-specific agreement details for audit/logging

Updated Query Parameters

subCategory (string)

  • Description updated:
  • Before: Sub Category
  • After: Consent subcategory (e.g., Deposits)

type (string)

  • Description updated:
  • Before: Type
  • After: Consent type (e.g., ACH)

Updated Response Codes

200

- Get consent message

Consent message fetched successfully

400

- Error response when consent-message api gets failed.

Error occurred while fetching vendor consent details

404

- No data response if there is no details for the given vendor

No consent details found for the given vendor

Response Examples

Code Description
200 Consent message fetched successfully
400 Error occurred while fetching vendor consent details
404 No consent details found for the given vendor

200 — Consent message fetched successfully

{
  "data": {
    "vendorName": "Plaid Inc.",
    "currentActiveVersion": "v1.0.3",
    "consentMessage": "I authorize the platform to retrieve my banking data...",
    "dssId": "dss_4u8ddjeq"
  },
  "message": "Vendor consent details fetched successfully"
}

400 — Error occurred while fetching vendor consent details

{
  "errors": {
    "type": "catch",
    "message": "Something went wrong, please try again"
  }
}

404 — No consent details found for the given vendor

{
  "type": "Consent",
  "message": "No data found"
}

GET /consent/consent-status

Tag: Consent
Summary: Check consent status of a customer

Retrieves the consent status for a customer based on the provided subcategory and type.

Headers:

  • tenant-id (optional): Scope the customer context.
  • access-token (optional): Used to authenticate the customer's identity.

Query Parameters:

  • subCategory: The category under which consent is taken (e.g., Deposits).
  • type: The specific consent type (e.g., ACH).
  • customerAccountId (optional): Unique ID for the customer.

Added Query Params

None

Deprecated Query Params

Parameter Type Description
dssVendorId string DSS Vendor Id e.g. abcd1234-5678-90ab-cdef-123456abcdef

Updated Query Parameters

customerAccountId (string)

  • Description updated:
  • Before: customer Account Id
  • After: Customer account ID for which the consent is being checked

subCategory (string)

  • Description updated:
  • Before: Sub Category
  • After: Sub-category for consent classification (e.g., Deposits)

type (string)

  • Description updated:
  • Before: Type
  • After: Consent type being verified (e.g., ACH)

Updated Response Codes

200

- Check consent status

Returned when consent information is successfully fetched.

400

- Error response when consent-status api gets failed.

Returned when:

  • Required query parameters are missing or invalid
  • Tenant ID is not valid

404

- will give you the error response when no consent is present for the customer

Returned when no consent information is available for the specified criteria.

Response Examples

Code Description
200 Returned when consent information is successfully fetched.
400 Returned when:
404 Returned when no consent information is available for the specified criteria.

200 — Returned when consent information is successfully fetched.

{
  "data": {
    "latestConsentVersion": "<string>"
  },
  "message": [
    "Consent is accepted",
    "Consent is not valid. Please accept the consent"
  ]
}

400 — Returned when:

  • Required query parameters are missing or invalid
  • Tenant ID is not valid
{
  "errors": {
    "type": "catch",
    "message": "Something went wrong, please try again"
  }
}

404 — Returned when no consent information is available for the specified criteria.

{
  "errors": {
    "type": "No data found",
    "message": "No consent is available, please accept the consent"
  }
}

GET /consent/fetch-tnc

Tag: Consent
Summary: Fetch latest Terms & Conditions or Privacy Policy

Retrieves the most recent active version of either Terms & Conditions or Privacy Policy.

This is typically used to:

  • Display the latest legal documents to users
  • Ensure customers accept the current version before onboarding

Updated Query Parameters

type (string)

  • Description updated:
  • Before: document type
  • After: Type of legal document to retrieve

Updated Response Codes

200

- Fetch the latest version of Terms & Condition or Privacy Policy by Id

Returns the latest active document content

400

- Error response while fetching the Terms & Condition or Privacy Policy failed

Returned for invalid type or unexpected errors while fetching the document

401

- Only the universal leger can able to execute the operations

Returned when requestor is not authorized to access the document

Response Examples

Code Description
200 Returns the latest active document content
400 Returned for invalid type or unexpected errors while fetching the document
401 Returned when requestor is not authorized to access the document

200 — Returns the latest active document content

{
  "message": "PRIVACY_POLICY / TERMS_CONDITIONS html content fetched successfully",
  "content": "<string>"
}

400 — Returned for invalid type or unexpected errors while fetching the document

{
  "errors": [
    {
      "type": "catch",
      "message": "error[1]"
    },
    {
      "message": "err.message",
      "type": "catch"
    }
  ]
}

401 — Returned when requestor is not authorized to access the document

{
  "errors": [
    {
      "type": "Not Authorized",
      "message": "This tenant has no access / unauthorized."
    }
  ]
}

GET /federate-id/linked

Tag: Federated Id Management
Summary: Retrieve linked bank account details

Fetch bank account linkage details using one of the supported identifiers: federatedId, walletAddress, or bankAccountNumber. At least one query parameter must be provided. This endpoint is useful to verify if a bank account is already linked with a federated ID or wallet address.

Updated Query Parameters

federatedId (string)

  • Description updated:
  • Before: Federated Id
  • After: The unique federated identifier associated with the user

walletAddress (string)

  • Description updated:
  • Before: Wallet Address
  • After: The blockchain wallet address linked to the bank account
  • Example updated: 0x123abc456def789ghi101jklmnopqrstu

Response Examples

Code Description
200 Linked bank account details retrieved successfully.
400 Missing or invalid query parameters.
401 Error response when user is unauthorized.
403 Error response when user is forbidden.
500 Error response when internal server error.

200 — Linked bank account details retrieved successfully.

{
  "message": "Linked accounts fetched successfully",
  "data": [
    {
      "bankAccountNumber": "1234567890",
      "federatedId": "FE-9876543210",
      "walletAddress": "0x123abc456def789ghi101jklmnopqrstu",
      "abaNumber": "021000021",
      "createdAt": "2020-08-01T12:34:56.000Z"
    }
  ]
}

400 — Missing or invalid query parameters.

{
  "errors": [
    {
      "type": "Federated Id",
      "message": "Bank accounts not found"
    }
  ]
}

401 — Error response when user is unauthorized.

{
  "errors": [
    {
      "type": "Invalid",
      "message": "Invalid Tenant Id"
    }
  ]
}

403 — Error response when user is forbidden.

{
  "errors": [
    {
      "type": "Access Control",
      "message": "Access denied for this resource"
    }
  ]
}

500 — Error response when internal server error.

{
  "error": {
    "type": "Internal server error",
    "message": "An unexpected error occurred. Please try again later"
  }
}

GET /offchainTransaction/transfer-method

Tag: Off Chain Transactions
Summary: Fetch available transfer methods

Retrieves available off-chain transfer methods (e.g., ACH, Wire) for a given user identity based on the input query.

You must pass the type query parameter to specify the transfer method type (e.g., ach, wire).

You can optionally provide either:

  • namespace (e.g., example.user.ul) or
  • blockchainAddress (e.g., 0xABC...) to scope the identity.

Include the tenant-id in headers to identify the tenant. Include the api-key for authenticated access.

Use this API to:

  • Display eligible payment methods to the user
  • Determine routing based on verified off-chain identities

Updated Query Parameters

blockchainAddress (string)

  • Description added: Blockchain wallet address of the user

namespace (string)

  • Description added: User namespace

type (string)

  • Description added: Transfer method type (e.g., ach, wire, etc)

Updated Response Codes

200

- will fetch transfer methods via identityId

Returned when valid transfer methods are successfully fetched.

400

- Bad request response if transfer methods fetching get failed

Returned when required query parameters are missing or identity cannot be resolved.

Response Examples

Code Description
200 Returned when valid transfer methods are successfully fetched.
400 Returned when required query parameters are missing or identity cannot be resolved.

200 — Returned when valid transfer methods are successfully fetched.

{
  "data": {
    "id": "offchain_12345",
    "bankDetails": "Royal Bank, John Doe, GB94BARC10201530093459",
    "type": "ach",
    "createdAt": "2024-11-03T13:45:30.000Z"
  },
  "message": "Successfully fetched transfer methods"
}

400 — Returned when required query parameters are missing or identity cannot be resolved.

{
  "errors": "[\n  {\n    \"type\": \"catch\",\n    \"message\": \"API failed in execution\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"Please provide either namespace or blockchain address\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"Tenant Id is missing in Headers\"\n  },\n  {\n    \"type\": \"No data found\",\n    \"message\": \"Please provide valid namespace\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"Couldn't allow the transaction, customer doesn't belong to Tenant\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"isTenantAuthorized?.message\"\n  },\n  {\n    \"type\": \"No data found\",\n    \"message\": \"Please provide valid namespace\"\n  },\n  {\n    \"data\": [],\n    \"message\": \"No Transfer Method Available For : namespace\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"Couldn't allow the transaction, customer doesn't belong to Tenant\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"isTenantAuthorized?.message\"\n  },\n  {\n    \"type\": \"No data found\",\n    \"message\": \"Please provide valid namespace\"\n  },\n  {\n    \"type\": \"catch\",\n    \"message\": \"Failed to fetch the transfer method\"\n  }\n]"
}

GET /tenant/badge

Tag: Badge Management
Summary: Fetch all badges

Retrieves a paginated list of badges with optional filters and search.

Useful for dashboard views, admin portals, and filtered badge management.

Updated Query Parameters

page (number)

  • Description updated:
  • Before: Page index
  • After: Page index for pagination (starts from 1)

pagesize (number)

  • Description updated:
  • Before: Page size
  • After: Number of items per page

search (string)

  • Description updated:
  • Before: search key
  • After: Search keyword (badge name as silver, gold etc. and badge type as identification, financial, information)

Updated Response Codes

200

- will list all the badges

Successfully retrieved the list of badges

400

- Bad request response if list all badges

Returned when badge listing fails due to validation or processing error

Response Examples

Code Description
200 Successfully retrieved the list of badges
400 Returned when badge listing fails due to validation or processing error

200 — Successfully retrieved the list of badges

{
  "data": [],
  "pageNumber": 1,
  "pagesize": 10
}

400 — Returned when badge listing fails due to validation or processing error

{
  "errors": [
    {
      "type": "catch",
      "message": "shows the error message while API failed in execution"
    },
    {
      "message": "Page or pagesize should be positive value or atleast 1",
      "type": "page"
    },
    {
      "type": "catch",
      "message": "err.message"
    }
  ]
}

GET /tenant/badge/assign/fetch-all/{identificationBadgeId}

Tag: Badge Management
Summary: Fetch all assigned financial, identification, and information badges along with token list

Retrieves the complete list of badges and tokens associated with a given identification badge ID.

Useful for viewing all linked credentials or representations tied to a user or entity.

Added Response Codes

Code Description
400 Returned when retrieval fails due to validation or processing errors

Deprecated Response Codes

None

Updated Response Codes

200

Successfully retrieved all assigned badges with linked token details

Response Examples

Code Description
200 Successfully retrieved all assigned badges with linked token details
400 Returned when retrieval fails due to validation or processing errors

200 — Successfully retrieved all assigned badges with linked token details

{
  "data": [
    {
      "publicId": "8d776c9f-2038-45dc-87dd-0d995af7fdaf",
      "token": "TOK-123",
      "identificationBadgeDetails": {
        "identificationBadgeId": "36d166e5-c9d9-445b-8458-281546dd8171",
        "badgeName": "BRONZE-IDENTIFICATION-BADGE",
        "badgeType": "FIN"
      },
      "financialBadgeDetails": {
        "financialBadgeId": "62a8de99-1934-4e38-805b-74fa31b7c1ab",
        "badgeName": "GOLD-FINANCIAL-BADGE",
        "badgeType": "FIN"
      },
      "customFinanceBadgeDetails": {
        "customFinancialBadgeId": "e4d123c2-0c6e-45a4-bf8c-1a4cc87f2a63",
        "badgeName": "CUSTOM-FIN-BADGE",
        "badgeType": "FIN"
      },
      "informationBadgeDetails": {}
    }
  ],
  "message": "badges with token linked fetched successfully."
}

400 — Returned when retrieval fails due to validation or processing errors

{
  "errors": []
}

GET /tenant/badge/{badgeId}

Tag: Badge Management
Summary: Fetch badge details by badgeId

Retrieves detailed information about a specific badge using its badgeId.

Includes metadata, issuance details, and associated configuration if available.

Updated Path Parameters

badgeId (string)

  • Description updated:
  • Before: badge Id
  • After: Unique identifier of the badge

Updated Response Codes

200

- Success response

Returned when badge details are successfully retrieved

400

- Bad request response if badge detail update get failed

Returned when badgeId is invalid or details could not be fetched

Response Examples

Code Description
200 Returned when badge details are successfully retrieved
400 Returned when badgeId is invalid or details could not be fetched

200 — Returned when badge details are successfully retrieved

{
  "data": [
    {
      "badgeId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
      "badgeName": "Qamar Khan",
      "badgeType": "IDENTIFICATION",
      "badgeDescription": "bronze identification badge",
      "userGroup": "WALLET_USER",
      "badgeSymbolRef": "https://ulcheckpointstaging.blob.core.windows.net/staging-blob-container/Sheetal%20Kumar",
      "createdBy": "dff33fea-b456-4cfa-b2a1-0cbf9071aefe",
      "storageProvider": "abc",
      "createdAt": "2022-12-07T00:00:00.000Z",
      "updatedAt": "2022-12-07T00:00:00.000Z",
      "financial_badge_token": [
        {
          "financialBadgeId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
          "tokenSymbol": "USBC",
          "createdAt": "2022-12-07T00:00:00.000Z",
          "updatedAt": "2022-12-07T00:00:00.000Z"
        }
      ],
      "badge_rules": [
        {
          "ruleId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
          "badgeId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
          "tenantId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
          "isActive": "true",
          "startDate": "2023-12-18T18:30:00.000Z",
          "endDate": "2023-12-18T18:30:00.000Z",
          "ruleGroup": "wallet-user",
          "ruleVersion": "1",
          "isDefaultRule": "false",
          "createdBy": "dff33fea-b456-4cfa-b2a1-0cbf9071aefe",
          "status": "pending",
          "inactiveDate": "2022-12-07T00:00:00.000Z",
          "createdAt": "2022-12-07T00:00:00.000Z",
          "updatedAt": "2022-12-07T00:00:00.000Z"
        }
      ]
    }
  ],
  "message": "Badge details fetched successfully"
}

400 — Returned when badgeId is invalid or details could not be fetched

{
  "CatchError": {}
}

GET /tenant/business-user/{businessUserId}

Tag: Business User
Summary: Fetch business user details by businessUserId

Retrieves detailed information of a business user using their unique ID.

This includes metadata, KYC documents, and verification status if available.

Updated Response Codes

200

- will fetch the business user details via businessUserId

Business user details successfully fetched

400

- Bad request response if fetching business user details get failed

Returned when the business user ID is invalid or lookup fails

Response Examples

Code Description
200 Business user details successfully fetched
400 Returned when the business user ID is invalid or lookup fails

200 — Business user details successfully fetched

{
  "message": "Business user details fetched successfully",
  "data": {
    "businessUserId": "Jone Doe",
    "businessUserName": "Jone Doe",
    "domain": "jonedoe",
    "startDate": "2023-11-30T18:30:00.000Z",
    "endDate": "2023-11-30T18:30:00.000Z",
    "complianceStatus": "PENDING",
    "accountStatus": "PENDING",
    "onboardingStatus": "PENDING",
    "identityProviderStatus": "PENDING",
    "createdAt": "2023-12-01T11:12:47.449Z",
    "updatedAt": "2023-12-01T11:12:47.449Z",
    "tenantId": "53834add-8bf9-4982-a356-3cc420bd6be7",
    "business_user_namespaces": {
      "businessUserNamespaceId": "1d528994-cdc7-4766-ab3e-2dd99995867c",
      "businessUserId": "1d528994-cdc7-4766-ab3e-2dd99995867c",
      "businessUserNamespace": "test.ul",
      "accountAddress": "1d500994-cdc7-4766-ab3e-2dd99995867c"
    },
    "dss_business_users": {
      "dssTypeId": "70b7e287-37bf-4422-934c-27f7d451f274",
      "businessUserId": "70b7e287-37bf-4422-934c-27f7d451f274",
      "dssId": "140638535",
      "createdAt": "2023-12-01T11:12:45.802Z",
      "updatedAt": "2023-12-01T11:12:45.802Z"
    },
    "business_user_metadata": {
      "businessUserMetadataId": "70b7e287-37bf-4422-934c-27f7d451f274",
      "businessUserId": "70b7e287-37bf-4422-934c-27f7d451f274",
      "companyAddress": {
        "address1": "Mr John Smith. 132, 40ft Street, Kingston",
        "city": "San Francisco",
        "state": "CA",
        "isoCountryCode": "US",
        "postalCode": "90213"
      },
      "email": "<string>",
      "taxId": "<number>",
      "legalName": "<string>",
      "phone": "<number>",
      "businessEntityName": "<string>",
      "bankVerificationNumber": "<number>",
      "incorporationDocs": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "jurisdictionDocs": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "otherDocs": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "entityBeneficialOwners": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "individualBeneficialOwners": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "controlPersons": {
        "title": "supervisor",
        "identification": {
          "documentType": "8",
          "fileName": "filename.png",
          "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
          "countryCode": "US"
        },
        "documents": [
          {
            "documentType": "8",
            "fileName": "filename.png",
            "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
            "countryCode": "US"
          }
        ],
        "dateOfBirth": "2000-12-01",
        "emailAddress": "test@test.com",
        "firstName": "First name",
        "lastName": "Last name",
        "phoneNumber": "9100000000",
        "phoneNumberType": "0",
        "taxIdNumber": "122-22-2332",
        "address": {
          "address1": "Lorem Ipsum is simply dummy text",
          "city": "Lorem",
          "state": "CA",
          "isoCountryCode": "US",
          "postalCode": "90213"
        },
        "bvn": "bn01910190",
        "customAttributes": [
          {
            "name": "name",
            "value": "value"
          }
        ],
        "proofOfAddress": {
          "documentType": "8",
          "fileName": "filename.png",
          "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
          "countryCode": "US"
        }
      },
      "memoFields": {
        "name": "<string>",
        "value": "<string>"
      },
      "otherDetails": "<string>",
      "registeredOfficeAddress": {
        "address1": "Lorem Ipsum is simply dummy text",
        "address2": "Lorem Ipsum is simply dummy text",
        "city": "Lorem",
        "state": "CA",
        "isoCountryCode": "US",
        "postalCode": "90213"
      },
      "signatories": {
        "title": "supervisor",
        "identification": {
          "documentType": "8",
          "fileName": "filename.png",
          "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
          "countryCode": "US"
        },
        "documents": [
          {
            "documentType": "8",
            "fileName": "filename.png",
            "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
            "countryCode": "US"
          }
        ],
        "dateOfBirth": "2000-12-01",
        "emailAddress": "test@test.com",
        "firstName": "First name",
        "lastName": "Last name",
        "phoneNumber": "9100000000",
        "phoneNumberType": "0",
        "taxIdNumber": "122-22-2332",
        "address": {
          "address1": "Lorem Ipsum is simply dummy text",
          "city": "Lorem",
          "state": "CA",
          "isoCountryCode": "US",
          "postalCode": "90213"
        },
        "bvn": "bn01910190",
        "customAttributes": [
          {
            "name": "name",
            "value": "value"
          }
        ],
        "proofOfAddress": {
          "documentType": "8",
          "fileName": "filename.png",
          "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
          "countryCode": "US"
        }
      }
    },
    "business_user_documents": {
      "businessUserDocumentId": "0598df1a-3f21-48e1-803e-071dc7be372d",
      "businessUserId": "1d528994-cdc7-4766-ab3e-2dd99995867c",
      "documentType": "8",
      "fileName": "filename.png",
      "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
      "countryCode": "US",
      "type": "incorporationDocs",
      "createdAt": "2023-12-01T11:12:47.699Z",
      "updatedAt": "2023-12-01T11:12:47.699Z"
    },
    "walletBalanceDetails": {
      "accountAddress": "0x5179ba6509980077000977f5eac2",
      "namespaceId": "1d528994-cdc7-4766-ab3e-2dd99995867c",
      "isGlobal": "<number>",
      "isPrimary": "<string>",
      "domainNamespace": "snltd7.biz.sonnyss31.ul",
      "tenantId": "1d528994-cdc7-4766-ab3e-2dd99995867c",
      "tenantName": "Digit Ltd",
      "customNamespace": "snltd7.biz.sonnyss31.ul",
      "namespaceProvider": "2023-12-01T11:12:47.699Z",
      "balance": {
        "balance": "0",
        "name": "USBC",
        "symbol": "USBC"
      }
    }
  }
}

400 — Returned when the business user ID is invalid or lookup fails

{
  "errors": [
    {
      "type": "catch",
      "message": "Please provide valid business user id"
    },
    {
      "type": "catch",
      "message": "err[1]"
    },
    {
      "type": "catch",
      "message": "error.message"
    }
  ]
}

GET /tenant/customer/customer-details

Tag: Tenant Customers
Summary: Fetch tenant customer details

Retrieves customer details using one of the following:

  • Namespace, Account Address, Customer Name, Custom Namespace, or Phone Number

Only one field should be provided per request. If none or multiple are sent, you'll get a 400 Bad Request.

Include the tenant-id in headers to identify the tenant.

Use this API to:

  • Look up existing customers
  • Fetch details for wallet actions or onboarding

Updated Response Codes

200

- will fetch the tenant customer details successfully

Successfully fetched tenant customer details.

400

- Bad request response if tenant customer detail fetching get failed

Bad request. Failed to fetch tenant customer details.

404

- will give you the error response when it don't find any data related the given user-namespace, account-address, customer-name or custom-namespace

No data found for the provided user namespace, account address, customer name, or custom namespace.

Response Examples

Code Description
200 Successfully fetched tenant customer details.
400 Bad request. Failed to fetch tenant customer details.
404 No data found for the provided user namespace, account address, customer name, or custom namespace.

200 — Successfully fetched tenant customer details.

{
  "message": "Customer details fetched successfully",
  "data": [
    {
      "domainNamespace": "ul-ledger.user.ul",
      "customNamespace": "esstech.ul",
      "namespaceProvider": "msv",
      "tenantName": "Prod Uled",
      "firstName": "amber",
      "middleName": "donald",
      "lastName": "wenny",
      "taxIdNumber": "122-22-2332",
      "ssn": "ssn",
      "phoneNumber": "+15417543010",
      "dateOfBirth": "1997-04-02",
      "address": {
        "city": "New York",
        "state": "KY",
        "address1": "123 Main St",
        "country": "US",
        "postalCode": "10001",
        "isoCountryCode": "US"
      },
      "latLong": {
        "lat_long_data": "Lorem",
        "lat_long_country": "US",
        "lat_long_city": "address1"
      },
      "email": "amber.wenny@mail.com",
      "occupation": "Engineer",
      "annualSalary": "50000-75000",
      "accountPurpose": "Savings",
      "expectedMonthlyVolume": "1000-5000",
      "accountAddress": "0x3107259fa40121c259e524042b30326fd9625516",
      "kycStatus": "PENDING",
      "fundingStatus": "ACCEPTED",
      "complianceStatus": "ACCEPTED",
      "accountStatus": "ACTIVE",
      "customerAccountCategory": "bronze",
      "wallets": [],
      "PEPScreeningPassed": "Pending",
      "geographyScreening": "<string>",
      "locationConfidenceScore": "<string>",
      "nameScreening": "<string>",
      "overallComplianceStatus": "<string>"
    }
  ]
}

400 — Bad request. Failed to fetch tenant customer details.

{
  "errors": [
    {
      "type": "More value",
      "message": "Please provide only one value"
    },
    {
      "type": "No value",
      "message": "Please provide any one value"
    },
    {
      "type": "No value",
      "message": "Please provide valid tenant id"
    },
    {
      "type": "No data found",
      "message": "No data found"
    },
    {
      "type": "catch",
      "message": "error[1]"
    },
    {
      "type": "catch",
      "message": "err.message"
    }
  ]
}

404 — No data found for the provided user namespace, account address, customer name, or custom namespace.

{
  "errors": [
    {
      "message": "No data found",
      "type": "No data"
    }
  ]
}

GET /tenant/customer/customer-full-details/{customerAccountId}

Tag: Tenant Customers
Summary: Fetch details of a customer using customer account ID

Retrieves customer details using customer account ID provided as a path parameter.

Only one field should be provided per request — in this case, the customerAccountId in the URL.

Include the tenant-id in headers to identify the tenant. You may also include access-token and api-key headers for authentication if applicable.

Use this API to:

  • Look up existing customers by account ID
  • Fetch complete customer profiles for verification or system actions

Updated Path Parameters

customerAccountId (string)

  • Description updated:
  • Before: Customer Account Id
  • After: Unique identifier for the customer account.

Updated Response Codes

200

- will fetch the tenant customer details successfully

Successfully fetched full tenant customer details.

400

- Bad request response if tenant customer detail fetching get failed

Bad request. Failed to fetch full tenant customer details.

404

- will give you the error response when it unable find any data related to the given customer account id

No customer data found for the provided customer account ID.

Response Examples

Code Description
200 Successfully fetched full tenant customer details.
400 Bad request. Failed to fetch full tenant customer details.
404 No customer data found for the provided customer account ID.

200 — Successfully fetched full tenant customer details.

{
  "message": "Customer details fetched successfully",
  "data": [
    {
      "customerAccountId": "c8abc8ff-8c56-4231-9e55-aaca9698a3d7",
      "domainNamespace": "ul-ledger.user.ul",
      "customNamespace": "esstech.ul",
      "namespaceProvider": "msv",
      "tenantName": "Prod Uled",
      "firstName": "amber",
      "middleName": "donald",
      "lastName": "wenny",
      "taxIdNumber": "122-22-2332",
      "ssn": "ssn",
      "phoneNumber": "+15417543010",
      "dateOfBirth": "1997-04-02",
      "address": {
        "city": "New York",
        "state": "KY",
        "address1": "123 Main St",
        "country": "US",
        "postalCode": "10001",
        "isoCountryCode": "US"
      },
      "latLong": {
        "lat_long_data": "Lorem",
        "lat_long_country": "US",
        "lat_long_city": "address1"
      },
      "email": "amber.wenny@mail.com",
      "occupation": "Engineer",
      "annualSalary": "50000-75000",
      "accountPurpose": "Savings",
      "expectedMonthlyVolume": "1000-5000",
      "accountAddress": "0x3107259fa40121c259e524042b30326fd9625516",
      "kycStatus": "PENDING",
      "fundingStatus": "ACCEPTED",
      "complianceStatus": "ACCEPTED",
      "accountStatus": "ACTIVE",
      "customerAccountCategory": "bronze",
      "documents": [],
      "tenant_customer_notes": [],
      "wallets": [],
      "idBadgeLogs": [],
      "infoBadge": [],
      "denialCode": "<string>",
      "denialReason": "<string>",
      "governmentIdVerificationStatus": "Not Verified",
      "poaVerificationStatus": "Not Verified",
      "ssnVerificationStatus": "Not Verified",
      "bankVerificationStatus": "Not Verified"
    }
  ]
}

400 — Bad request. Failed to fetch full tenant customer details.

{
  "errors": [
    {
      "type": "catch",
      "message": "error[1]"
    },
    {
      "type": "catch",
      "message": "err.message"
    }
  ]
}

404 — No customer data found for the provided customer account ID.

{
  "errors": [
    {
      "type": "No data found",
      "message": "No data found for tenant"
    },
    {
      "type": "No data available",
      "message": "There is no such customer account in the given tenant id"
    }
  ]
}

GET /transactions/identifier/{identifier}/type/{type}/history

Tag: Chain
Summary: API endpoint to fetch the on chain or off chain transactions history

Updated Query Parameters

memo (string)

  • Example updated: payment

Updated Path Parameters

identifier (string)

  • Example updated: john.ul

type (string)

  • Example updated: on-chain

Response Examples

Code Description
200 Fetch on chain or off chain transactions history
400 Error : 400 response

200 — Fetch on chain or off chain transactions history

{
  "data": [
    {
      "trxId": "0xca6ede3c859f76289f2da6cdf5774645eb155795b685c20b28ee9a4e74445d82",
      "blockHash": "0xc24cf427119c9d125490782468368e6c06c47eec842f904b2fa0baaf27c754c5",
      "blockNumber": "362839",
      "amount": "2000000000000000000",
      "paymentType": "credit",
      "from": "0x0x0000000000000000000000000000000000000",
      "to": "0xd0112345678907da6383b7c4ec349e5ae85404d0",
      "tokenSymbol": "TOKEN",
      "fromNamespace": "itech.sheetalus.ul",
      "toNamespace": "itech.punitus.ul",
      "fromCustomNamespace": "itech_sheetalus_ul",
      "toCustomNamespace": "itech_punitus_ul",
      "status": "Completed",
      "timestamp": "1672925586",
      "isError": "0",
      "revertReason": null,
      "navigationURL": "https://rpc.tst.ent.universalledger.publicmint.io:8545/tx/0xca6ede3c859f76289f2da6cdf5774645eb155795b685c20b28ee9a4e74445d82/internal-transactions"
    },
    {
      "trxId": "0xd55658107bf03b592064204f90457fd61ad0109f9f09e43eeb4ce003d351288b",
      "blockHash": "0x88555a433ff5891771daa097f5824cd54ae44e7531f60bb2cd27c2e05bf34a07",
      "blockNumber": "362830",
      "amount": "1000000000000000000",
      "paymentType": "credit",
      "from": "0x0x0000000000000000000000000000000000000",
      "to": "0xd0112345678907da6383b7c4ec349e5ae85404d0",
      "tokenSymbol": "TOKEN",
      "fromNamespace": "itech.sheetalus.ul",
      "toNamespace": "itech.punitus.ul",
      "fromCustomNamespace": "itech_sheetalus_ul",
      "toCustomNamespace": "itech_punitus_ul",
      "status": "Completed",
      "timestamp": "1672925550",
      "isError": "0",
      "revertReason": null,
      "navigationURL": "https://rpc.tst.ent.universalledger.publicmint.io:8545/tx/0xd55658107bf03b592064204f90457fd61ad0109f9f09e43eeb4ce003d351288b/internal-transactions"
    },
    {
      "trxId": "0xc2c415def09cb7bbaa9b8d419f917bb7e7e20d345447dadeac04a0a40c730269",
      "blockHash": "0x74f1beb868586e1047b1fc72044ed31f0490261875cefa4004278704f57c09e8",
      "blockNumber": "362823",
      "amount": "500000000000000000000",
      "paymentType": "credit",
      "from": "0x0x0000000000000000000000000000000000000",
      "to": "0xd0112345678907da6383b7c4ec349e5ae85404d0",
      "tokenSymbol": "TOKEN",
      "fromNamespace": "itech.sheetalus.ul",
      "toNamespace": "itech.punitus.ul",
      "fromCustomNamespace": "itech_sheetalus_ul",
      "toCustomNamespace": "itech_punitus_ul",
      "status": "Completed",
      "timestamp": "1672925522",
      "isError": "0",
      "revertReason": null,
      "navigationURL": "https://rpc.tst.ent.universalledger.publicmint.io:8545/tx/0xc2c415def09cb7bbaa9b8d419f917bb7e7e20d345447dadeac04a0a40c730269/internal-transactions"
    }
  ]
}

400 — Error : 400 response

{
  "errors": [
    {
      "type": "Transaction error",
      "error": "No address found for namespace john.ul"
    },
    {
      "type": "Transaction error",
      "error": "Identifier does not belong to tenant_id"
    },
    {
      "type": "filterError",
      "message": "Start date can not be greater than the End date"
    },
    {
      "type": "filterError",
      "message": "type can only be on-chain || off-chain"
    },
    {
      "type": "filterError",
      "message": "Error in fetchOnChainTransactionHistory: ${error.message}"
    },
    {
      "type": "filterError",
      "message": "Error in fetchOffChainTransactionHistory: ${error.message}"
    }
  ]
}

GET /transactions/{identifier}/balance

Tag: Chain
Summary: Gets the balance of the address.

Updated Path Parameters

identifier (string)

  • Example updated: john.ul

Response Examples

Code Description
200 Gets the balance of the address.
400 Error : 400 response

200 — Gets the balance of the address.

{
  "data": {
    "accountBalance": "196999000000000000000"
  }
}

400 — Error : 400 response

{
  "errors": [
    {
      "type": "Client error",
      "error": "Unable to fetch balance for address 0x439028fcbb2b9e04dbd6be8e3e6f1458b31f949cc"
    },
    {
      "type": "Client error",
      "error": "Identifier does not belong to tenant_id"
    }
  ]
}

POST /consent/accept-consent

Tag: Consent
Summary: Accept customer or tenant consent

Accepts consent from a customer or tenant for a specific vendor or service.

Include the tenant-id and optionally access-token in the request headers.

Use this API to:

  • Record user consent for vendors or platforms
  • Ensure legal compliance with consent records

Updated Request Body Fields

consentStatus (string)

  • Description updated:
  • Before: consent Status
  • After: Status of the customer consent (e.g., ACCEPTED, REVOKED).

consentVersion (string)

  • Description updated:
  • Before: consent Version
  • After: Version of the consent document that the user agreed to.
  • Example updated: v2.3

customerAccountId (string)

  • Description updated:
  • Before: customerAccountId
  • After: Unique identifier for the customer account (UUID). Optional for new consents.
  • Example updated: f9b8b57a-9e03-4d3e-8b5e-5dfb2942fc56

dssVendorId (string)

  • Description updated:
  • Before: dssVendorId
  • After: Unique identifier assigned to the DSS vendor.
  • Example updated: vendor_xyz_123

type (string)

  • Description updated:
  • Before: type
  • After: Type of payment or account method the consent relates to (e.g., ACH, etc).

Updated Response Codes

201

- Success Response when consent is accepted successfully

Returned when the consent is successfully accepted and stored.

400

- Error response when accept consent api gets failed.

Returned when:

  • Required fields are missing
  • Consent is already accepted
  • Tenant information is invalid

Current Request Example

{
  "customerAccountId": "f9b8b57a-9e03-4d3e-8b5e-5dfb2942fc56",
  "dssVendorId": "vendor_xyz_123",
  "consentStatus": "ACCEPTED",
  "consentVersion": "v2.3",
  "type": "ACH"
}

Response Examples

Code Description
201 Returned when the consent is successfully accepted and stored.
400 Returned when:

201 — Returned when the consent is successfully accepted and stored.

{
  "data": {
    "customerConsentId": "ccid_654321",
    "customerAccountId": "f9b8b57a-9e03-4d3e-8b5e-5dfb2942fc56",
    "dssVendorId": "vendor_xyz_123",
    "consentStatus": "ACCEPTED",
    "consentVersion": "v2.3",
    "createdAt": "2025-07-15T08:12:34.000Z",
    "updatedAt": "2025-07-15T09:15:12.000Z"
  },
  "message": "Customer consent updated successfully"
}

400 — Returned when:

  • Required fields are missing
  • Consent is already accepted
  • Tenant information is invalid
{
  "errors": {
    "type": "catch",
    "message": "Something went wrong, please try again"
  }
}

POST /digital-wallet/deposit

Tag: Digital Wallet
Summary: Deposit via digital wallet into the user account

Initiates a deposit request using a digital wallet linked to the user account. This API is typically used to top up wallet balance.

Updated Response Codes

201

- Success Response when url is fetched successfully

Deposit successfully initiated

400

- Error response for all possible cases when calling add fund  api gets failed.

Returned when deposit initiation fails due to validation or processing errors

Current Request Example

{
  "amount": "<number>",
  "namespace": "test.jones1.ul",
  "successUrl": "https://console-dev.cab340b7670d495a8ed7.eastus.aksapp.io/payments/success",
  "failureUrl": "https://console-dev.cab340b7670d495a8ed7.eastus.aksapp.io/payments/failure",
  "cancelUrl": "https://console-dev.cab340b7670d495a8ed7.eastus.aksapp.io/payments/cancel",
  "ipAddress": "127.0.0.1",
  "token": "THAI"
}

Response Examples

Code Description
201 Deposit successfully initiated
400 Returned when deposit initiation fails due to validation or processing errors

201 — Deposit successfully initiated

{
  "data": {
    "url": "https://www.sandbox.paypal.com/checkoutnow?token=6KY73853N7081953X",
    "fiatTransactionId": "dca665ae-ffae-4249-9b5b-31439d470258",
    "fiatStatus": "PENDING",
    "namespace": "digit.sheetalku55.ul",
    "amount": 87,
    "fiatTransactionHistory": {
      "fiatTxnHistoryId": "be02917c-c515-4579-9e99-a159f81bb333",
      "status": "PENDING",
      "description": "Digital wallet transaction status is initiated, default status is pending.",
      "createdAt": "2024-07-19T07:48:20.791Z"
    }
  }
}

400 — Returned when deposit initiation fails due to validation or processing errors

{
  "errors": [
    {
      "type": "Add Fund",
      "message": "please enter namespace of user"
    },
    {
      "type": "Add Fund ",
      "message": "no payment provider detail found"
    },
    {
      "type": "Add Fund",
      "message": "Something went wrong, please try again"
    }
  ]
}

POST /federate-id/link

Tag: Federated Id Management
Summary: Link a bank account with a federated ID wallet

This endpoint links a bank account to a wallet address associated with a federated ID. The client must provide valid account and wallet details in the request payload. If the account is already linked or the input is invalid, an error response is returned.

Updated Request Body Fields

federatedId (string)

  • Description updated:
  • Before: federated Id
  • After: The unique federated identifier associated with the user
  • Example updated: fed-789654123

walletAddress (string)

  • Description updated:
  • Before: wallet address
  • After: The blockchain wallet address to be linked with the bank account
  • Example updated: 0x123abc456def789ghi101jklmnopqrstu

Current Request Example

{
  "walletAddress": "0x123abc456def789ghi101jklmnopqrstu",
  "federatedId": "fed-789654123"
}

Response Examples

Code Description
201 Bank account successfully linked to wallet
400 Invalid input or bank account already linked
401 Error response when user is unauthorized.
403 Error response when user is forbidden.
500 Server error

201 — Bank account successfully linked to wallet

{
  "message": "Bank account linked successfully",
  "data": {
    "federatedId": "125AH",
    "bankAccountNumber": "2123",
    "walletAddress": "1234567890",
    "abaNumber": "1234567890"
  }
}

400 — Invalid input or bank account already linked

{
  "errors": [
    {
      "type": "Federated Id",
      "message": "Wallet address or Federated Id already linked"
    }
  ]
}

401 — Error response when user is unauthorized.

{
  "errors": [
    {
      "type": "Invalid",
      "message": "Invalid Tenant Id"
    }
  ]
}

403 — Error response when user is forbidden.

{
  "errors": [
    {
      "type": "Access Control",
      "message": "Access denied for this resource"
    }
  ]
}

500 — Server error

{
  "error": {
    "type": "Internal server error",
    "message": "An unexpected error occurred. Please try again later"
  }
}

POST /offchainTransaction/transfer-method

Tag: Off Chain Transactions
Summary: Create a transfer for tenant or customer

Initiates a transfer request on behalf of a tenant or user, depending on the payload.

Supports multiple types of off-chain transfers such as:

  • ach (Automated Clearing House)
  • wire

Required fields vary by type:

  • For ACH:
    • bankAccountName
    • bankAccountNumber
    • routingNumber
    • namespace
    • type: "ach"

Include the tenant-id in headers to identify the tenant. You may also include the api-key for secured access.

Use this API to:

  • Add new off-chain bank transfer method for a customer or tenant
  • Enable wallet withdrawals or deposits via traditional banking rails

Updated Request Body Fields

accountType (string)

  • Description updated:
  • Before: Account type checking | saving
  • After: Type of bank account. Common values: checking, saving.

bankAccountName (string)

  • Description updated:
  • Before: bank Account Name of User
  • After: Name on the user’s bank account.
  • Example updated: John Doe

bankAccountNumber (string)

  • Description updated:
  • Before: bank Account Number of User
  • After: Bank account number of the user.

bankName (string)

  • Description updated:
  • Before: bank Name of User
  • After: Name of the bank used for the transfer.
  • Example updated: Royal Bank

blockchainAddress (string)

  • Description updated:
  • Before: Blockchain Address
  • After: Blockchain wallet address of the user. Required if namespace is not provided.
  • Example updated: 0x8262f83b50e933677a89c854ba7dc64d3ae52001

namespace (string)

  • Description updated:
  • Before: Transfer method identity owner
  • After: Namespace of the user. Required if blockchainAddress is not provided.
  • Example updated: john.doe.ul

routingNumber (string)

  • Description updated:
  • Before: routingNumber
  • After: Bank routing number used to identify the bank branch.

type (string)

  • Description updated:
  • Before: Transfer method type
  • After: Transfer method type. Valid values: card or ach.
  • Example updated: ach

Updated Response Codes

400

- Bad request response if transfer methods fetching get failed

Returned when the payload is invalid or transfer creation fails.

Current Request Example

{
  "namespace": "john.doe.ul",
  "blockchainAddress": "0x8262f83b50e933677a89c854ba7dc64d3ae52001",
  "type": "ach",
  "bankName": "Royal Bank",
  "bankAccountName": "John Doe",
  "bankAccountNumber": "GB94BARC10201530093459",
  "routingNumber": "011401533",
  "accountType": "checking"
}

Response Examples

Code Description
400 Returned when the payload is invalid or transfer creation fails.

400 — Returned when the payload is invalid or transfer creation fails.

{
  "errors": "[\n  {\n    \"type\": \"catch\",\n    \"message\": \"API failed in execution\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"Please provide either namespace or blockchain address\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"Tenant Id is missing in Headers\"\n  },\n  {\n    \"type\": \"No data found\",\n    \"message\": \"Please provide valid namespace\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"Couldn't allow the transaction, customer doesn't belong to Tenant\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"isTenantAuthorized?.message\"\n  },\n  {\n    \"type\": \"No data found\",\n    \"message\": \"Please provide valid namespace\"\n  },\n  {\n    \"data\": [],\n    \"message\": \"No Transfer Method Available For : namespace\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"Couldn't allow the transaction, customer doesn't belong to Tenant\"\n  },\n  {\n    \"type\": \"Transfer Method\",\n    \"message\": \"isTenantAuthorized?.message\"\n  },\n  {\n    \"type\": \"No data found\",\n    \"message\": \"Please provide valid namespace\"\n  },\n  {\n    \"type\": \"catch\",\n    \"message\": \"Failed to fetch the transfer method\"\n  }\n]"
}

POST /tenant/business-user

Tag: Business User
Summary: Onboard a new business user

Registers a new business user under a tenant.

Used during the initial setup or provisioning of a business account by providing necessary business and contact details.

Updated Request Body Fields

bankVerificationNumber (string)

  • Description updated:
  • Before: bank verification Number of business user
  • After: Bank Verification Number of business user

customNamespace (string)

  • Description updated:
  • Before: custom namespace for business user
  • After: Custom namespace for business user

provider (string)

  • Description updated:
  • Before: custom namespace provider
  • After: Custom namespace provider

Updated Response Codes

201

- Created Response after business user onboard

Returns success when business user is onboarded

400

- Bad request response if business user onboarding get failed

Returned when onboarding fails due to validation issues or bad request data

Current Request Example

{
  "businessUserLegalName": "Jone Doe",
  "domain": "jonedoe",
  "accountAddress": "0x5179ba651a8ab0d2da5dc3e54ee6c8aa73272f5eac1",
  "businessUserName": "Jone Doe",
  "customNamespace": "jonedoebusiness",
  "provider": "ens",
  "businessUserAddress": {
    "address1": "Mr John Smith. 132, 40ft Street, Kingston",
    "city": "San Francisco",
    "state": "CA",
    "isoCountryCode": "US",
    "postalCode": "90213"
  },
  "businessEntityName": "Not Applicable",
  "incorporationDocs": {
    "documentType": "8",
    "fileName": "filename.png",
    "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
    "countryCode": "US"
  },
  "jurisdictionDocs": {
    "documentType": "8",
    "fileName": "filename.png",
    "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
    "countryCode": "US"
  },
  "otherDocs": [
    {
      "documentType": "8",
      "fileName": "filename.png",
      "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
      "countryCode": "US"
    }
  ],
  "entityBeneficialOwners": [
    {
      "ownershipPercentage": 20,
      "ownershipType": 1,
      "entityBeneficialOwners": [
        {}
      ],
      "individualBeneficialOwners": [
        {
          "ownershipPercentage": 20,
          "ownershipType": 1,
          "title": "<string>",
          "identification": {
            "documentType": "8",
            "fileName": "filename.png",
            "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
            "countryCode": "US"
          },
          "isControlPerson": "<boolean>",
          "otherDocs": {
            "documentType": "8",
            "fileName": "filename.png",
            "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
            "countryCode": "US"
          },
          "dob": "<string>",
          "email": "<string>",
          "firstName": "<string>",
          "lastName": "<string>",
          "phoneNumber": "9822222",
          "phoneType": "<string>",
          "taxIdNumber": "122-22-2332",
          "taxCountry": "US",
          "taxState": "California",
          "address": {
            "address1": "Lorem Ipsum is simply dummy text",
            "city": "Lorem",
            "state": "CA",
            "isoCountryCode": "US",
            "postalCode": "90213"
          },
          "bankVerificationNumber": "<string>",
          "proofOfAddress": {
            "documentType": "8",
            "fileName": "filename.png",
            "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
            "countryCode": "US"
          }
        }
      ],
      "controlPersons": [
        {
          "title": "supervisor",
          "identification": {
            "documentType": "8",
            "fileName": "filename.png",
            "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
            "countryCode": "US"
          },
          "documents": [
            {
              "documentType": "8",
              "fileName": "filename.png",
              "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
              "countryCode": "US"
            }
          ],
          "dateOfBirth": "2000-12-01",
          "emailAddress": "test@test.com",
          "firstName": "First name",
          "lastName": "Last name",
          "phoneNumber": "9100000000",
          "phoneNumberType": "0",
          "taxIdNumber": "122-22-2332",
          "address": {
            "address1": "Lorem Ipsum is simply dummy text",
            "city": "Lorem",
            "state": "CA",
            "isoCountryCode": "US",
            "postalCode": "90213"
          },
          "bvn": "bn01910190",
          "customAttributes": [
            {
              "name": "name",
              "value": "value"
            }
          ],
          "proofOfAddress": {
            "documentType": "8",
            "fileName": "filename.png",
            "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
            "countryCode": "US"
          }
        }
      ],
      "incorporationDocs": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "jurisdictionDocs": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "legalName": "<string>",
      "taxIdNumber": "12-3123123",
      "taxCountry": "US",
      "taxState": "California",
      "phoneNumber": "9800000",
      "address": {
        "address1": "Lorem Ipsum is simply dummy text",
        "city": "Lorem",
        "state": "CA",
        "isoCountryCode": "US",
        "postalCode": "90213"
      },
      "bvn": "<string>",
      "proofOfAddress": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      }
    }
  ],
  "individualBeneficialOwners": [
    {
      "ownershipPercentage": 20,
      "ownershipType": 1,
      "title": "<string>",
      "identification": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "isControlPerson": "<boolean>",
      "otherDocs": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "dob": "<string>",
      "email": "<string>",
      "firstName": "<string>",
      "lastName": "<string>",
      "phoneNumber": "9822222",
      "phoneType": "<string>",
      "taxIdNumber": "122-22-2332",
      "taxCountry": "US",
      "taxState": "California",
      "address": {
        "address1": "Lorem Ipsum is simply dummy text",
        "city": "Lorem",
        "state": "CA",
        "isoCountryCode": "US",
        "postalCode": "90213"
      },
      "bankVerificationNumber": "<string>",
      "proofOfAddress": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      }
    }
  ],
  "memoFields": {
    "name": "<string>",
    "value": "<string>"
  },
  "bankVerificationNumber": "bnk009198",
  "businessUserEmail": "lorem@mygmail.com",
  "taxIdNumber": "122-22-2332",
  "phoneNumber": "123456789",
  "controlPersons": {
    "title": "supervisor",
    "identification": {
      "documentType": "8",
      "fileName": "filename.png",
      "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
      "countryCode": "US"
    },
    "documents": [
      {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      }
    ],
    "dateOfBirth": "2000-12-01",
    "emailAddress": "test@test.com",
    "firstName": "First name",
    "lastName": "Last name",
    "phoneNumber": "9100000000",
    "phoneNumberType": "0",
    "taxIdNumber": "122-22-2332",
    "gender": "Male",
    "address": {
      "address1": "Mr John Smith. 132, 40ft Street, Kingston",
      "city": "San Francisco",
      "state": "CA",
      "isoCountryCode": "US",
      "postalCode": "90213"
    },
    "bvn": "bn01910199",
    "customAttributes": [
      {
        "name": "name",
        "value": "value"
      }
    ],
    "proofOfAddress": {
      "documentType": "8",
      "fileName": "filename.png",
      "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
      "countryCode": "US"
    },
    "tax": {
      "idNumber": "134567890",
      "country": "US",
      "state": "NY"
    }
  },
  "registeredOfficeAddress": {
    "address1": "Lorem Ipsum is simply dummy text",
    "address2": "Lorem Ipsum is simply dummy text",
    "city": "Lorem",
    "state": "CA",
    "isoCountryCode": "US",
    "postalCode": "90213"
  },
  "proofOfAddress": {
    "documentType": "8",
    "fileName": "filename.png",
    "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
    "countryCode": "US"
  },
  "signatories": [
    {
      "title": "supervisor",
      "identification": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "documents": [
        {
          "documentType": "8",
          "fileName": "filename.png",
          "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
          "countryCode": "US"
        }
      ],
      "dateOfBirth": "2000-12-01",
      "emailAddress": "test@test.com",
      "firstName": "First name",
      "lastName": "Last name",
      "phoneNumber": "9100000000",
      "phoneNumberType": "0",
      "taxIdNumber": "122-22-2332",
      "gender": "Male",
      "address": {
        "address1": "Mr John Smith. 132, 40ft Street, Kingston",
        "city": "San Francisco",
        "state": "CA",
        "isoCountryCode": "US",
        "postalCode": "90213"
      },
      "bvn": "bn01910199",
      "customAttributes": [
        {
          "name": "name",
          "value": "value"
        }
      ],
      "proofOfAddress": {
        "documentType": "8",
        "fileName": "filename.png",
        "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
        "countryCode": "US"
      },
      "tax": {
        "idNumber": "134567890",
        "country": "US",
        "state": "NY"
      }
    }
  ],
  "governingDocuments": [
    {
      "documentType": "8",
      "fileName": "filename.png",
      "content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
      "countryCode": "US"
    }
  ],
  "clientToken": "CLT",
  "badgeId": "2852ea54-b77d-4853-96bb-e9e484765b35"
}

Response Examples

Code Description
201 Returns success when business user is onboarded
400 Returned when onboarding fails due to validation issues or bad request data

201 — Returns success when business user is onboarded

{
  "data": {
    "domain": "jonedoe",
    "business_user_name": "jone doe",
    "business_user_metadata": {
      "email": "lorem@mygmail.com",
      "phone": "9540217306",
      "legal_name": "jone doe",
      "tax_id": "12345",
      "businessUserId": "57b99458-f481-4822-b8b3-516d6bd611ca",
      "businessUserMetadataId": "57b99458-f481-4822-b8b3-516d6bd611ca",
      "business_entity_name": "Not Applicable",
      "company_address": {
        "address1": "Mr John Smith. 132, 40ft Street, Kingston",
        "city": "San Francisco",
        "state": "CA",
        "isoCountryCode": "US",
        "postalCode": "90213"
      }
    },
    "is_active": true,
    "created_at": "2022-11-11T09:47:44.007Z",
    "start_date": "2022-11-11T09:47:44.007Z",
    "end_date": "2022-11-11T09:47:44.007Z",
    "tenant_id": "57b99458-f481-4822-b8b3-516d6bd611ca"
  },
  "message": "Tenant onboarded successfully"
}

400 — Returned when onboarding fails due to validation issues or bad request data

[
  {
    "type": [
      {
        "type": "Duplicate",
        "message": "Business domain already exists"
      },
      {
        "message": "Business user is already registered with provided email id",
        "type": "Duplicate"
      },
      {
        "message": "Business's control person is already registered with provided email id",
        "type": "Duplicate"
      },
      {
        "type": "onboard",
        "message": "error"
      },
      {
        "type": "onboard",
        "message": "Business name already exists"
      },
      {
        "type": "onboard",
        "message": "Not able to create account"
      },
      {
        "type": "onboard/Identity",
        "message": "publicMint.errors[0].message"
      },
      {
        "type": "onboard",
        "message": "Not able to onboard business"
      }
    ],
    "message": "some error message"
  }
]

POST /tenant/customer

Tag: Tenant Customers
Summary: Onboard tenant customer

Creates a new tenant customer record in the system.

Only the payload should be provided in the request body as per the defined schema.

Include the tenant-id in headers to identify the tenant if applicable. You may also include the api-key for authentication if required.

Use this API to:

  • Onboard new customers into a tenant environment
  • Initiate customer lifecycle events such as KYC, wallet setup, or onboarding workflows

Added Fields

None

Deprecated Fields

- passport                                 object

Updated Request Body Fields

dateOfBirth (string)

  • Description updated:
  • Before: tenant customer date of birth
  • After: tenant customer date of birth (YYYY-MM-DD)
  • Example updated: 1997-02-02

firstName (string)

  • Description updated:
  • Before: tenant customer first name
  • After: Tenant customer first name. Either "fullName" or both "firstName" and "lastName" must be provided.

fullName (string)

  • Description updated:
  • Before: tenant customer Full name
  • After: Tenant customer full name. Either "fullName" or both "firstName" and "lastName" must be provided.

gender (string)

  • Description updated:
  • Before: please give every letter in CAPS
  • After: Gender (In Upper Case)
  • Example updated: ['MALE', 'FEMALE', 'OTHERS', 'UNKNOWN']

ip_address (string)

  • Example updated: 127.0.0.1

lastName (string)

  • Description updated:
  • Before: tenant customer last name
  • After: Tenant customer last name. Required if "firstName" is provided and "fullName" is not.

ssn (string)

  • Description updated:
  • Before: ssn details
  • After: Social Security Number (SSN) of the customer.

ulNamespace (string)

  • Description updated:
  • Before: if a cutomster onboarded in tenant A and wants to onboard in tenant B, then ul namespace is required
  • After: if a customer onboarded in tenant A and wants to onboard in tenant B, then ul namespace is required

verifiedDOB (string)

  • Description updated:
  • Before: GID DOB
  • After: GID DOB (YYYY-MM-DD)

verifiedName (string)

  • Example updated: John Doe

Updated Response Codes

201

- Created response after tenant customer successfully onboard

Customer onboarding successful. Returns the onboarded customer details.

400

- Error response after tenant customer onboarding gets failed

Customer onboarding failed. Possible reasons include validation errors or duplicate customer.

Current Request Example

{
  "identificationBadgeId": "<string>",
  "firstName": "Jone",
  "middleName": "<string>",
  "lastName": "Doe",
  "fullName": "Jone Doe",
  "accountAddress": "<string>",
  "customerMetaData": {},
  "tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
  "customNamespace": "jonedoe",
  "provider": "ens",
  "ulNamespace": "digit.sam.ul",
  "maritalStatus": [
    "married",
    "unmarried"
  ],
  "dateOfBirth": "1997-02-02",
  "email": "lorem@mygmail.com",
  "gender": [
    "MALE",
    "FEMALE",
    "OTHERS",
    "UNKNOWN"
  ],
  "phoneNumber": "+91123456789",
  "nationality": "<string>",
  "ip_address": "127.0.0.1",
  "ssn": "<string>",
  "stateLicenseId": "<string>",
  "tin": "<string>",
  "address": {
    "city": "New York",
    "state": "KY",
    "address1": "123 Main St",
    "country": "US",
    "postalCode": "10001",
    "isoCountryCode": "US"
  },
  "lat_long": {
    "lat_long_data": "Lorem",
    "lat_long_country": "US",
    "lat_long_city": "address1 "
  },
  "tax": {
    "country": "BO",
    "idNumber": "122-22-2332",
    "state": "<string>"
  },
  "governmentDocuments": [
    {
      "description": "National ID card of the user",
      "fileName": "idCard.png",
      "side": "front",
      "type": "DriversLicense",
      "content": "<string>",
      "number": "123455",
      "issuedCountry": "India",
      "expired": false,
      "validFromDate": "2012-12-12",
      "validTillDate": "2030-12-12"
    }
  ],
  "proofOfAddress": [
    {
      "description": "Credit card statement for Sep 2024",
      "fileName": "cc1.png",
      "side": "front",
      "type": "Utility Bill",
      "content": "<string>",
      "number": "123455",
      "issuedCountry": "India",
      "expired": false,
      "validFromDate": "2022-01-01",
      "validTillDate": "2030-12-31"
    }
  ],
  "others": {
    "stateIdLicense": "KY-321456789",
    "proofOfAddress": "UtilityBill-2024.pdf",
    "alienIdCard": "A123456789"
  },
  "selfieContent": "<string>",
  "metroLocationDetails": {
    "shortName": "San Francisco",
    "fullName": "San Francisco, California",
    "code": "USA-SFO"
  },
  "additionalLatLong": {
    "lat": "37.8888888",
    "long": "-122.1777777"
  },
  "additionalAddress": {
    "fullName": "United States of America",
    "nameISO3": "USA"
  },
  "geoLocationDetails": {
    "declaredAddress": "San Francisco",
    "phoneNumber": "+91-9876676556",
    "iPAddress": "127.0.0.1"
  },
  "metroAreaDetails": {
    "deviceData": "example",
    "declaredAddress": "San Francisco, California",
    "phoneNumber": "+91-987765566",
    "iPAddress": "127.0.0.1"
  },
  "countryDetails": {
    "deviceData": "example",
    "declaredAddress": "San Francisco, California",
    "phoneNumber": "+91-9876665654",
    "iPAddress": "127.0.0.1"
  },
  "verifiedName": "John Doe",
  "verifiedDOB": "2012-12-12",
  "verifiedPhoto": "string",
  "verifiedIDNumber": "string",
  "verifiedCountry": "string",
  "verifiedState": "string",
  "verifiedIDIssueDate": "2012-12-12",
  "verifiedIDExpirationDate": "2012-12-12",
  "verifiedAddress": {
    "fullAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
  },
  "verifiedGender": "string",
  "bankAccountDetails": {
    "bankLegalName": "US Bank",
    "bankAccountHolderName": "John Doe",
    "bankAccountType": "Savings",
    "bankAccountNumber": "Ul22440412",
    "bankAccountHolderPhoneNumber": "+917347634906",
    "bankAccountHolderEmail": "unknown@gmail.com",
    "bankAccountHolderAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
  },
  "plaidDetails": {
    "plaidToken": "token",
    "plaidConsentTimestamp": "2024-09-25 10:51:39.178821+00"
  },
  "occupation": "RETIRED",
  "annualSalary": "1000000",
  "accountPurpose": "Trading",
  "expectedMonthlyVolume": "10000"
}

Response Examples

Code Description
201 Customer onboarding successful. Returns the onboarded customer details.
400 Customer onboarding failed. Possible reasons include validation errors or duplicate customer.

201 — Customer onboarding successful. Returns the onboarded customer details.

{
  "data": {
    "firstName": "Jone",
    "middleName": "<string>",
    "lastName": "Doe",
    "accountAddress": "<string>",
    "tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
    "dateOfBirth": "02-02-1997",
    "email": "lorem@mygmail.com",
    "gender": "<string>",
    "phoneNumber": "123455656789",
    "address": {
      "city": "New York",
      "state": "KY",
      "address1": "123 Main St",
      "country": "US",
      "postalCode": "10001",
      "isoCountryCode": "US"
    },
    "tax": {
      "country": "BO",
      "idNumber": "122-22-2332",
      "state": "<string>"
    },
    "documents": [
      {
        "description": "National ID card of the user",
        "fileName": "idCard.png",
        "side": "front",
        "type": "DriversLicense",
        "content": "<string>",
        "number": "123455",
        "issuedCountry": "India",
        "expired": false,
        "validFromDate": "2012-12-12",
        "validTillDate": "2030-12-12"
      }
    ],
    "faceImage": "<string>",
    "complianceStatus": "PENDING",
    "customerAccountId": "11167c62-b6b4-4031-ac92-6ef56e9648bd",
    "customerAccountCategory": "Bronzeone",
    "assignedIdentificationBadge": "11167c62-b6b4-4031-ac92-6ef56e9648bd",
    "domainNamespace": "allahabad.amitp.ul"
  },
  "message": "User has successfully onboarded with the badge Bronzeone [8d16684e-ee0a-4c10-83c0-c4d89e6a8666]."
}

400 — Customer onboarding failed. Possible reasons include validation errors or duplicate customer.

{
  "errors": [
    {
      "type": "catch",
      "message": "Please provide valid tenant id"
    },
    {
      "type": "Onboard Customer",
      "message": "Please provide a valid ISO 3166-1 alpha-2 country and state code"
    },
    {
      "type": "Onboard Customer",
      "message": "This custom namespace is already taken"
    },
    {
      "type": "Duplicate",
      "message": "Account address already taken"
    },
    {
      "type": "Tenant",
      "message": "Tenant's account has been blocked. You will be not able to onboard any user. Please get in touch with support team"
    },
    {
      "type": "Duplicate",
      "message": "No data found with given tenant Id"
    },
    {
      "type": "Tenant",
      "message": "Tenant onboarding status is isTenantAvailableCheck?.onboardingStatus"
    },
    {
      "type": "onboard",
      "message": "A user is already been registered with provided email id"
    },
    {
      "type": "onboard",
      "message": "Wallet user already exists inside tenant"
    },
    {
      "message": "There are no sufficient documents",
      "type": "Documents"
    },
    {
      "message": "A user is already been registered with provided email id",
      "type": "Duplicate"
    },
    {
      "type": "Finclusive",
      "message": "messages"
    },
    {
      "type": "catch",
      "message": "err[1]"
    },
    {
      "type": "catch",
      "message": "error.message"
    },
    {
      "type": "Identity",
      "message": "error in deleting identity"
    },
    {
      "type": "Rule Error",
      "errors": "axiosResponse.errors"
    },
    {
      "type": "Duplicate",
      "message": "Blockchain address already exists on the platform, onboarding not permitted.",
      "error_code": "ULOT0043"
    },
    {
      "type": "Duplicate",
      "message": "UNS ID (Custom namespace) already exists on the platform, onboarding not permitted.",
      "error_code": "ULOT0044"
    },
    {
      "type": "Duplicate",
      "message": "Customer has already been onboarded based on unique identification parameters.",
      "error_code": "ULOT0045"
    },
    {
      "type": "Customer",
      "message": "Missing [first name and last name or full name] Unique Identification parameters in the onboarding request.",
      "error_code": "ULOT0046"
    },
    {
      "type": "Customer",
      "message": "Unable to allocate badge to wallet user for onboarding request.",
      "error_code": "ULOT0047",
      "denial_code": "l07",
      "denial_reason": "Invalid email address"
    }
  ]
}

POST /tenant/customer/add-wallet

Tag: Tenant Customers
Summary: Add wallet to a wallet user

This endpoint allows adding a wallet to an existing wallet user in the system. It accepts user and wallet-related details in the request body, processes the data, and creates a new wallet entry mapped to the user.

Key operations performed:

  • Handles success and failure responses accordingly.

Typical use cases include:

  • Creating a new wallet during user onboarding.
  • Linking additional wallets to an existing user profile.

Added Fields

+ tenantId                                 string  # tenant id in which wallet user is onboard

Deprecated Fields

- businessUserId                           string  # business user Id ot assign the wallet level

Updated Response Codes

201

- Success Response when wallet is added successfully

Wallet added successfully. Returns wallet ID and metadata.

400

- Error response for all possible cases when adding wallet api gets failed.

Wallet addition failed. Possible reasons include invalid user ID, duplicate wallet, or missing fields.

Current Request Example

{
  "customerAccountId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
  "tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
  "customNamespace": "jonedoe",
  "provider": "ens",
  "accountAddress": "walletUserAccountAddress",
  "financialBadgeId": "d573926e-358f-482d-8375-6842477ce736",
  "tokenSymbol": "USBC"
}

Response Examples

Code Description
201 Wallet added successfully. Returns wallet ID and metadata.
400 Wallet addition failed. Possible reasons include invalid user ID, duplicate wallet, or missing fields.

201 — Wallet added successfully. Returns wallet ID and metadata.

{
  "data": {
    "customerAccountId": "1a310d45-0f5f-4f44-bc1d-6ddfd9547787e",
    "namespace": "tenantDomain.sheetalku1.ul"
  },
  "message": "wallet added successfully"
}

400 — Wallet addition failed. Possible reasons include invalid user ID, duplicate wallet, or missing fields.

{
  "errors": [
    {
      "type": "Add Wallet ",
      "message": "Multi wallet feature has been disabled by tenant name"
    },
    {
      "type": "Add Wallet",
      "message": "Not able to fetch basic details of wallet user"
    },
    {
      "type": "Add Wallet",
      "message": "Wallet user details not found"
    },
    {
      "type": "Add Wallet",
      "message": "Please use unique account address"
    },
    {
      "type": "Add Wallet",
      "message": "Custom namespace is already taken"
    },
    {
      "type": "Add Wallet",
      "message": "Something went wrong, please try again"
    }
  ]
}

POST /tenant/customer/get-auth-url

Tag: Verification APIs
Summary: Get VFP (Verification Fingerprint)

Retrieves a VFP (Verification Fingerprint) authentication URL using the provided payload. This URL is typically used to initiate identity verification through third-party services.

Only the request body should include required identifiers as per the payload schema.

Include the access-token in headers to authorize the request. This is a mandatory field.

Use this API to:

  • Initiate identity verification
  • Generate a time-bound, signed VFP link for external verification flows

Updated Request Body Fields

dob (string)

  • Description updated:
  • Before: DOB
  • After: Date of Birth in DD-MM-YYYY format

finalTargetUrl (string)

  • Description updated:
  • Before: Final Target Url
  • After: The final redirection URL after authentication

Current Request Example

{
  "sourceIp": "127.0.0.1",
  "finalTargetUrl": "https://google.com",
  "mobileNumber": "2001001686",
  "dob": "01-01-1994",
  "ssn": "1232"
}

Response Examples

Code Description
202 Success response
400 Error response

202 — Success response

{
  "data": {
    "requestId": "7f83-b0c4-90e0-90b3-11e10800200c9a66",
    "status": "0",
    "description": "Success"
  },
  "message": "Success"
}

400 — Error response

{
  "errors": [
    {
      "message": "Get auth URL request got failed",
      "type": "Prove"
    },
    {
      "type": "Prove",
      "message": "Either dob or ssn required and should be valid."
    },
    {
      "type": "Prove",
      "message": "SMS request got failed"
    },
    {
      "type": "Prove",
      "message": "Get auth URL request got failed"
    }
  ]
}

POST /tenant/customer/update

Tag: Tenant Customers
Summary: Update tenant customer

Retrieves customer details from the request body and upgrades the wallet user profile, typically based on account tier, eligibility, or other tenant-specific criteria.

Only the request body should contain the customerAccountId and other upgradable fields as defined in the payload schema.

Include the tenant-id in headers to identify the tenant. You may also include the api-key or other headers if required for authentication.

Added Fields

None

Deprecated Fields

- reRunComplianceCheck                     boolean  # Re - Run Compliance Check

Updated Response Codes

202

- Success response

Upgrade processed successfully. Returns the updated customer profile.

400

- Error response

Upgrade failed due to invalid inputs or fields.

Current Request Example

{
  "identificationBadgeId": "<string>",
  "customerAccountId": "cbf2f17a-d0d1-42da-a6cc-cb28f99484ea",
  "firstName": "Jone",
  "middleName": "<string>",
  "lastName": "Doe",
  "fullName": "Jone Doe",
  "address": {
    "city": "Lorem",
    "state": "KY",
    "address1": "address1 ",
    "country": "BO",
    "postalCode": "Lorem",
    "isoCountryCode": "US"
  },
  "additionalAddress": {
    "fullName": "United States of America",
    "nameISO3": "USA"
  },
  "maritalStatus": [
    "married",
    "unmarried"
  ],
  "email": "lorem@mygmail.com",
  "gender": "unknown",
  "phoneNumber": "+91123456789",
  "nationality": "<string>",
  "ip_address": "<string>",
  "ssn": "<string>",
  "lat_long": {
    "lat_long_data": "Lorem",
    "lat_long_country": "US",
    "lat_long_city": "address1 "
  },
  "selfieContent": "<string>",
  "additionalLatLong": {
    "lat": "37.8888888",
    "long": "-122.1777777"
  },
  "metroLocationDetails": {
    "shortName": "San Francisco",
    "fullName": "San Francisco, California",
    "code": "USA-SFO"
  },
  "geoLocationDetails": {
    "declaredAddress": "San Francisco",
    "phoneNumber": "+91-9876676556",
    "iPAddress": "127.0.0.1"
  },
  "metroAreaDetails": {
    "deviceData": "example",
    "declaredAddress": "San Francisco, California",
    "phoneNumber": "+91-987765566",
    "iPAddress": "127.0.0.1"
  },
  "countryDetails": {
    "deviceData": "example",
    "declaredAddress": "San Francisco, California",
    "phoneNumber": "+91-9876665654",
    "iPAddress": "127.0.0.1"
  },
  "tax": {
    "country": "BO",
    "idNumber": "134567890",
    "state": "US"
  },
  "tin": "string",
  "stateLicenseId": "<string>",
  "governmentDocuments": {
    "description": "National ID card of the user",
    "fileName": "idCard.png",
    "side": "front",
    "type": "DriversLicense",
    "content": "<string>",
    "number": "123455",
    "issuedCountry": "India",
    "expired": false,
    "validFromDate": "2012-12-12",
    "validTillDate": "2030-12-12"
  },
  "proofOfAddress": [
    {
      "description": "Credit card statement for Sep 2024",
      "fileName": "cc1.png",
      "side": "front",
      "type": "Utility Bill",
      "content": "<string>",
      "number": "123455",
      "issuedCountry": "India",
      "expired": false,
      "validFromDate": "2022-01-01",
      "validTillDate": "2030-12-31"
    }
  ],
  "verifiedName": "string",
  "verifiedDOB": "2012-12-12",
  "verifiedPhoto": "string",
  "verifiedIDNumber": "string",
  "verifiedCountry": "string",
  "verifiedState": "string",
  "verifiedIDIssueDate": "2012-12-12",
  "verifiedIDExpirationDate": "2012-12-12",
  "verifiedAddress": {
    "fullAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
  },
  "verifiedGender": "string",
  "bankAccount": "false",
  "bankAccountDetails": {
    "bankLegalName": "US Bank",
    "bankAccountHolderName": "John Doe",
    "bankAccountType": "Savings",
    "bankAccountNumber": "Ul22440412",
    "bankAccountHolderPhoneNumber": "+917347634906",
    "bankAccountHolderEmail": "unknown@gmail.com",
    "bankAccountHolderAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
  },
  "plaidDetails": {
    "plaidToken": "token",
    "plaidConsentTimestamp": "2024-09-25 10:51:39.178821+00"
  },
  "occupation": "RETIRED",
  "annualSalary": "1000000",
  "accountPurpose": "Trading",
  "expectedMonthlyVolume": "10000"
}

Response Examples

Code Description
202 Upgrade processed successfully. Returns the updated customer profile.
400 Upgrade failed due to invalid inputs or fields.

202 — Upgrade processed successfully. Returns the updated customer profile.

{
  "type": "Success",
  "assignedIdentificationBadge": "8d16684e-ee0a-4c10-83c0-c4d89e6a8666",
  "message": "User has successfully onboarded with the badge Bronzeone [8d16684e-ee0a-4c10-83c0-c4d89e6a8666]."
}

400 — Upgrade failed due to invalid inputs or fields.

{
  "errors": [
    {
      "type": "Customer",
      "message": "There is no account for the given customer Id"
    },
    {
      "type": "Upgrade",
      "message": "Customer cannot able to upgrade while ONBOARDING status is PENDING"
    },
    {
      "type": "Upgrade",
      "message": "Customer cannot able to upgrade while ONBOARDING status is REJECTED"
    },
    {
      "type": "Documents",
      "message": "There are no sufficient documents"
    },
    {
      "type": "Finclusive",
      "message": "messages"
    },
    {
      "type": "Rule failed",
      "message": "ruleCheck.errors"
    },
    {
      "type": "Upgrade customer",
      "message": "Customer is already upgraded to silver"
    },
    {
      "type": "catch",
      "message": "err[1]"
    },
    {
      "type": "catch",
      "message": "error"
    },
    {
      "type": "Customer",
      "message": "Failed to update badge for user request.",
      "error_code": "ULUP0001"
    },
    {
      "type": "Missing data",
      "message": "Customer already exists with provided unique identifier parameters"
    },
    {
      "type": "Upgrade",
      "message": "Compliance checks got failed"
    },
    {
      "type": "Missing data",
      "message": "Mandatory fields are missing"
    }
  ]
}

POST /tenant/customer/validate-user

Tag: Verification APIs
Summary: Validate user identity or wallet linkage

Validates a user using the provided identity payload. This could involve verifying KYC, linking identity to wallet, or other tenant-specific logic.

Headers Required:

  • access-token: JWT or Base64 encoded token used for authentication and validation

Request Body:

  • User identity fields such as mobile number, document ID, or user reference ID

Updated Response Codes

202

- Success Response

Success Response - Returns user validation status and metadata

400

- Error response

Error response - Returns validation errors or missing/invalid fields.

Current Request Example

{
  "vfp": "<string>",
  "requestId": "<string>"
}

Response Examples

Code Description
202 Success Response - Returns user validation status and metadata
400 Error response - Returns validation errors or missing/invalid fields.

202 — Success Response - Returns user validation status and metadata

{
  "data": {
    "firstName": "Tod",
    "lastName": "Weedall",
    "addresses": {
      "address": "39 South Trail",
      "extendedAddress": "string",
      "city": "San Antonio",
      "region": "TX",
      "postalCode": "78285"
    },
    "emailAddresses": [
      "tweedalld@ehow.com"
    ],
    "ssn": "565228370",
    "dob": "1984-12-10",
    "trustScore": 1000
  }
}

400 — Error response - Returns validation errors or missing/invalid fields.

{
  "errors": [
    {
      "type": "Catch",
      "message": [
        {
          "type": "catch",
          "message": "Shows the unknown errors while the API execution"
        },
        {
          "type": "Prove",
          "message": "Request Id not found"
        },
        {
          "errors": "tokenErrors"
        },
        {
          "type": "catch",
          "message": "err.message"
        },
        {
          "type": "catch",
          "message": "err.message"
        }
      ]
    }
  ]
}

POST /transaction/add-fund

Tag: Payment
Summary: Fetch Add-Fund URL for wallet user account

Generates a URL for securely adding funds to a wallet using a supported payment method (e.g., card, netbanking).

The request payload must include valid card details, amount, and user identifier (e.g., namespace).

Include the tenant-id in headers to identify the tenant. Use this API to:

  • Enable wallet top-ups via external payment gateways
  • Generate a transaction initiation link for the frontend

Updated Response Codes

201

- Success Response when url is fetched successfully

Returned when the payment URL is successfully generated.

400

- Error response for all possible cases when calling add fund  api gets failed.

Returned when the payload is invalid or the fund generation fails.

Current Request Example

{
  "amount": "<number>",
  "namespace": "test.jones1.ul",
  "successUrl": "https://console-dev.cab340b7670d495a8ed7.eastus.aksapp.io/payments/success",
  "failureUrl": "https://console-dev.cab340b7670d495a8ed7.eastus.aksapp.io/payments/failure",
  "cancelUrl": "https://console-dev.cab340b7670d495a8ed7.eastus.aksapp.io/payments/cancel",
  "ipAddress": "127.0.0.1",
  "token": "THAI"
}

Response Examples

Code Description
201 Returned when the payment URL is successfully generated.
400 Returned when the payload is invalid or the fund generation fails.

201 — Returned when the payment URL is successfully generated.

{
  "data": {
    "namespace": "blrwizards.sheetalstagk.ul",
    "url": "https://pay.sandbox.checkout.com/page/hpp_CizJqjrq23?_pcf"
  }
}

400 — Returned when the payload is invalid or the fund generation fails.

{
  "errors": [
    {
      "type": "Add Fund",
      "message": "please enter namespace of user"
    },
    {
      "type": "Add Fund ",
      "message": "no payment provider detail found"
    },
    {
      "type": "Add Fund",
      "message": "Something went wrong, please try again"
    }
  ]
}

POST /transaction/add-fund-ach

Tag: Payment
Summary: Initiate fund deposit via Cliq ACH

Triggers a fund deposit request into a user's wallet using Cliq ACH.

You can provide any one of the following identifiers to locate the user:

  • namespace
  • customNamespace
  • accountAddress

Only one should be passed per request. If multiple or none are sent, a 400 Bad Request is returned.

Include the tenant-id and api-key in headers for authentication.

Use this API to:

  • Initiate wallet funding via bank transfer (ACH)
  • Power workflows that require adding funds to a user's wallet

Updated Query Parameters

accountAddress (string)

  • Description added: Blockchain wallet address of the user

customNamespace (string)

  • Description added: Alternate custom namespace if standard one is not used

namespace (string)

  • Description added: Standard user namespace (e.g. from federated ID)

Updated Response Codes

201

- Success Response when request initiated successfully

Returned when the ACH fund deposit request is successfully initiated.

400

- Error response for all possible cases when calling add-fund-ach  API gets fail.

Returned when the request fails due to invalid input or processing issues.

Current Request Example

{
  "transactionAmount": 1,
  "token": "USBC",
  "customerBankAccountType": "checking",
  "customerBankAccountNumber": "1",
  "customerBankRoutingNumber": "102000076",
  "ipAddress": "127.0.0.1"
}

Response Examples

Code Description
201 Returned when the ACH fund deposit request is successfully initiated.
400 Returned when the request fails due to invalid input or processing issues.

201 — Returned when the ACH fund deposit request is successfully initiated.

{
  "data": {
    "namespace": "produled.qamark.ul",
    "transactionId": "49dad5f9-173d-4e63-a08f-f3a62eb905c4",
    "amount": 1,
    "cardTransactionHistory": {
      "card_transaction_id": "49dad5f9-173d-4e63-a08f-f3a62eb905c4",
      "status": "APPROVED",
      "description": "card transaction status is approved",
      "created_at": "2023-07-20T07:29:55.453Z",
      "cardTransactionHistoryId": "f5ae6c1f-cbfc-41f5-af83-33a898255e57"
    }
  }
}

400 — Returned when the request fails due to invalid input or processing issues.

{
  "errors": [
    {
      "error_code": "ULDT2005",
      "type": "deposit-tier2-failed",
      "message": "Maximum allowed number of deposit transactions per month for a user per wallet criteria not met"
    }
  ]
}

POST /transaction/confirmation-requests

Tag: Payment
Summary: Submit a confirmation request for a deposit

This endpoint allows an authenticated user to confirm a previously submitted deposit request. A successful confirmation updates the status of the deposit and triggers further actions required for minting tokens. The request payload must include the required confirmation details.

Updated Response Codes

201

- Success Response when confirmation request is submitted successfully

Confirmation request was successfully submitted. The response includes details of the confirmed deposit transaction.

400

- Error response for all possible cases when api gets failed.

The confirmation request could not be processed. Possible reasons include invalid payload, missing or incorrect parameters, or a failed validation. The response contains error details.

Current Request Example

{
  "depositRequestId": "5822e56e-1909-426f-a4be-1d49b15c781c",
  "amount": 5,
  "token": "<string>",
  "walletIdentifier": "testbronze01 or 0xB47deb51aEEf5C1732E09CBF20adF4C0e8F22947",
  "walletIdentifierType": "CUSTOM NAMESPACE or WALLET ADDRESS",
  "confirm": "YES or NO"
}

Response Examples

Code Description
201 Confirmation request was successfully submitted. The response includes details of the confirmed deposit transaction.
400 The confirmation request could not be processed. Possible reasons include invalid payload, missing or incorrect parameters, or a failed validation. The response contains error details.

201 — Confirmation request was successfully submitted. The response includes details of the confirmed deposit transaction.

{
  "data": {
    "requestId": "facc46b7-9988-482c-bf42-7a2cf8f97f72",
    "tenantId": "4e6cb408-8a22-4edc-ba0f-e0f8071efc64",
    "amount": 35,
    "token": "THIS",
    "rejectionReason": "",
    "statusStage": "FINAL",
    "status": "COMPLETED",
    "data": {
      "namespace": "digit.thirusilver11s.ul",
      "transactionId": "2bfd5f84-5ea1-4a05-b7f6-a3ebb104b9ff",
      "amount": 35,
      "paymentStatus": "APPROVED",
      "tokenMintStatus": "PENDING",
      "cardTransactionHistory": [
        {
          "transactionHistoryId": "11bc5cd3-e515-4f8d-ba63-d1982d3ff946",
          "status": "APPROVED",
          "description": "token minting status is approved",
          "createdAt": "2023-12-21T11:31:20.614Z"
        },
        {
          "transactionHistoryId": "373e2f59-a41a-463a-8750-0e3c7e96116b",
          "status": "DEPOSIT-REQUEST-SUCCESS",
          "description": "transaction status is deposit-request-success",
          "createdAt": "2023-12-21T11:31:22.469Z"
        }
      ]
    }
  },
  "message": "Confirmation request submitted successfully"
}

400 — The confirmation request could not be processed. Possible reasons include invalid payload, missing or incorrect parameters, or a failed validation. The response contains error details.

{
  "errors": [
    {
      "type": "catch",
      "message": "error message"
    },
    {
      "type": "catch",
      "message": "Successfully Invalidated Confirmation Request. No further action possible for the same request."
    },
    {
      "type": "catch",
      "message": "Initiation of deposit request got failed"
    }
  ]
}

POST /transaction/deposit-requests

Tag: Payment
Summary: Submit a deposit request to mint tokens

This endpoint allows an authenticated user to initiate a deposit request. The request payload must include all required deposit details. If the request is valid, the system will register the deposit request for further processing and token minting.

Updated Response Codes

201

- Success Response when request is submitted successfully

Deposit request was successfully submitted. The response contains confirmation details of the submitted request.

400

- Error response for all possible cases when api gets failed.

The deposit request could not be processed. Possible reasons include invalid payload, missing parameters, or a failed validation. The response includes error details.

Current Request Example

{
  "amount": 5,
  "token": "THIS",
  "walletIdentifier": "testbronze01 or 0xB47deb51aEEf5C1732E09CBF20adF4C0e8F22947",
  "walletIdentifierType": "CUSTOM NAMESPACE or WALLET ADDRESS"
}

Response Examples

Code Description
201 Deposit request was successfully submitted. The response contains confirmation details of the submitted request.
400 The deposit request could not be processed. Possible reasons include invalid payload, missing parameters, or a failed validation. The response includes error details.

201 — Deposit request was successfully submitted. The response contains confirmation details of the submitted request.

{
  "data": {
    "amount": "25",
    "token": "THIS",
    "walletIdentifier": "digit_testsiveruserdigitte1_ul",
    "walletIdentifierType": "CUSTOM NAMESPACE",
    "tenantId": "4e6cb408-8a22-4edc-ba0f-e0f8071efc64",
    "rejectionReason": "Deposit not allowed",
    "statusStage": "FINAL",
    "status": "Rejected request due to validation failures",
    "created_at": "2023-12-09T10:26:47.748Z",
    "depositRequestId": "5822e56e-1909-426f-a4be-1d49b15c781c"
  },
  "message": "Deposit request submitted successfully"
}

400 — The deposit request could not be processed. Possible reasons include invalid payload, missing parameters, or a failed validation. The response includes error details.

{
  "errors": [
    {
      "type": "catch",
      "message": "error message"
    },
    {
      "type": "catch",
      "message": "Initiation of deposit request got failed"
    }
  ]
}

POST /transaction/exchange-plaid-token

Tag: Payment
Summary: Exchange Plaid public token for access credentials

Converts a Plaid public token into a permanent access token used to interact with linked bank accounts.

Include the tenant-id and api-key headers to authorize and scope the request.

Use this API to:

  • Complete the Plaid authentication flow
  • Fetch access token and item ID for a user account

Updated Request Body Fields

publicToken (string)

  • Description updated:
  • Before: userId
  • After: Temporary public token received from Plaid Link, to be exchanged for an access token.
  • Example updated: public-sandbox-abc123xyz456

Updated Response Codes

201

- Success response when link token created successfully

Returned when the token exchange is successful.

400

- Error response when create link token api gets failed.

Returned when the public token is invalid or the exchange fails.

Current Request Example

{
  "publicToken": "public-sandbox-abc123xyz456"
}

Response Examples

Code Description
201 Returned when the token exchange is successful.
400 Returned when the public token is invalid or the exchange fails.

POST /transaction/expire-session

Tag: Payment
Summary: Expire a payment session

Marks a payment session as expired, typically used when the user abandons or cancels a payment flow.

Include the tenant-id in headers to identify the tenant.

Use this API to:

  • Invalidate an active or pending payment session
  • Cancel unused sessions to avoid unintended charges or timeout errors

Updated Request Body Fields

transactionId (string)

  • Description updated:
  • Before: transaction id of the transaction for which session you want to expire
  • After: Transaction ID of the session you want to expire
  • Example updated: 3fa85f64-5717-4562-b3fc-2c963f66afa6

Updated Response Codes

201

- Success Response when session expired successfully

Returned when the session is successfully marked as expired.

400

- Error response for all possible cases when calling session expired gets failed.

Returned when the session cannot be expired due to:

  • Invalid or missing session ID
  • Session already completed or expired
  • Tenant header not found

Current Request Example

{
  "transactionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Response Examples

Code Description
201 Returned when the session is successfully marked as expired.
400 Returned when the session cannot be expired due to:

201 — Returned when the session is successfully marked as expired.

{
  "data": {
    "status": "expired"
  }
}

400 — Returned when the session cannot be expired due to:

  • Invalid or missing session ID
  • Session already completed or expired
  • Tenant header not found
{
  "errors": [
    {
      "type": "Add Fund",
      "message": "please enter namespace of user"
    },
    {
      "type": "Add Fund ",
      "message": "no payment provider detail found"
    },
    {
      "type": "Add Fund",
      "message": "Something went wrong, please try again"
    }
  ]
}

POST /transaction/plaid-link-token

Tag: Payment
Summary: Create a Plaid link token for customer connection

Generates a Plaid link token to securely connect a customer's financial account.

Include the tenant-id and api-key in headers to scope and authorize the request.

Use this API to:

  • Start the Plaid authentication flow
  • Connect a user's bank account for ACH operations

Updated Request Body Fields

userId (string)

  • Description updated:
  • Before: userId
  • After: Unique identifier of the user for whom the Plaid link token is being generated.
  • Example updated: c6a8a1b5-9d0e-4bd6-a7e2-91d2e2365a9f

Updated Response Codes

201

- Success response when link token created successfully

Returned when a link token is created successfully.

400

- Error response when create link token api gets failed.

Returned when the request fails due to missing user ID or configuration issues.

Current Request Example

{
  "userId": "c6a8a1b5-9d0e-4bd6-a7e2-91d2e2365a9f"
}

Response Examples

Code Description
201 Returned when a link token is created successfully.
400 Returned when the request fails due to missing user ID or configuration issues.

PUT /transaction/redeem/fiat-transfer/{transactionHash}

Tag: Redeem
Summary: Update redeem fiat transfer details

Updates fiat transaction metadata related to a redeem transaction identified by its transactionHash.

Include the tenant-id and api-key in headers for authentication.

Use this API to:

  • Update fiat settlement details after redeem
  • Ensure traceability for off-chain money movement

Updated Response Codes

200

- Success Response

Returned when the fiat transaction is successfully updated.

400

- Error response

Returned when the update fails due to invalid input or missing headers.

Current Request Example

{
  "referenceId": "12345_abcd",
  "fiatAmount": "<number>",
  "tokenSymbol": "USBC",
  "fiatSymbol": "USD",
  "type": "BANK-BOOK"
}

Response Examples

Code Description
200 Returned when the fiat transaction is successfully updated.
400 Returned when the update fails due to invalid input or missing headers.

200 — Returned when the fiat transaction is successfully updated.

{
  "data": {
    "transactionId": "5ea3eb51-8a02-415d-bf74-add22ed74803",
    "referenceId": "5",
    "tokenSymbol": "USBC",
    "fiatSymbol": "USD",
    "fiatAmount": 5,
    "tokenAmount": 1,
    "type": "BANK-BOOK"
  },
  "message": "fiat transaction status updated successfully."
}

400 — Returned when the update fails due to invalid input or missing headers.

{
  "errors": [
    {
      "type": "redeem",
      "message": "please enter correct amount"
    },
    {
      "type": "redeem",
      "message": "token symbol is incorrect"
    },
    {
      "type": "redeem",
      "message": "Something went wrong, please try again"
    }
  ]
}

🚫 Deprecated Endpoints

Deprecated in this version

  • GET /transactions/v2/identifier/{identifier}/type/{type}/history — Get on-chain or off-chain transaction history (supports optional secondary identifier).