Partner API — v3.0.0
Type: Major Release · Previous version: v2.9.0
✅ New Endpoints
GET /transactions/v2/identifier/{identifier}/type/{type}/history
Tag: Chain
Summary: Get on-chain or off-chain transaction history (supports optional secondary identifier).
If secondaryIdentifier is provided, only transactions where BOTH identifiers appear (as sender/receiver in any order) are returned. Otherwise returns transactions where the primary identifier is sender OR receiver.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
secondaryIdentifier |
string | No | Optional second identifier(can be of namespace/address/custom namespace). When provided, results include only transactions where BOTH identifiers are involved (either order). |
startdate |
string | No | Filter by created_at date (inclusive start). Format: mm/dd/yyyy. |
enddate |
string | No | Filter by created_at date (exclusive next-day end). Format: mm/dd/yyyy. |
sort |
string | No | Sort by created_at. |
page |
string | No | 1-based page number. |
pageSize |
string | No | Number of items per page. |
memo |
string | No | Case-insensitive substring match on decrypted memo/notes. |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
identifier |
string | Yes | Any identifier: user namespace (e.g., "tenant.user.ul"), tenant namespace ("tenant.ul"), account address (EIP-55 or lowercase "0x..."), or custom namespace ("custom.domain"). |
type |
string | Yes | Transaction source. |
Response Codes
| Code | Description |
|---|---|
| 200 | Transaction history. Each transaction includes method and partnerName. |
| 400 | Validation or filter errors. |
200 — Transaction history. Each transaction includes method and partnerName.
{
"data": [
{
"trxId": "0xbc4d82e9d54f2a9bc7e4ef3eb075217078de5616ce756842c91a854680e7c055",
"amount": 1,
"paymentType": "DEBIT",
"from": "0xdddd5eacf20148ac39e4c3ed540ab419da835bce",
"to": "0x740768f5ba3757c76452fae11fbff696af8300bd",
"fromNamespace": "basecoinnarencorp.kaias.ul",
"toNamespace": "narendracorpbank.automationu.ul",
"fromCustomNamespace": "NA",
"toCustomNamespace": "NA",
"status": "CANCELLED",
"timestamp": 1755372999,
"createdAt": "2025-08-16T19:36:39.5650000+00:00",
"errors": [
{
"type": "transfer-failed",
"message": "Stored value per month criteria not met",
"error_code": "ULTT0010"
}
],
"isError": 1,
"revertReason": "Stored value per month criteria not met",
"navigationURL": "https://explorer.dev.omnumi.io/tx/0xbc4d82e9d54f2a9bc7e4ef3eb075217078de5616ce756842c91a854680e7c055/internal-transactions",
"memo": "NA",
"partnerName": null,
"method": null
}
]
}
400 — Validation or filter errors.
{
"errors": [
{
"type": "TransactionError",
"message": "No address found for namespace john.ul"
},
{
"type": "TransactionError",
"message": "Identifier doesn't belong to tenant_id"
},
{
"type": "FilterError",
"message": "Start date cannot be greater than the End date"
},
{
"type": "FilterError",
"message": "type can only be on-chain || off-chain"
},
{
"type": "FilterError",
"message": "Error in fetchOnChainTransactionHistory: <reason>"
},
{
"type": "FilterError",
"message": "Error in fetchOffChainTransactionHistory: <reason>"
}
]
}
✏️ Modified Endpoints
GET /consent/consent-status
Tag: Consent
Summary: check consent status
Added Query Params
| Parameter | Type | Description |
|---|---|---|
dssVendorId |
string | DSS Vendor Id e.g. abcd1234-5678-90ab-cdef-123456abcdef |
Deprecated Query Params
None
Updated Query Parameters
customerAccountId (string)
- Example updated:
abcd1234-5678-90ab-cdef-123456abcdef
Response Examples
| Code | Description |
|---|---|
| 200 | Check consent status |
| 400 | Error response when consent-status api gets failed. |
| 404 | will give you the error response when no consent is present for the customer |
200 — Check consent status
{
"data": {
"latestConsentVersion": "string"
},
"message": [
"Consent is accepted",
"Consent is not valid. Please accept the consent"
]
}
400 — Error response when consent-status api gets failed.
404 — will give you the error response when no consent is present for the customer
{
"errors": {
"type": "No data found",
"message": "No consent is available, please accept the consent"
}
}
POST /tenant/customer
Tag: Tenant Customers
Summary: Onboard tenant customer
Updated Request Body Fields
occupation (string)
- Description updated:
- Before: occupation
- After: *Occupation
Example occupation codes:
- STUDENT → Student
- RETIRED → Retired
- OTHERXX → Other
- UNEMPLO → Unemployed
- 15-1132 → Software Developers, Applications
- 15-1134 → Web Developers
- Example updated:* RETIRED
Current Request Example
{
"identificationBadgeId": "string",
"firstName": "Jone",
"middleName": "string",
"lastName": "Doe",
"fullName": "Jone Doe",
"accountAddress": "0xAbC1234567890abcdefABC1234567890abcdefAB",
"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": "unknown",
"phoneNumber": "+91123456789",
"nationality": "string",
"ip_address": "string",
"ssn": "string",
"stateLicenseId": "string",
"tin": "string",
"address": {
"city": "Lorem",
"state": "KY",
"address1": "address1 ",
"country": "BO",
"postalCode": "Lorem",
"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 user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"proofOfAddress": [
{
"description": "credit card statement for Sep2024",
"fileName": "cc1.png",
"side": "front",
"type": "front",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"passport": {
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
},
"others": {
"stateIdLicense": "321",
"proofOfAddress": "321",
"alienIdCard": "321"
},
"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": "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",
"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-25T10:51:39.1788210+00:00"
},
"occupation": "RETIRED",
"annualSalary": "1000000",
"accountPurpose": "Trading",
"expectedMonthlyVolume": "10000"
}
Response Examples
| Code | Description |
|---|---|
| 201 | Created response after tenant customer successfully onboard |
| 400 | Error response after tenant customer onboarding gets failed |
201 — Created response after tenant customer successfully onboard
{
"data": {
"firstName": "Jone",
"middleName": "string",
"lastName": "Doe",
"accountAddress": "string",
"tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"dateOfBirth": "1997-02-02",
"email": "lorem@mygmail.com",
"gender": "male",
"phoneNumber": "123455656789",
"address": {
"city": "Lorem",
"state": "KY",
"address1": "address1 ",
"country": "BO",
"postalCode": "Lorem",
"isoCountryCode": "US"
},
"tax": {
"country": "BO",
"idNumber": "122-22-2332",
"state": "string"
},
"documents": [
{
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"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 — Error response after tenant customer onboarding gets failed
{
"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 wallet user
Provide either CustomerAccountId of wallet user or BusinessUserId of business user.
Added Fields
Deprecated Fields
Current Request Example
{
"customerAccountId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"customNamespace": "jonedoe",
"provider": "ens",
"accountAddress": "walletUserAccountAddress",
"financialBadgeId": "d573926e-358f-482d-8375-6842477ce736",
"businessUserId": "d573926e-358f-482d-8375-6842477ce736",
"tokenSymbol": "USBC"
}
Response Examples
| Code | Description |
|---|---|
| 201 | Success Response when wallet is added successfully |
| 400 | Error response for all possible cases when adding wallet api gets failed. |
201 — Success Response when wallet is added successfully
{
"data": {
"customerAccountId": "1a310d45-0f5f-4f44-bc1d-6ddfd9547787e",
"namespace": "tenantDomain.sheetalku1.ul"
},
"message": "wallet added successfully"
}
400 — Error response for all possible cases when adding wallet api gets failed.
{
"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/update
Tag: Tenant Customers
Summary: API Version V2.0.0 | Update tenant customer | Modifier - Gurumoorthy
Added Fields
+ accountPurpose string # Account purpose
+ annualSalary string # Annual salary
+ expectedMonthlyVolume string # Expected monthly volume
+ occupation string # Occupation Example occupation codes: - STUDENT → Student - RETIRED → Retired - OTHERXX → Other - UNEMPLO → Unemployed - 15-1132 → Software Developers, Applications - 15-1134 → Web Developers
Deprecated Fields
None
Updated Request Body Fields
maritalStatus (string)
- Allowed values added:
married,unmarried - Allowed values removed:
MARRIED,UNMARRIED - Example updated:
['married', 'unmarried']
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 user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"proofOfAddress": [
{
"description": "credit card statement for Sep2024",
"fileName": "cc1.png",
"side": "front",
"type": "front",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"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",
"reRunComplianceCheck": true,
"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-25T10:51:39.1788210+00:00"
},
"occupation": "RETIRED",
"annualSalary": "1000000",
"accountPurpose": "Trading",
"expectedMonthlyVolume": "10000"
}
Response Examples
| Code | Description |
|---|---|
| 202 | Success response |
| 400 | Error response |
202 — Success response
{
"type": "Success",
"assignedIdentificationBadge": "8d16684e-ee0a-4c10-83c0-c4d89e6a8666",
"message": "User has successfully onboarded with the badge Bronzeone [8d16684e-ee0a-4c10-83c0-c4d89e6a8666]."
}
400 — Error response
{
"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"
}
]
}
PUT /tenant/customer/{customerId}
Tag: Tenant Customers
Summary: Update custom namespace of the customer
Added Fields
Deprecated Fields
None
Updated Request Body Fields
customNamespace (string)
- Example updated:
my_namespace
Added Response Codes
| Code | Description |
|---|---|
| 201 | Custom namespace is created successfully |
| 400 | Bad request error response if failed to update custom namespace |
Deprecated Response Codes
None
Updated Response Codes
200
Custom namespace is updated successfully
Current Request Example
{
"customNamespace": "my_namespace",
"walletAddress": "0xb9b8FF00d740ed1aa614d05dE11178dEB365E384"
}
Response Examples
| Code | Description |
|---|---|
| 200 | Custom namespace is updated successfully |
| 201 | Custom namespace is created successfully |
| 400 | Bad request error response if failed to update custom namespace |
200 — Custom namespace is updated successfully
{
"data": {
"customNamespace": "new_namespace"
},
"message": "Customer details updated successfully"
}
201 — Custom namespace is created successfully
{
"data": {
"custom_namespace": "example_namespace",
"namespace_id": "7a32a5f4-2db5-4a1f-9ef0-e42fb858d49c",
"created_at": "2025-09-10T09:56:17.0060000+00:00",
"namespaceMapperId": "f2781527-ae42-40c2-b174-56a3c720cd49"
},
"message": "Customer details updated successfully"
}
400 — Bad request error response if failed to update custom namespace
{
"errors": [
{
"type": "Invalid UUID",
"message": "UUID is not valid"
},
{
"type": "update",
"message": "There is no account for the given customer Id"
},
{
"type": "update",
"message": "Tenant address not found"
},
{
"type": "update",
"message": "No namespace details found to update custom namespace"
},
{
"type": "update",
"message": "Couldn't allow the transaction, customer doesn't belong to Tenant"
},
{
"type": "update",
"message": "This custom namespace is already taken"
},
{
"type": "catch",
"message": "Something went wrong."
}
]
}