{ "openapi": "3.0.0", "info": { "title": "Hifi API", "version": "2.0.0", "description": "API documentation for Hifi" }, "servers": [ { "url": "https://production.hifibridge.com", "description": "Production server" }, { "url": "https://sandbox.hifibridge.com", "description": "Sandbox server" } ], "tags": [ { "name": "Common", "description": "Common endpoints" }, { "name": "User", "description": "User endpoints" }, { "name": "Kyc", "description": "Kyc endpoints" }, { "name": "Wallet", "description": "Wallet endpoints" }, { "name": "Account", "description": "Account endpoints" }, { "name": "Virtual Account", "description": "Virtual Account endpoints" }, { "name": "Onramp", "description": "Onramp endpoints" }, { "name": "Offramp", "description": "Offramp endpoints" }, { "name": "Crypto Transfer", "description": "Crypto Transfer endpoints" }, { "name": "Cross-Chain Bridge", "description": "Cross-Chain Bridge endpoints" }, { "name": "Token Swap", "description": "Token Swap endpoints" }, { "name": "Transfer Rules", "description": "Transfer approval rules and configuration" }, { "name": "Transfer Approvals", "description": "Transfer approval workflow and admin actions" }, { "name": "File", "description": "File endpoints" }, { "name": "Reporting", "description": "Reporting and metrics endpoints" } ], "components": { "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } }, "parameters": { "AccountIdPathParameter": { "name": "accountId", "in": "path", "schema": { "type": "string" }, "description": "ID of the account", "required": true }, "CurrencyParameter": { "name": "currency", "in": "query", "schema": { "type": "string", "enum": [ "usd", "brl", "mxn", "ars", "cop", "kes", "zmw", "mwk", "tzs", "xaf", "xof", "ngn", "ugx", "bwp", "ghs" ] }, "description": "Please provide at least one of the following query params: currency, railType. Eg. Setting 'currency' to 'usd' without setting 'railType' and 'paymentRail' will return all usd accounts under any railType or paymentRail.", "required": false }, "VALimitParameter": { "name": "limit", "in": "query", "schema": { "type": "string", "minimum": 1, "maximum": 100 }, "description": "Number of micro deposit records return for the virtual account, default to 10 maximum to 100", "required": false }, "VACreatedBeforeParameter": { "name": "createdBefore", "in": "query", "schema": { "type": "string" }, "description": "Return the micro deposit records that created before this eventId", "required": false }, "VACreatedAfterParameter": { "name": "createdAfter", "in": "query", "schema": { "type": "string" }, "description": "Return the micro deposit records that created after this eventId", "required": false }, "VASourceCurrencyParameter": { "name": "sourceCurrency", "in": "query", "schema": { "type": "string", "enum": [ "usd" ] }, "description": "Source currency", "required": false }, "VADestinationCurrencyParameter": { "name": "destinationCurrency", "in": "query", "schema": { "type": "string", "enum": [ "usdc", "usdt" ] }, "description": "Destination currency", "required": false }, "VADestinationChainParameter": { "name": "destinationChain", "in": "query", "schema": { "type": "string", "enum": [ "POLYGON" ] }, "description": "Destination chain", "required": false }, "AccountTypeOptionalParameter": { "name": "type", "in": "query", "schema": { "$ref": "#/components/schemas/AccountTypeEnum" }, "description": "account type", "required": false }, "VirtualAccountIdPathParameter": { "name": "accountId", "in": "path", "schema": { "type": "string" }, "description": "ID of the virtual account", "required": true }, "AccountRailOptionalParameter": { "name": "rail", "in": "query", "schema": { "type": "string", "enum": [ "onramp", "offramp" ] }, "description": "onramp or offramp", "required": false }, "CurrencyAnyOptionalParameter": { "name": "currency", "in": "query", "schema": { "type": "string" }, "required": false }, "RuleIdPathParameter": { "name": "ruleId", "in": "path", "schema": { "type": "string" }, "description": "ID of the settlement rule", "required": true }, "SettlementRuleCreatedBeforeParameter": { "name": "createdBefore", "in": "query", "schema": { "type": "string" }, "description": "Return the settlement rules that created before this date", "required": false }, "SettlementRuleCreatedAfterParameter": { "name": "createdAfter", "in": "query", "schema": { "type": "string" }, "description": "Return the settlement rules that created after this date", "required": false }, "SettlementRuleChainParameter": { "name": "chain", "in": "query", "schema": { "type": "string", "enum": [ "BASE", "POLYGON", "ETHEREUM", "SOLANA" ] }, "description": "Return the settlement rules that are created on this chain", "required": false }, "SettlementRuleLimitParameter": { "name": "limit", "in": "query", "schema": { "type": "string", "minimum": 1, "maximum": 100 }, "description": "Number of settlement rules to return, default to 10 maximum to 100", "required": false }, "LimitParameter": { "name": "limit", "in": "query", "schema": { "type": "string", "minimum": 1, "maximum": 100 }, "description": "default to 10, maximum to 100", "required": false }, "CreatedBeforeParameter": { "name": "createdBefore", "in": "query", "schema": { "type": "string", "format": "date" }, "description": "ISO format: YYYY-MM-DD", "required": false }, "CreatedAfterParameter": { "name": "createdAfter", "in": "query", "schema": { "type": "string", "format": "date" }, "description": "ISO format: YYYY-MM-DD", "required": false }, "MCAccountRecipientTypeParameter": { "name": "type", "in": "query", "schema": { "type": "string" }, "description": "type of recipient", "required": false }, "MCAccountRecipientIdParameter": { "name": "recipientId", "in": "query", "schema": { "type": "string" }, "description": "ID of the recipient", "required": false }, "MCAccountRecipientStatusParameter": { "name": "status", "in": "query", "schema": { "type": "string", "enum": [ "NOT_INITIATED", "PENDING", "AVAILABLE", "DECLINED" ] }, "description": "status of the recipient", "required": false }, "MCAccountTransferSourceCurrencyParameter": { "name": "sourceCurrency", "in": "query", "schema": { "type": "string" }, "description": "sourceCurrency of the transfer", "required": false }, "MCAccountTransferDestinationCurrencyParameter": { "name": "destinationCurrency", "in": "query", "schema": { "type": "string" }, "description": "destinationCurrency of the transfer", "required": false }, "MCAccountTransferStatusParameter": { "name": "status", "in": "query", "schema": { "type": "string", "enum": [ "NOT_INITIATED", "PENDING", "PROCESSING", "SUCCESS", "FAIL" ] }, "description": "status of the transfer", "required": false }, "MCAccountRecipientIdPathParameter": { "name": "recipientId", "in": "path", "schema": { "type": "string" }, "description": "ID of the recipient", "required": true }, "MCAccountTransferIdPathParameter": { "name": "transferId", "in": "path", "schema": { "type": "string" }, "description": "ID of the transfer", "required": true }, "ForexSourceCurrencyParameter": { "name": "sourceCurrency", "in": "query", "schema": { "type": "string" }, "description": "sourceCurrency of the currency exchange order", "required": false }, "ForexDestinationCurrencyParameter": { "name": "destinationCurrency", "in": "query", "schema": { "type": "string" }, "description": "destinationCurrency of the currency exchange order", "required": false }, "ForexStatusParameter": { "name": "status", "in": "query", "schema": { "type": "string", "enum": [ "NOT_INITIATED", "PENDING", "AVAILABLE", "DECLINED", "SUSPENDED", "CLOSING", "CLOSED" ] }, "description": "status of the currency exchange order", "required": false }, "ForexOrderIdPathParameter": { "name": "orderId", "in": "path", "schema": { "type": "string" }, "description": "ID of the currency exchange order", "required": true }, "RailsTypeOptionalParameter": { "name": "rails", "in": "query", "schema": { "$ref": "#/components/schemas/RailsEnum" }, "description": "The type of rail.", "required": false }, "RailsTypeParameter": { "name": "rails", "in": "query", "schema": { "$ref": "#/components/schemas/RailsEnum" }, "required": true }, "KycStatusOptionalParameter": { "name": "status", "in": "query", "schema": { "$ref": "#/components/schemas/KycStatusEnum" }, "required": false }, "KycStatusArrayOptionalParameter": { "name": "status", "in": "query", "schema": { "type": "array", "items": { "$ref": "#/components/schemas/KycStatusEnum" }, "minItems": 1 }, "description": "The statuses of the KYC.", "required": false }, "UboIdPathParameter": { "name": "uboId", "in": "path", "schema": { "type": "string" }, "description": "The ID of the Ultimate Beneficial Owner (UBO).", "required": true }, "DocumentIdPathParameter": { "name": "documentId", "in": "path", "schema": { "type": "string" }, "description": "The ID of the document.", "required": true }, "MCAccountIdParameter": { "name": "currencyAccountId", "in": "query", "schema": { "type": "string" }, "description": "ID of the currency account", "required": false }, "MCAccountCurrencyParameter": { "name": "currency", "in": "query", "schema": { "type": "string" }, "description": "currency", "required": false }, "MCAccountStatusParameter": { "name": "status", "in": "query", "schema": { "type": "string", "enum": [ "NOT_INITIATED", "PENDING", "AVAILABLE", "DECLINED", "SUSPENDED", "CLOSING", "CLOSED" ] }, "description": "account application status", "required": false }, "MCAccountBankLocationParameter": { "name": "bankLocation", "in": "query", "schema": { "type": "string" }, "description": "The three-letter alpha-3 country code of the bank location", "required": false }, "MCAccountDepositStatusParameter": { "name": "status", "in": "query", "schema": { "type": "string", "enum": [ "PENDING", "APPROVED", "CLOSED", "REJECTED", "CANCELED", "REFUNDED" ] }, "description": "status of the deposit", "required": false }, "MCAccountIdPathParameter": { "name": "currencyAccountId", "in": "path", "schema": { "type": "string" }, "description": "ID of the currency account", "required": true }, "MCAccountDepositPathParameter": { "name": "depositId", "in": "path", "schema": { "type": "string" }, "description": "ID of the deposit", "required": true }, "MCAccountStoreIdPathParameter": { "name": "storeId", "in": "path", "schema": { "type": "string" }, "description": "ID of the store", "required": true }, "OfframpRecordIDPathParameter": { "name": "transferId", "in": "path", "schema": { "type": "string" }, "description": "Transfer record ID.", "required": true }, "FromCryptoCurrencyParameter": { "name": "fromCurrency", "in": "query", "schema": { "type": "string", "enum": [ "usdc" ] }, "required": true }, "ToFiatCurrencyParameter": { "name": "toCurrency", "in": "query", "schema": { "type": "string", "enum": [ "usd", "brl", "mxn", "ugx", "ngn", "kes", "tzs", "mwk", "xaf", "bwp", "zar", "usd-hka", "usd-chn", "cny", "hkd", "sgd", "usd-sgp" ] }, "required": true }, "CryptoTransferRecordIDPathParameter": { "name": "transferId", "in": "path", "schema": { "type": "string" }, "description": "Transfer record ID.", "required": true }, "BridgingRequestIDPathParameter": { "name": "transferId", "in": "path", "schema": { "type": "string" }, "description": "Transfer record ID.", "required": true }, "BatchCryptoTransferRecordIDPathParameter": { "name": "transferId", "in": "path", "schema": { "type": "string" }, "description": "Transfer record ID.", "required": true }, "SwapTransferIDPathParameter": { "name": "swapId", "in": "path", "schema": { "type": "string" }, "description": "Swap transfer record ID.", "required": true }, "OnrampRecordIDPathParameter": { "name": "transferId", "in": "path", "schema": { "type": "string" }, "description": "Transfer record ID.", "required": true }, "FromFiatCurrencyParameter": { "name": "fromCurrency", "in": "query", "schema": { "type": "string", "enum": [ "usd", "ugx", "ngn", "bwp", "tzs", "mwk", "xaf", "kes" ] }, "required": true }, "ToCryptoCurrencyParameter": { "name": "toCurrency", "in": "query", "schema": { "type": "string", "enum": [ "usdc" ] }, "required": true }, "FromCurrencyParameter": { "name": "fromCurrency", "in": "query", "schema": { "type": "string", "enum": [ "usdc" ] }, "required": true }, "ToCurrencyParameter": { "name": "toCurrency", "in": "query", "schema": { "type": "string", "enum": [ "usd", "eur", "brl", "mxn", "ars", "cop" ] }, "required": true }, "ToCurrencyConversionParameter": { "name": "toCurrency", "in": "query", "schema": { "type": "string", "enum": [ "usd", "eur", "brl", "mxn", "ars", "cop", "ugx", "ngn", "kes", "xof", "rwf", "tzs", "zmw", "mwk", "xaf" ] }, "required": true }, "TransferRecordIDPathParameter": { "name": "transferId", "in": "path", "schema": { "type": "string" }, "description": "Transfer record ID.", "required": true }, "UserIdOptionalParameter": { "name": "userId", "in": "query", "schema": { "type": "string" }, "description": "The user ID.", "required": false }, "UserTypeV2Parameter": { "name": "type", "in": "query", "schema": { "type": "string", "enum": [ "individual", "business" ] }, "description": "If passed, you will get all users under the type.", "required": false }, "UserFirstNameParameter": { "name": "firstName", "in": "query", "schema": { "type": "string" }, "description": "If passed, you will get all users with the case-insensitive partial match of `firstName`.\n", "required": false }, "UserLastNameParameter": { "name": "lastName", "in": "query", "schema": { "type": "string" }, "description": "If passed, you will get all users with the case-insensitive partial match of `lastName`.\n", "required": false }, "UserNameParameter": { "name": "userName", "in": "query", "schema": { "type": "string" }, "required": false }, "UserBusinessNameParameter": { "name": "businessName", "in": "query", "schema": { "type": "string" }, "description": "If passed, you will get all users with the case-insensitive partial match of `businessName`.\n", "required": false }, "UserEmailParameter": { "name": "email", "in": "query", "schema": { "type": "string" }, "description": "If passed, you will get all users with the case-insensitive partial match of `email`.\n", "required": false }, "UserEmailV2Parameter": { "name": "userEmail", "in": "query", "schema": { "type": "string" }, "required": false }, "ChainParameter": { "name": "chain", "in": "query", "schema": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA", "BASE" ] }, "description": "The blockchain network to retrieve the wallet balance from.", "required": true }, "CryptoCurrencyParameter": { "name": "currency", "in": "query", "schema": { "type": "string", "enum": [ "usdc", "usdt", "usdHifi" ] }, "description": "The type of currency to check the balance for. Currently, only usdc is supported.", "required": true }, "UserIdPathParameter": { "name": "userId", "in": "path", "schema": { "type": "string" }, "description": "ID of the user", "required": true }, "SignedAgreementIdPathParameter": { "name": "signedAgreementId", "in": "path", "schema": { "type": "string" }, "description": "ID of the signed agreement", "required": true }, "ExternalWalletIdPathParameter": { "name": "externalWalletId", "in": "path", "schema": { "type": "string" }, "description": "ID of the external wallet", "required": true }, "DepositIdPathParameter": { "name": "depositId", "in": "path", "schema": { "type": "string" }, "description": "ID of the deposit", "required": true }, "WalletDepositStatusParameter": { "name": "status", "in": "query", "schema": { "type": "string", "enum": [ "CONFIRMED", "COMPLETED" ] }, "description": "Status of the deposit, CONFIRMED indicates the deposit is found in the blockchain, COMPLETED indicates the deposit is completed and unlikely to be reverted.", "required": false }, "MinAmountParameter": { "name": "minAmount", "in": "query", "schema": { "type": "number" }, "description": "Minimum amount of the deposit, default is 0.01", "required": false } }, "requestBodies": { "CreateAccountBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/CreateAccount" }, { "$ref": "#/components/schemas/CreateUsAccount" }, { "$ref": "#/components/schemas/CreateBrazilAccount" }, { "$ref": "#/components/schemas/CreateBrazilGlobalNetworkAccountIndividual" }, { "$ref": "#/components/schemas/CreateBrazilGlobalNetworkAccountBusiness" }, { "$ref": "#/components/schemas/CreateColombiaAccount" }, { "$ref": "#/components/schemas/CreateArgentinaAccount" }, { "$ref": "#/components/schemas/CreateMexicoAccount" }, { "$ref": "#/components/schemas/CreateMexicoGlobalNetworkAccountIndividual" }, { "$ref": "#/components/schemas/CreateMexicoGlobalNetworkAccountBusiness" }, { "$ref": "#/components/schemas/CreateNigeriaGlobalNetworkAccountIndividual" }, { "$ref": "#/components/schemas/CreateNigeriaGlobalNetworkAccountBusiness" }, { "$ref": "#/components/schemas/CreateHongKongGlobalNetworkAccountIndividual" }, { "$ref": "#/components/schemas/CreateHongKongGlobalNetworkAccountBusiness" }, { "$ref": "#/components/schemas/CreateChinaGlobalNetworkAccountIndividual" }, { "$ref": "#/components/schemas/CreateChinaGlobalNetworkAccountBusiness" }, { "$ref": "#/components/schemas/CreateSingaporeGlobalNetworkAccountIndividual" }, { "$ref": "#/components/schemas/CreateSingaporeGlobalNetworkAccountBusiness" }, { "$ref": "#/components/schemas/CreateAfricaOnrampAccount" }, { "$ref": "#/components/schemas/CreateAfricaOfframpAccount" } ] } } } }, "CreateVirtualAccountBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateVirtualAccount" } } } }, "UpdateVirtualAccountBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateVirtualAccount" } } } }, "SimulateVirtualAccountDepositBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SimulateVirtualAccountDeposit" } } } }, "CreateSettlementRuleBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSettlementRule" } } } }, "UpdateSettlementRuleBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSettlementRule" } } } }, "CreateMCAccountRecipientBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateMCAccountRecipient" } } } }, "UpdateMCAccountRecipientBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateMCAccountRecipient" } } } }, "CreateMCAccountTransferBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateMCAccountTransfer" } } } }, "FileUploadBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/FileUpload" } } } }, "GetForexRateBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetForexRate" } } } }, "CreateForexOrderBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateForexOrder" } } } }, "KycUpdateBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/IndividualKycUpdate" }, { "$ref": "#/components/schemas/BusinessKycUpdate" } ] } } } }, "RailsBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Rails" } } } }, "KycLinkBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/KycLinkForUserCreation" }, { "$ref": "#/components/schemas/KycLinkForUnlockingRails" } ] } } } }, "AddUboBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UboAdd" } } } }, "UpdateUboBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UboUpdate" } } } }, "AddDocumentBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/IndividualDocumentAdd" }, { "$ref": "#/components/schemas/BusinessDocumentAdd" } ] } } } }, "UpdateDocumentBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/IndividualDocumentUpdate" }, { "$ref": "#/components/schemas/BusinessDocumentUpdate" } ] } } } }, "CreateMCAccountBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateMCAccount" } } } }, "CreateMCAccountStoreBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateMCAccountStore" } } } }, "AuthorizeMCAccountStoreBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthorizeMCAccountStore" } } } }, "CreateOfframpBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/CreateOfframp" }, { "$ref": "#/components/schemas/CreateUsdOfframp" }, { "$ref": "#/components/schemas/CreateBrlOfframp" }, { "$ref": "#/components/schemas/CreateCopOfframp" }, { "$ref": "#/components/schemas/CreateMxnOfframp" }, { "$ref": "#/components/schemas/CreateArsOfframp" }, { "$ref": "#/components/schemas/CreateAfricaOfframp" }, { "$ref": "#/components/schemas/CreateBrazilGlobalNetworkOfframp" }, { "$ref": "#/components/schemas/CreateMexicoGlobalNetworkOfframp" }, { "$ref": "#/components/schemas/CreateNigeriaGlobalNetworkOfframp" }, { "$ref": "#/components/schemas/CreateHongKongGlobalNetworkOfframp" }, { "$ref": "#/components/schemas/CreateChinaGlobalNetworkOfframp" } ] } } } }, "CreateCryptoTransferBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCryptoTransfer" } } } }, "CreateBridgingRequestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBridgingRequest" } } } }, "CreateBatchCryptoTransferBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBatchCryptoTransfer" } } } }, "CreateWalletSwapBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWalletSwap" } } } }, "CreateOnrampBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/CreateOnramp" }, { "$ref": "#/components/schemas/CreateUsdOnramp" }, { "$ref": "#/components/schemas/CreateBrlOnramp" }, { "$ref": "#/components/schemas/CreateMxnOnramp" }, { "$ref": "#/components/schemas/CreateAfricaOnramp" } ] } } } }, "CreateMetricBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateMetricRequest" }, "examples": { "CreateMetricRequestExample": { "$ref": "#/components/examples/CreateMetricRequestExample" }, "CreateMetricRequestWithBreakdownsExample": { "$ref": "#/components/examples/CreateMetricRequestWithBreakdownsExample" } } } } }, "UpdateMetricBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateMetricRequest" }, "examples": { "UpdateMetricRequestNameExample": { "$ref": "#/components/examples/UpdateMetricRequestNameExample" }, "UpdateMetricRequestParamsExample": { "$ref": "#/components/examples/UpdateMetricRequestParamsExample" } } } } }, "PreviewMetricBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PreviewMetricRequest" }, "examples": { "PreviewMetricRequestGrossVolumeExample": { "$ref": "#/components/examples/PreviewMetricRequestGrossVolumeExample" }, "PreviewMetricRequestGrossVolumeMonthlyExample": { "$ref": "#/components/examples/PreviewMetricRequestGrossVolumeMonthlyExample" }, "PreviewMetricRequestTransfersWithBreakdownsExample": { "$ref": "#/components/examples/PreviewMetricRequestTransfersWithBreakdownsExample" } } } } }, "CreateFiatTransferBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateFiatTransfer" } } } }, "UserV2CreateBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/IndividualUserV2Create" }, { "$ref": "#/components/schemas/BusinessUserV2Create" } ] } } } }, "UserV2UpdateBody": { "required": true, "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/IndividualUserV2Update" }, { "$ref": "#/components/schemas/BusinessUserV2Update" } ] } } } }, "ToSLinkBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToSLink" } } } }, "UserV2AddWalletsBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserV2AddWallets" } } } }, "AddExternalWalletsBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddExternalWallets" } } } } }, "responses": { "GetAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/AccountObject" }, { "$ref": "#/components/schemas/UsAccountObject" } ] }, "examples": { "AccountObjectUSExample": { "$ref": "#/components/examples/AccountObjectUSExample" } } } } }, "GetAllAccountsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AllAccountObjects" }, "examples": { "AccountObjectListUSExample": { "$ref": "#/components/examples/AccountObjectListUSExample" } } } } }, "CreateAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateAccountObject" }, "examples": { "AccountObjectCreationExample": { "$ref": "#/components/examples/AccountObjectCreationExample" } } } } }, "DeleteAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteAccountObject" }, "examples": { "AccountObjectDeletionExample": { "$ref": "#/components/examples/AccountObjectDeletionExample" } } } } }, "CreateVirtualAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateVirtualAccountObject" }, "examples": { "VirtualAccountObjectCreationExample": { "$ref": "#/components/examples/VirtualAccountObjectCreationExample" } } } } }, "UpdateVirtualAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateVirtualAccountObject" } } } }, "GetVirtualAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VirtualAccountObject" }, "examples": { "VirtualAccountObjectExample": { "$ref": "#/components/examples/VirtualAccountObjectExample" } } } } }, "GetAllVirtualAccountsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VirtualAccountListObject" }, "examples": { "VirtualAccountObjectListExample": { "$ref": "#/components/examples/VirtualAccountObjectListExample" } } } } }, "DeactivateVirtualAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeactivateVirtualAccountObject" }, "examples": { "VirtualAccountObjectDeactivateExample": { "$ref": "#/components/examples/VirtualAccountObjectDeactivateExample" } } } } }, "ReactivateVirtualAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReactivateVirtualAccountObject" }, "examples": { "VirtualAccountObjectCreationExample": { "$ref": "#/components/examples/VirtualAccountObjectCreationExample" } } } } }, "SimulateVirtualAccountDepositResponse": { "description": "Successfully triggered sandbox deposit", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SimulateVirtualAccountDeposit" }, "examples": { "VirtualAccountDepositSimulationObjectExample": { "$ref": "#/components/examples/VirtualAccountDepositSimulationObjectExample" } } } } }, "GetSettlementRuleResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SettlementRuleResponse" }, "examples": { "SettlementRuleObjectExample": { "$ref": "#/components/examples/SettlementRuleObjectExample" } } } } }, "CreateSettlementRuleResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SettlementRuleResponse" }, "examples": { "SettlementRuleObjectExample": { "$ref": "#/components/examples/SettlementRuleObjectExample" } } } } }, "GetAllSettlementRulesResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SettlementRuleListResponse" } } } }, "UpdateSettlementRuleResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SettlementRuleResponse" }, "examples": { "SettlementRuleObjectExample": { "$ref": "#/components/examples/SettlementRuleObjectExample" } } } } }, "DeleteSettlementRuleResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteSettlementRuleResponse" } } } }, "ApplySettlementRuleResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplySettlementRuleResponse" } } } }, "RemoveSettlementRuleResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RemoveSettlementRuleResponse" } } } }, "UnauthorizedResponse": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "NotFoundResponse": { "description": "Resource not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "error" ] }, "error": { "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": "string" } } } } } } } }, "InternalServerErrorResponse": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } }, "PingResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pong" } } } }, "CreateMCAccountRecipientResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateMCAccountRecipientObject" } } } }, "GetMCAccountRecipientResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetMCAccountRecipientObject" } } } }, "GetAllMCAccountRecipientsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetMCAccountRecipientListObject" } } } }, "CreateMCAccountTransferResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCAccountTransferObject" } } } }, "GetMCAccountTransferResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCAccountTransferObject" } } } }, "GetAllMCAccountTransfersResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCAccountTransferListObject" } } } }, "FileUploadResponse": { "description": "File uploaded successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileUploadResult" } } } }, "GetForexRateResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ForexRateObject" } } } }, "CreateForexOrderResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ForexOrderObject" } } } }, "GetAllForexOrdersResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ForexOrderListObject" } } } }, "GetForexOrderResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ForexOrderObject" } } } }, "KycObjectResponse": { "description": "Success", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/KycIndividualObject" }, { "$ref": "#/components/schemas/KycBusinessObject" } ] }, "examples": { "KycObjectIndividualExample": { "$ref": "#/components/examples/KycObjectIndividualExample" }, "KycObjectBusinessExample": { "$ref": "#/components/examples/KycObjectBusinessExample" } } } } }, "KycStatusSubmitResponse": { "description": "Success", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/UsdRailKycSubmissionObject" }, { "$ref": "#/components/schemas/SouthAmericaRailKycSubmissionObject" }, { "$ref": "#/components/schemas/AfricaGeneralRailKycSubmissionObject" }, { "$ref": "#/components/schemas/AfricaNigeriaRailKycSubmissionObject" }, { "$ref": "#/components/schemas/GlobalNetworkRailKycSubmissionObject" } ] }, "examples": { "KycSubmissionObjectUsdExample": { "$ref": "#/components/examples/KycSubmissionObjectUsdExample" }, "KycSubmissionObjectSouthAmericaStandardExample": { "$ref": "#/components/examples/KycSubmissionObjectSouthAmericaStandardExample" }, "KycSubmissionObjectAfricaGeneralExample": { "$ref": "#/components/examples/KycSubmissionObjectAfricaGeneralExample" }, "KycSubmissionObjectAfricaNigeriaExample": { "$ref": "#/components/examples/KycSubmissionObjectAfricaNigeriaExample" }, "KycSubmissionObjectGlobalNetworkExample": { "$ref": "#/components/examples/KycSubmissionObjectGlobalNetworkExample" } } } } }, "KycStatusResponse": { "description": "Success", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/UsdRailIndividualKycStatusObject" }, { "$ref": "#/components/schemas/UsdRailBusinessKycStatusObject" }, { "$ref": "#/components/schemas/SouthAmericaRailKycStatusObject" }, { "$ref": "#/components/schemas/AfricaGeneralRailKycStatusObject" }, { "$ref": "#/components/schemas/AfricaNigeriaRailKycStatusObject" }, { "$ref": "#/components/schemas/GlobalNetworkRailKycStatusObject" } ] }, "examples": { "KycStatusObjectUSDInactiveExample": { "$ref": "#/components/examples/KycStatusObjectUSDInactiveExample" }, "KycStatusObjectUSDPendingIndividualExample": { "$ref": "#/components/examples/KycStatusObjectUSDPendingIndividualExample" }, "KycStatusObjectUSDIncompleteBusinessExample": { "$ref": "#/components/examples/KycStatusObjectUSDIncompleteBusinessExample" }, "KycStatusObjectUSDActiveBusinessExample": { "$ref": "#/components/examples/KycStatusObjectUSDActiveBusinessExample" }, "KycStatusObjectSouthAmericaPendingExample": { "$ref": "#/components/examples/KycStatusObjectSouthAmericaPendingExample" }, "KycStatusObjectSouthAmericaActiveExample": { "$ref": "#/components/examples/KycStatusObjectSouthAmericaActiveExample" }, "KycStatusObjectAfricaGeneralActiveExample": { "$ref": "#/components/examples/KycStatusObjectAfricaGeneralActiveExample" }, "KycStatusObjectAfricaNigeriaActiveExample": { "$ref": "#/components/examples/KycStatusObjectAfricaNigeriaActiveExample" }, "KycStatusObjectGlobalNetworkActiveExample": { "$ref": "#/components/examples/KycStatusObjectGlobalNetworkActiveExample" } } } } }, "KycRequirementResponse": { "description": "Success", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/USDRailBusinessKYCReqOptObject" }, { "$ref": "#/components/schemas/USDRailIndividualKYCReqOptObject" } ] }, "examples": { "KycRequirementObjectBusinessUSDExample": { "$ref": "#/components/examples/KycRequirementObjectBusinessUSDExample" }, "KycRequirementObjectIndividualUSDExample": { "$ref": "#/components/examples/KycRequirementObjectIndividualUSDExample" } } } } }, "KycLinkResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KycLinkObject" }, "examples": { "KycLinkObjectExample": { "$ref": "#/components/examples/KycLinkObjectExample" } } } } }, "AllKycStatusesResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AllKycStatusesObject" }, "examples": { "BasicKycStatusObjectListExample": { "$ref": "#/components/examples/BasicKycStatusObjectListExample" } } } } }, "UboObjectResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UboObject" }, "examples": { "UboObjectExample": { "$ref": "#/components/examples/UboObjectExample" } } } } }, "UboObjectAllRecordsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UboObjectList" }, "examples": { "UboObjectListExample": { "$ref": "#/components/examples/UboObjectListExample" } } } } }, "DocumentObjectResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentObject" }, "examples": { "DocumentObjectIndividualExample": { "$ref": "#/components/examples/DocumentObjectIndividualExample" }, "DocumentObjectBusinessExample": { "$ref": "#/components/examples/DocumentObjectBusinessExample" }, "DocumentObjectUboExample": { "$ref": "#/components/examples/DocumentObjectUboExample" } } } } }, "DocumentObjectAllRecordsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentObjectList" }, "examples": { "DocumentObjectListExample": { "$ref": "#/components/examples/DocumentObjectListExample" } } } } }, "CreateMCAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateMCAccountObject" } } } }, "GetMCAccountResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetMCAccountObject" } } } }, "GetAllMCAccountsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetMCAccountListObject" } } } }, "GetMCAccountDepositResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCAccountDepositObject" } } } }, "GetAllMCAccountDepositsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCAccountDepositListObject" } } } }, "GetMCAccountBalanceResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCAccountBalanceObject" } } } }, "CreateMCAccountStoreResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCAccountStoreObject" } } } }, "AuthorizeMCAccountStoreResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCAccountStoreObject" } } } }, "CryptoToFiatTransferResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfframpObject" }, "examples": { "OfframpObjectUsdOpenQuoteExample": { "$ref": "#/components/examples/OfframpObjectUsdOpenQuoteExample" } } } } }, "CryptoToFiatAcceptQuoteResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfframpAcceptedQuoteObject" }, "examples": { "OfframpObjectUsdCryptoInitiatedExample": { "$ref": "#/components/examples/OfframpObjectUsdCryptoInitiatedExample" } } } } }, "CryptoToFiatRecordResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfframpRecordObject" }, "examples": { "OfframpObjectUsdCompleteExample": { "$ref": "#/components/examples/OfframpObjectUsdCompleteExample" } } } } }, "CryptoToFiatAllRecordsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfframpAllRecordsObject" }, "examples": { "OfframpObjectListExample": { "$ref": "#/components/examples/OfframpObjectListExample" } } } } }, "CryptoToFiatConversionRateResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfframpConversionRateObject" } } } }, "CryptoToCryptoTransferResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CryptoToCryptoTransferObject" } } } }, "CryptoToCryptoRecordResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CryptoToCryptoRecordObject" } } } }, "CryptoToCryptoAllRecordsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CryptoToCryptoAllRecordsObject" } } } }, "BridgeAssetTransferResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BridgeAssetTransferObject" } } } }, "BridgeAssetRecordResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BridgeAssetTransferObject" } } } }, "BridgeAssetAllRecordsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BridgeAssetTransferListObject" } } } }, "BatchCryptoTransferResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchCryptoTransferObject" } } } }, "BatchCryptoTransferAllRecordsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchCryptoTransferListObject" } } } }, "WalletSwapResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletSwapObject" } } } }, "WalletSwapAllRecordsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletSwapAllRecordsObject" } } } }, "FiatToCryptoTransferResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnrampObject" }, "examples": { "OnrampObjectUsdOpenQuoteExample": { "$ref": "#/components/examples/OnrampObjectUsdOpenQuoteExample" } } } } }, "FiatToCryptoAcceptQuoteResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnrampAcceptedQuoteObject" }, "examples": { "OnrampObjectUsdAwaitingFundsExample": { "$ref": "#/components/examples/OnrampObjectUsdAwaitingFundsExample" } } } } }, "FiatToCryptoRefreshQuoteResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnrampQuoteObject" }, "examples": { "OnrampObjectUsdOpenQuoteExample": { "$ref": "#/components/examples/OnrampObjectUsdOpenQuoteExample" } } } } }, "FiatToCryptoRecordResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnrampRecordObject" }, "examples": { "OnrampObjectUsdFiatPendingExample": { "$ref": "#/components/examples/OnrampObjectUsdFiatPendingExample" } } } } }, "FiatToCryptoAllRecordsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OnrampAllRecordsObject" }, "examples": { "OnrampObjectListExample": { "$ref": "#/components/examples/OnrampObjectListExample" } } } } }, "FiatToCryptoConversionRateResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FiatToCryptoConversionRateObject" } } } }, "SimulateOnrampDepositResponse": { "description": "Successfully triggered sandbox deposit", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "example": "Sandbox deposit triggered" } } } } } }, "TemplateListResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateListResponse" }, "examples": { "TemplateListExample": { "$ref": "#/components/examples/TemplateListExample" } } } } }, "TemplateResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateResponse" }, "examples": { "TemplateExample": { "$ref": "#/components/examples/TemplateExample" } } } } }, "ParamOptionsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ParamOptionsResponse" }, "examples": { "ParamOptionsUserIdsExample": { "$ref": "#/components/examples/ParamOptionsUserIdsExample" }, "ParamOptionsTransactionTypesExample": { "$ref": "#/components/examples/ParamOptionsTransactionTypesExample" } } } } }, "MetricResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricResponse" }, "examples": { "MetricResponseExample": { "$ref": "#/components/examples/MetricResponseExample" } } } } }, "MetricListResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricListResponse" }, "examples": { "MetricListExample": { "$ref": "#/components/examples/MetricListExample" } } } } }, "CreateMetricResponse": { "description": "Metric created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricResponse" }, "examples": { "CreateMetricResponseExample": { "$ref": "#/components/examples/CreateMetricResponseExample" } } } } }, "UpdateMetricResponse": { "description": "Metric updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricResponse" }, "examples": { "UpdateMetricResponseExample": { "$ref": "#/components/examples/UpdateMetricResponseExample" } } } } }, "DeleteMetricResponse": { "description": "Metric deleted successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricResponse" }, "examples": { "DeleteMetricResponseExample": { "$ref": "#/components/examples/DeleteMetricResponseExample" } } } } }, "MetricCalculationResponse": { "description": "Metric calculation results", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricCalculationResponse" }, "examples": { "PreviewMetricResponseGrossVolumeNoBreakdownsExample": { "$ref": "#/components/examples/PreviewMetricResponseGrossVolumeNoBreakdownsExample" }, "PreviewMetricResponseGrossVolumeMonthlyExample": { "$ref": "#/components/examples/PreviewMetricResponseGrossVolumeMonthlyExample" }, "PreviewMetricResponseTransfersWithBreakdownsExample": { "$ref": "#/components/examples/PreviewMetricResponseTransfersWithBreakdownsExample" }, "MetricResultsNewUsersExample": { "$ref": "#/components/examples/MetricResultsNewUsersExample" }, "MetricResultsGrossVolumeExample": { "$ref": "#/components/examples/MetricResultsGrossVolumeExample" } } } } }, "BadRequestResponse": { "description": "Bad request - validation error", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "error" ] }, "error": { "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "details": { "type": "object", "description": "Field-specific validation errors" } } } } } } } }, "FiatToFiatRecordResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FiatToFiatRecordObject" } } } }, "ToSLinkObjectResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToSLinkObject" }, "examples": { "ToSLinkObjectExample": { "$ref": "#/components/examples/ToSLinkObjectExample" } } } } }, "ToSLinkRecordStatusResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToSLinkRecordStatusObject" }, "examples": { "TosLinkStatusObjectExample": { "$ref": "#/components/examples/TosLinkStatusObjectExample" } } } } }, "WalletBalanceResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletBalanceObject" }, "examples": { "WalletBalanceObjectExample": { "$ref": "#/components/examples/WalletBalanceObjectExample" } } } } }, "UserV2ObjectResponse": { "description": "Success", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/IndividualUserV2Object" }, { "$ref": "#/components/schemas/BusinessUserV2Object" } ] }, "examples": { "UserObjectIndividualExample": { "$ref": "#/components/examples/UserObjectIndividualExample" }, "UserObjectBusinessExample": { "$ref": "#/components/examples/UserObjectBusinessExample" } } } } }, "AllUserV2ObjectsResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AllUserV2Objects" }, "examples": { "UserObjectListExample": { "$ref": "#/components/examples/UserObjectListExample" } } } } }, "ExternalWalletsObjectResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExternalWalletsObject" }, "examples": { "ExternalWalletObjectListExample": { "$ref": "#/components/examples/ExternalWalletObjectListExample" } } } } }, "ExternalWalletObjectResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExternalWalletObject" }, "examples": { "ExternalWalletObjectExample": { "$ref": "#/components/examples/ExternalWalletObjectExample" } } } } }, "WalletDepositObjectResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletDepositObject" }, "examples": { "WalletDepositObjectExample": { "$ref": "#/components/examples/WalletDepositObjectExample" } } } } }, "WalletDepositsObjectResponse": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletDepositsObject" }, "examples": { "WalletDepositObjectListExample": { "$ref": "#/components/examples/WalletDepositObjectListExample" } } } } } }, "schemas": { "AccountTypeEnum": { "type": "string", "description": "The type of account.", "enum": [ "us", "brazil", "colombia", "argentina", "mexico", "africa", "brazilGlobalNetwork", "nigeriaGlobalNetwork", "mexicoGlobalNetwork", "hongKongGlobalNetwork", "chinaGlobalNetwork", "singaporeGlobalNetwork" ] }, "CreateAccount": { "type": "object", "title": "Account", "properties": { "rail": { "type": "string", "enum": [ "onramp", "offramp" ] }, "type": { "$ref": "#/components/schemas/AccountTypeEnum" }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/AccountHolder" }, "us": { "type": "object", "description": "US account.", "$ref": "#/components/schemas/UsAccount" }, "brazil": { "type": "object", "description": "Brazil account.", "$ref": "#/components/schemas/BrazilAccount" }, "colombia": { "type": "object", "description": "Colombia account.", "$ref": "#/components/schemas/ColombiaAccount" }, "argentina": { "type": "object", "description": "Argentina account.", "$ref": "#/components/schemas/ArgentinaAccount" }, "mexico": { "type": "object", "description": "Mexico account.", "$ref": "#/components/schemas/MexicoAccount" }, "africa": { "type": "object", "description": "Africa account.", "$ref": "#/components/schemas/AfricaAccount" }, "brazilGlobalNetwork": { "type": "object", "description": "Brazil Global Network account.", "$ref": "#/components/schemas/BrazilGlobalNetworkAccount" }, "nigeriaGlobalNetwork": { "type": "object", "description": "Nigeria Global Network account.", "$ref": "#/components/schemas/NigeriaGlobalNetworkAccount" }, "mexicoGlobalNetwork": { "type": "object", "description": "Mexico Global Network account.", "$ref": "#/components/schemas/MexicoGlobalNetworkAccount" }, "hongKongGlobalNetwork": { "type": "object", "description": "Hong Kong Global Network account.", "$ref": "#/components/schemas/HongKongGlobalNetworkAccount" }, "singaporeGlobalNetwork": { "type": "object", "description": "Singapore Global Network account.", "$ref": "#/components/schemas/SingaporeGlobalNetworkAccount" } }, "required": [ "rail", "type" ] }, "CreateUsAccount": { "type": "object", "title": "US Offramp Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "us" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/UsAccountHolder" }, "us": { "type": "object", "description": "US account.", "$ref": "#/components/schemas/UsAccount" } }, "required": [ "rail", "type", "accountHolder", "us" ] }, "CreateBrazilAccount": { "type": "object", "title": "Brazil Offramp Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "brazil" ] }, "brazil": { "type": "object", "description": "Brazil account.", "$ref": "#/components/schemas/BrazilAccount" } }, "required": [ "rail", "type", "brazil" ] }, "CreateBrazilGlobalNetworkAccountIndividual": { "type": "object", "title": "Brazil Global Network Individual Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "brazilGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkIndividualAccountHolder" }, "brazilGlobalNetwork": { "type": "object", "description": "Brazil Global Network account.", "$ref": "#/components/schemas/BrazilGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "brazilGlobalNetwork" ] }, "CreateBrazilGlobalNetworkAccountBusiness": { "type": "object", "title": "Brazil Global Network Business Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "brazilGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkIndividualAccountHolder" }, "brazilGlobalNetwork": { "type": "object", "description": "Brazil Global Network account.", "$ref": "#/components/schemas/BrazilGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "brazilGlobalNetwork" ] }, "BrazilGlobalNetworkAccount": { "type": "object", "title": "Brazil Global Network Account", "properties": { "email": { "type": "string", "format": "email", "description": "Provide when idNumber does not serve as offramp destination identifier\nAt most one of the following fields can be provided: pix, email, phone.\n" }, "phone": { "type": "string", "description": "Provide when idNumber does not serve as offramp destination identifier\nAt most one of the following fields can be provided: pix, email, phone.\n" }, "pix": { "type": "string", "description": "Provide when idNumber does not serve as offramp destination identifier\nAt most one of the following fields can be provided: pix, email, phone.\n" }, "currency": { "type": "string", "enum": [ "brl" ], "description": "The currency for the account" } }, "required": [ "currency" ] }, "CreateNigeriaGlobalNetworkAccountIndividual": { "type": "object", "title": "Nigeria Global Network Individual Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "nigeriaGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkIndividualAccountHolder" }, "nigeriaGlobalNetwork": { "type": "object", "description": "Nigeria Global Network account.", "$ref": "#/components/schemas/NigeriaGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "nigeriaGlobalNetwork" ] }, "CreateNigeriaGlobalNetworkAccountBusiness": { "type": "object", "title": "Nigeria Global Network Business Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "nigeriaGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkBusinessAccountHolder" }, "nigeriaGlobalNetwork": { "type": "object", "description": "Nigeria Global Network account.", "$ref": "#/components/schemas/NigeriaGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "nigeriaGlobalNetwork" ] }, "CreateMexicoGlobalNetworkAccountIndividual": { "type": "object", "title": "Mexico Global Network Individual Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "mexicoGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkIndividualAccountHolder" }, "mexicoGlobalNetwork": { "type": "object", "description": "Mexico Global Network account.", "$ref": "#/components/schemas/MexicoGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "mexicoGlobalNetwork" ] }, "CreateMexicoGlobalNetworkAccountBusiness": { "type": "object", "title": "Mexico Global Network Business Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "mexicoGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkBusinessAccountHolder" }, "mexicoGlobalNetwork": { "type": "object", "description": "Mexico Global Network account.", "$ref": "#/components/schemas/MexicoGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "mexicoGlobalNetwork" ] }, "CreateHongKongGlobalNetworkAccountIndividual": { "type": "object", "title": "Hong Kong Global Network Individual Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "hongKongGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkIndividualAccountHolder" }, "hongKongGlobalNetwork": { "type": "object", "description": "Hong Kong Global Network account.", "$ref": "#/components/schemas/HongKongGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "hongKongGlobalNetwork" ] }, "CreateHongKongGlobalNetworkAccountBusiness": { "type": "object", "title": "Hong Kong Global Network Business Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "hongKongGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkBusinessAccountHolder" }, "hongKongGlobalNetwork": { "type": "object", "description": "Hong Kong Global Network account.", "$ref": "#/components/schemas/HongKongGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "hongKongGlobalNetwork" ] }, "HongKongGlobalNetworkAccount": { "type": "object", "title": "Hong Kong Global Network Account", "properties": { "bankName": { "type": "string", "description": "Bank name for the account" }, "accountNumber": { "type": "string", "description": "Bank account number" }, "swiftCode": { "type": "string", "description": "Bank code" }, "currency": { "type": "string", "enum": [ "hkd", "usd" ], "description": "The currency for the account" }, "bankCode": { "type": "string", "description": "Bank code. Only required when transferType is chats or fps." }, "transferType": { "type": "string", "enum": [ "chats", "fps", "swift" ], "description": "Transfer type of the account. `swift` is the default transfer type if not provided." } }, "required": [ "currency", "bankName", "accountNumber", "swiftCode" ] }, "CreateChinaGlobalNetworkAccountIndividual": { "type": "object", "title": "China Global Network Individual Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "chinaGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkIndividualAccountHolder" }, "chinaGlobalNetwork": { "type": "object", "description": "China Global Network account.", "$ref": "#/components/schemas/ChinaGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "chinaGlobalNetwork" ] }, "CreateChinaGlobalNetworkAccountBusiness": { "type": "object", "title": "China Global Network Business Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "chinaGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkBusinessAccountHolder" }, "chinaGlobalNetwork": { "type": "object", "description": "China Global Network account.", "$ref": "#/components/schemas/ChinaGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "chinaGlobalNetwork" ] }, "ChinaGlobalNetworkAccount": { "type": "object", "title": "China Global Network Account", "properties": { "bankName": { "type": "string", "description": "Bank name for the account" }, "accountNumber": { "type": "string", "description": "Bank account number" }, "swiftCode": { "type": "string", "description": "Bank code" }, "currency": { "type": "string", "enum": [ "usd", "cny" ], "description": "The currency for the account" } }, "required": [ "currency" ] }, "CreateSingaporeGlobalNetworkAccountIndividual": { "type": "object", "title": "Singapore Global Network Individual Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "singaporeGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkIndividualAccountHolder" }, "singaporeGlobalNetwork": { "type": "object", "description": "Singapore Global Network account.", "$ref": "#/components/schemas/SingaporeGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "singaporeGlobalNetwork" ] }, "CreateSingaporeGlobalNetworkAccountBusiness": { "type": "object", "title": "Singapore Global Network Business Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "singaporeGlobalNetwork" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/GlobalNetworkBusinessAccountHolder" }, "singaporeGlobalNetwork": { "type": "object", "description": "Singapore Global Network account.", "$ref": "#/components/schemas/SingaporeGlobalNetworkAccount" } }, "required": [ "rail", "type", "accountHolder", "singaporeGlobalNetwork" ] }, "SingaporeGlobalNetworkAccount": { "type": "object", "title": "Singapore Global Network Account", "properties": { "bankName": { "type": "string", "description": "Bank name for the account" }, "accountNumber": { "type": "string", "description": "Bank account number" }, "swiftCode": { "type": "string", "description": "Bank code" }, "currency": { "type": "string", "enum": [ "usd", "sgd" ], "description": "The currency for the account" } }, "required": [ "currency" ] }, "MexicoGlobalNetworkAccount": { "type": "object", "title": "Mexico Global Network Account", "properties": { "speiClabe": { "type": "string", "description": "SPEI CLABE number for the account" }, "currency": { "type": "string", "enum": [ "mxn" ], "description": "The currency for the account" } }, "required": [ "currency" ] }, "NigeriaGlobalNetworkAccount": { "type": "object", "title": "Nigeria Global Network Account", "properties": { "bankName": { "type": "string", "description": "Bank name for the account" }, "accountNumber": { "type": "string", "description": "Bank account number" }, "currency": { "type": "string", "enum": [ "ngn" ], "description": "The currency for the account" } }, "required": [ "currency" ] }, "CreateColombiaAccount": { "type": "object", "title": "Colombia Offramp Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "colombia" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/ColombiaAccountHolder" }, "colombia": { "type": "object", "description": "Colombia account.", "$ref": "#/components/schemas/ColombiaAccount" } }, "required": [ "rail", "type", "accountHolder", "colombia" ] }, "CreateArgentinaAccount": { "type": "object", "title": "Argentina Offramp Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "argentina" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/AccountHolder" }, "argentina": { "type": "object", "description": "Argentina account.", "$ref": "#/components/schemas/ArgentinaAccount" } }, "required": [ "rail", "type", "accountHolder", "argentina" ] }, "CreateMexicoAccount": { "type": "object", "title": "Mexico Offramp Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "mexico" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/AccountHolder" }, "mexico": { "type": "object", "description": "Mexico account.", "$ref": "#/components/schemas/MexicoAccount" } }, "required": [ "rail", "type", "accountHolder", "mexico" ] }, "CreateAfricaOnrampAccount": { "type": "object", "title": "Africa Onramp Account", "properties": { "rail": { "type": "string", "enum": [ "onramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "africa" ] }, "africa": { "type": "object", "description": "Africa account.", "$ref": "#/components/schemas/AfricaAccount" } }, "required": [ "rail", "type", "africa" ] }, "CreateAfricaOfframpAccount": { "type": "object", "title": "Africa Offramp Account", "properties": { "rail": { "type": "string", "enum": [ "offramp" ] }, "type": { "type": "string", "description": "The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.\n", "enum": [ "africa" ] }, "accountHolder": { "type": "object", "description": "account holder information.", "$ref": "#/components/schemas/AfricaAccountHolder" }, "africa": { "type": "object", "description": "Africa account.", "$ref": "#/components/schemas/AfricaAccount" } }, "required": [ "rail", "type", "accountHolder", "africa" ] }, "UsAccountHolder": { "type": "object", "title": "Account Holder", "properties": { "type": { "type": "string", "enum": [ "individual", "business" ] }, "name": { "type": "string", "description": "The name of the account holder.\n`individual`: first name and last name seperated by space.\n`business`: legal name of the business.\n" }, "address": { "type": "object", "description": "Address of the accountHolder.", "$ref": "#/components/schemas/Address" } }, "required": [ "type", "name", "address" ] }, "ColombiaAccountHolder": { "type": "object", "title": "Account Holder", "properties": { "type": { "type": "string", "enum": [ "individual", "business" ] }, "name": { "type": "string", "description": "The name of the account holder.\n`individual`: first name and last name seperated by space.\n`business`: legal name of the business.\n" }, "email": { "type": "string", "format": "email" }, "phone": { "type": "string" }, "address": { "type": "object", "description": "Address of the accountHolder.", "$ref": "#/components/schemas/Address" }, "idType": { "type": "string", "enum": [ "CC", "CE", "NIT", "PASS", "PEP" ], "description": "The type of ID document provided by the account holder.\n`CC`: Citizenship ID\n`CE`: Foreign ID\n`NIT`: National ID\n`PASS`: Passport\n`PEP`: Special Stay Permit\n" }, "idNumber": { "type": "string", "description": "The ID number of the account holder.\n" } }, "required": [ "type", "name", "email", "idType", "idNumber" ] }, "AfricaAccountHolder": { "type": "object", "title": "Account Holder", "properties": { "type": { "type": "string", "enum": [ "individual", "business" ] }, "name": { "type": "string", "description": "The name of the account holder.\n`individual`: first name and last name seperated by space.\n`business`: legal name of the business.\n" }, "email": { "type": "string", "format": "email" }, "phone": { "type": "string" }, "address": { "type": "object", "description": "Address of the accountHolder.", "$ref": "#/components/schemas/Address" }, "idType": { "type": "string", "enum": [ "CC", "CE", "NIT", "PASS", "PEP" ], "description": "The type of ID document provided by the account holder.\n`CC`: Citizenship ID\n`CE`: Foreign ID\n`NIT`: National ID\n`PASS`: Passport\n`PEP`: Special Stay Permit\n" }, "idNumber": { "type": "string", "description": "The ID number of the account holder.\n" } }, "required": [ "type", "name", "phone" ] }, "AccountHolder": { "type": "object", "title": "Account Holder", "properties": { "type": { "type": "string", "enum": [ "individual", "business" ] }, "name": { "type": "string", "description": "The name of the account holder.\n`individual`: first name and last name seperated by space.\n`business`: legal name of the business.\n" }, "email": { "type": "string", "format": "email" }, "phone": { "type": "string" }, "address": { "type": "object", "description": "Address of the accountHolder.", "$ref": "#/components/schemas/Address" }, "idType": { "type": "string", "enum": [ "CC", "CE", "NIT", "PASS", "PEP" ], "description": "The type of ID document provided by the account holder.\n`CC`: Citizenship ID\n`CE`: Foreign ID\n`NIT`: National ID\n`PASS`: Passport\n`PEP`: Special Stay Permit\n" }, "idNumber": { "type": "string", "description": "The ID number of the account holder.\n" } }, "required": [ "type", "name" ] }, "GlobalNetworkIndividualAccountHolder": { "type": "object", "description": "account holder information.", "properties": { "name": { "type": "string", "description": "Full name of the account holder" }, "type": { "type": "string", "enum": [ "individual" ], "description": "Type of account holder" }, "address": { "type": "object", "properties": { "city": { "type": "string" }, "country": { "type": "string" }, "postalCode": { "type": "string" }, "addressLine1": { "type": "string" }, "addressLine2": { "type": "string" }, "stateProvinceRegion": { "type": "string" } }, "required": [ "city", "country", "postalCode", "addressLine1", "stateProvinceRegion" ] }, "dateOfBirth": { "type": "string", "format": "date", "description": "Date of birth in YYYY-MM-DD format" }, "idNumber": { "type": "string", "description": "Government issued ID number" }, "nationality": { "type": "string", "description": "Three-letter country code (ISO 3166-1 alpha-3)" } }, "required": [ "name", "type", "address", "dateOfBirth", "idNumber", "nationality" ] }, "GlobalNetworkBusinessAccountHolder": { "type": "object", "properties": { "name": { "type": "string", "description": "Business name" }, "type": { "type": "string", "enum": [ "business" ] }, "address": { "type": "object", "properties": { "city": { "type": "string" }, "country": { "type": "string" }, "postalCode": { "type": "string" }, "addressLine1": { "type": "string" }, "addressLine2": { "type": "string" }, "stateProvinceRegion": { "type": "string" } }, "required": [ "city", "country", "postalCode", "addressLine1", "stateProvinceRegion" ] }, "formationDate": { "type": "string", "format": "date", "description": "Formation date in YYYY-MM-DD format" }, "idNumber": { "type": "string", "description": "Government issued ID number" } }, "required": [ "name", "type", "address", "formationDate", "idNumber" ] }, "UsAccount": { "type": "object", "title": "Account Info", "properties": { "transferType": { "type": "string", "enum": [ "ach", "wire", "swift" ], "description": "The type of transfer this account facilitates. `rtp` will come shortly.\n" }, "accountType": { "type": "string", "enum": [ "Checking", "Savings" ], "description": "The type of account.\n" }, "accountNumber": { "type": "string", "description": "The account number of the account.\n" }, "routingNumber": { "type": "string", "description": "The routing number of the account.\n" }, "iban": { "type": "string", "description": "Only one of `accountNumber` or `iban` can be provided.\n" }, "swiftCode": { "type": "string", "description": "The SWIFT code of the bank where the account is held. Required if `transferType` is `swift`.\n" }, "bankName": { "type": "string", "description": "The name of the bank where the account is held.\n" }, "bankAddress": { "type": "object", "description": "Address of the bank.", "$ref": "#/components/schemas/Address" }, "currency": { "type": "string", "enum": [ "usd" ], "description": "The currency of the account.\n" } }, "required": [ "transferType", "accountType", "bankName", "currency" ] }, "BrazilAccount": { "type": "object", "title": "Account Info", "properties": { "pixKey": { "type": "string", "description": "The PIX key of the account.\n" }, "currency": { "type": "string", "enum": [ "brl" ], "description": "The currency of the account.\n" } }, "required": [ "pixKey", "currency" ] }, "ColombiaAccount": { "type": "object", "title": "Account Info", "properties": { "bankName": { "type": "string", "description": "The name of the bank where the account is held. Required if `bankCode` is not provided.\n", "enum": [ "MOVII", "Banco de Bogotá", "Banco Popular", "Banco Corpbanca ITAU", "Bancolombia", "Citibank", "Banco GNB Sudameris", "BBVA", "ITAU", "Scotiabank Colpatria", "Banco de Occidente", "Bancoldex", "Banco Caja Social", "Banco Agrario", "Jpmorgan Corporacion Financier", "BNP PARIBAS", "Davivienda", "Banco AVVillas", "Banco W", "Banco Procredit Colombia", "Bancamia", "Inversora Pichincha S.A.", "Bancoomeva", "Banco Falabella S.A.", "Banco Finandina S.A.", "Banco Santander Negocios", "Banco Cooperativo Coopcentral", "Serfinanza S.A", "LULO BANK SA", "Banco JP Morgan", "Compensar", "Gestion y Contacto S.A.", "Fedecajas", "Simple S.A.", "Enlace Operativo", "Corp. Financiera Colombiana", "Financiera Juriscoop", "Rappi", "Coop. Financiera de Antioquia", "Cotrafa Cooperativa Financiera", "Confiar Cooperativa Financiera", "Giros y Finanzas", "COLTEFINANCIERA", "Banco OLD Mutual", "NEQUI", "DECEVAL", "Daviplata", "Banco Credifinanciera", "Financiera Dann (IRIS)", "DGCPTN" ] }, "bankCode": { "type": "string", "description": "The bank code of the bank where the account is held. Required if `bankName` is not provided. If provided, this will take precedence over `bankName`.\n" }, "accountNumber": { "type": "string", "description": "The account number of the account.\n" }, "accountType": { "type": "string", "enum": [ "checking", "savings" ], "description": "The type of account.\n" }, "currency": { "type": "string", "enum": [ "cop" ], "description": "The currency of the account.\n" } }, "required": [ "accountNumber", "accountType", "currency" ] }, "MexicoAccount": { "type": "object", "title": "Account Info", "properties": { "speiProtocol": { "type": "string", "enum": [ "clabe", "debitcard", "phonenum" ], "description": "The SPEI protocol of the account.\n" }, "speiInstitutionCode": { "type": "string", "description": "The institution code of the account. Required only if `speiProtocol` is `debitcard` or `phonenum`.\n" }, "speiClabe": { "type": "string" }, "currency": { "type": "string", "enum": [ "mxn" ], "description": "The currency of the account.\n" } }, "required": [ "speiProtocol", "speiClabe", "currency" ] }, "ArgentinaAccount": { "type": "object", "title": "Account Info", "properties": { "accountType": { "type": "string", "enum": [ "CVU", "CBU", "ALIAS" ], "description": "The type of account.\n" }, "accountNumber": { "type": "string", "description": "The account number of the account.\n" }, "currency": { "type": "string", "enum": [ "ars" ], "description": "The currency of the account.\n" } }, "required": [ "accountType", "accountNumber", "currency" ] }, "AfricaAccount": { "type": "object", "title": "Account Info", "properties": { "financialInstitute": { "type": "string", "description": "The financial institute of the account. Financial institue type has to match the accountType. eg. accountType of bank requires financialInstitute of bank.\nLook at the list of supported combination of `country`, `currency`, and `financialInstitute` [here](https://docs.google.com/spreadsheets/d/1QxAWGoZMznB6_Ts4mzFcFD49ZOMUZNdNiR6wlr8NDL0/edit?gid=293141391#gid=293141391).\nMake sure the `financialInstitute` enum is supported under the `country` and `currency`.\n" }, "accountType": { "type": "string", "enum": [ "momo", "bank" ], "description": "The type of account.\n" }, "accountNumber": { "type": "string", "description": "The account number of the account. Not required for `rail`: \"onramp\" with `accountType`: \"bank\". Required otherwise.\n" }, "currency": { "type": "string", "description": "The currency of the account.\nLook at the list of supported combination of `country`, `currency`, and `financialInstitute` [here](https://docs.google.com/spreadsheets/d/1QxAWGoZMznB6_Ts4mzFcFD49ZOMUZNdNiR6wlr8NDL0/edit?gid=293141391#gid=293141391).\nMake sure the `currency` enum is supported under the `country` and `financialInstitute`.\n" }, "country": { "type": "string", "description": "The country code of the account.\nLook at the list of supported combination of `country`, `currency`, and `financialInstitute` [here](https://docs.google.com/spreadsheets/d/1QxAWGoZMznB6_Ts4mzFcFD49ZOMUZNdNiR6wlr8NDL0/edit?gid=293141391#gid=293141391).\nMake sure the `country` enum is supported under the `currency` and `financialInstitute`.\n" } }, "required": [ "financialInstitute", "accountType", "currency", "country" ] }, "InboundObject": { "type": "object", "properties": { "bankName": { "type": "string" }, "senderName": { "type": "string" }, "routingNumber": { "type": "string" }, "accountNumber": { "type": "string" }, "accountType": { "type": "string" }, "fedBatchId": { "type": "string" }, "imad": { "type": "string" }, "omad": { "type": "string" }, "traceNumber": { "type": "string" }, "bankAddress": { "type": "string" }, "description": { "type": "string" }, "paymentRail": { "type": "string", "enum": [ "ach", "wire", "rtp" ] } } }, "CreateVirtualAccount": { "type": "object", "title": "Create Virtual Account", "properties": { "sourceCurrency": { "type": "string", "enum": [ "usd" ] }, "destinationCurrency": { "type": "string", "enum": [ "usdc", "usdt" ], "description": "usdt is only supported on ethereum\n" }, "destinationChain": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA", "BASE" ], "description": "Either `externalWalletId` or `destinationChain` must be provided.\n" }, "externalWalletId": { "type": "string", "description": "Either `externalWalletId` or `destinationChain` must be provided.\n" } }, "required": [ "sourceCurrency", "destinationCurrency" ] }, "UpdateVirtualAccount": { "type": "object", "title": "Update Virtual Account", "properties": { "sourceCurrency": { "type": "string", "enum": [ "usd" ] }, "destinationCurrency": { "type": "string", "enum": [ "usdc", "usdt" ], "description": "usdt is only supported on ethereum\n" }, "destinationChain": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA", "BASE" ], "description": "Either `externalWalletId` or `destinationChain` must be provided.\n" }, "externalWalletId": { "type": "string", "description": "Either `externalWalletId` or `destinationChain` must be provided.\n" } }, "required": [ "sourceCurrency", "destinationCurrency" ] }, "CreateVirtualAccountObject": { "type": "object", "properties": { "message": { "type": "string" }, "accountInfo": { "$ref": "#/components/schemas/VirtualAccountObject" } } }, "VirtualAccountObject": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "userId": { "type": "string", "format": "uuid" }, "source": { "type": "object", "properties": { "paymentRail": { "type": "array", "items": { "type": "string" } }, "currency": { "type": "string" } } }, "destination": { "type": "object", "properties": { "chain": { "type": "string" }, "currency": { "type": "string" }, "walletAddress": { "type": "string" }, "externalWalletId": { "type": "string" } } }, "status": { "type": "string", "enum": [ "activated", "deactivated" ] }, "microDeposits": { "type": "object", "properties": { "count": { "type": "integer" }, "data": { "type": "array", "items": { "type": "object", "properties": { "createdAt": { "type": "string", "format": "date-time" }, "currency": { "type": "string" }, "amount": { "type": "integer" }, "sourceBankInfo": { "$ref": "#/components/schemas/InboundObject" } } } } } }, "depositInstructions": { "type": "object", "properties": { "bankName": { "type": "string" }, "bankAddress": { "type": "string" }, "swiftCode": { "type": "string" }, "beneficiary": { "type": "object", "properties": { "name": { "type": "string" }, "address": { "type": "string" } } }, "ach": { "type": "object", "properties": { "routingNumber": { "type": "string" }, "accountNumber": { "type": "string" } } }, "wire": { "type": "object", "properties": { "routingNumber": { "type": "string" }, "accountNumber": { "type": "string" } } }, "rtp": { "type": "object", "properties": { "routingNumber": { "type": "string" }, "accountNumber": { "type": "string" } } }, "reference": { "type": "string" }, "depositBy": { "type": "string", "format": "date-time" }, "instruction": { "type": "string" } } }, "settlementRuleId": { "type": "string", "format": "uuid" } } }, "VirtualAccountListObject": { "type": "object", "properties": { "count": { "type": "integer", "description": "Number of virtual accounts." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/VirtualAccountObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } } }, "DeactivateVirtualAccountObject": { "type": "object", "properties": { "message": { "type": "string" }, "accountInfo": { "$ref": "#/components/schemas/VirtualAccountObject" } } }, "ReactivateVirtualAccountObject": { "type": "object", "properties": { "message": { "type": "string" }, "accountInfo": { "$ref": "#/components/schemas/VirtualAccountObject" } } }, "UpdateVirtualAccountObject": { "type": "object", "properties": { "message": { "type": "string" }, "accountInfo": { "$ref": "#/components/schemas/VirtualAccountObject" } } }, "CreateAccountObject": { "type": "object", "properties": { "status": { "type": "string" }, "message": { "type": "string" }, "id": { "type": "string" } } }, "DeleteAccountObject": { "type": "object", "properties": { "status": { "type": "string" }, "message": { "type": "string" } } }, "AccountObject": { "type": "object", "properties": { "accountId": { "type": "string" }, "userId": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "accountType": { "type": "string" }, "accountNumber": { "type": "string" }, "routingNumber": { "type": "string" }, "bankName": { "type": "string" }, "isValid": { "type": "boolean" }, "reason": { "type": "string" }, "rail": { "type": "object", "properties": { "currency": { "type": "string" }, "railType": { "type": "string" }, "paymentRail": { "type": "string" } } } } }, "AllAccountObjects": { "type": "object", "properties": { "count": { "type": "integer" }, "banks": { "type": "array", "items": { "type": "object", "properties": { "accountId": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "status": { "type": "string" }, "accountType": { "type": "string" }, "businessIdentifierCode": { "type": "string" }, "accountNumber": { "type": "string" }, "routingNumber": { "type": "string" }, "accountHolderName": { "type": "string" }, "accountHolderCity": { "type": "string" }, "accountHolderCountry": { "type": "string" }, "accountHolderStreetLine1": { "type": "string" }, "accountHolderStateProvinceRegion": { "type": "string" }, "accountHolderPostalCode": { "type": "string" }, "bankCountry": { "type": "string" }, "userId": { "type": "string" }, "rail": { "type": "object", "properties": { "currency": { "type": "string" }, "railType": { "type": "string" }, "paymentRail": { "type": "string" } } } } } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } } }, "UsAccountObject": { "type": "object", "title": "Account Object (US)", "properties": { "id": { "type": "string", "description": "Account ID" }, "userId": { "type": "string", "description": "User ID" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "accountHolder": { "$ref": "#/components/schemas/UsAccountHolder" }, "isValid": { "type": "boolean", "description": "Indicates if the account is valid" }, "reason": { "type": "string", "description": "Reason for invalidity, if applicable" }, "us": { "type": "object", "properties": { "accountType": { "type": "string", "enum": [ "Checking", "Savings" ], "description": "The type of account.\n" }, "accountNumber": { "type": "string", "description": "The account number of the account.\n" }, "routingNumber": { "type": "string", "description": "The routing number of the account.\n" }, "iban": { "type": "string", "description": "Only one of `accountNumber` or `iban` can be provided.\n" }, "swiftCode": { "type": "string", "description": "The SWIFT code of the bank where the account is held. Required if `transferType` is `swift`.\n" }, "bankName": { "type": "string", "description": "The name of the bank where the account is held.\n" }, "bankAddress": { "type": "object", "description": "Address of the bank. Required if `transferType` is `swift`.", "$ref": "#/components/schemas/Address" }, "currency": { "type": "string", "enum": [ "usd" ], "description": "The currency of the account.\n" } } }, "rail": { "type": "object", "properties": { "currency": { "type": "string", "enum": [ "usd" ], "description": "The currency of the account.\n" }, "railType": { "type": "string", "enum": [ "offramp" ] }, "paymentRail": { "type": "string" } } } } }, "SimulateVirtualAccountDeposit": { "type": "object", "title": "Simulate Virtual Account Deposit", "properties": { "amount": { "type": "string", "description": "Amount to simulate deposit" }, "paymentRail": { "type": "string", "enum": [ "WIRE", "ACH" ], "description": "Payment rail for the simulated deposit , recommended to use WIRE for faster settlement" }, "requestId": { "type": "string", "description": "Unique identifier for the request (recommend using uuid v4)" }, "source": { "type": "object", "required": [ "routingNumber", "accountNumber", "name", "bankName" ], "properties": { "routingNumber": { "type": "string", "description": "Routing number of the source bank account" }, "accountNumber": { "type": "string", "description": "Account number of the source bank account" }, "name": { "type": "string", "description": "Name on the source bank account" }, "bankName": { "type": "string", "description": "Name of the source bank" } } }, "userId": { "type": "string", "description": "Optional user ID to associate with this deposit" }, "reference": { "type": "string", "description": "Optional reference for this deposit" }, "description": { "type": "string", "description": "Optional description for this deposit" } }, "required": [ "amount", "paymentRail", "requestId", "source" ] }, "SettlementRuleTier": { "type": "object", "title": "Settlement Rule Tier", "properties": { "min": { "type": "string", "description": "Minimum value for this tier (empty string is required for first tier)", "example": "1000" }, "max": { "type": "string", "description": "Maximum value for this tier (empty string is required for last tier)", "example": "2000" }, "value": { "type": "number", "description": "Fee value for this tier", "example": 0.0005 } }, "required": [ "min", "max", "value" ] }, "SettlementRule": { "type": "object", "title": "Settlement Rule", "properties": { "type": { "type": "string", "enum": [ "PERCENTAGE", "FIXED" ], "description": "Type of fee calculation", "example": "PERCENTAGE" }, "calculationModel": { "type": "string", "enum": [ "FIXED", "TIERED" ], "description": "Model for calculating the fee", "example": "FIXED" }, "value": { "type": "number", "nullable": true, "description": "Fixed fee value (omit for tiered calculation model)", "example": 0.001 }, "tiers": { "type": "array", "nullable": true, "items": { "$ref": "#/components/schemas/SettlementRuleTier" }, "description": "Tiered fee structure (omit for fixed calculation model)" }, "walletAddress": { "type": "string", "description": "Wallet address to receive the fee", "example": "0x15FB50680fEB2f726413416665c25f9B397b047b" } }, "required": [ "type", "calculationModel", "walletAddress" ] }, "CreateSettlementRule": { "type": "object", "title": "Create Settlement Rule", "properties": { "requestId": { "type": "string", "description": "Unique identifier for the request (recommend using uuid v4)", "example": "{{$guid}}" }, "chain": { "type": "string", "enum": [ "BASE", "POLYGON", "ETHEREUM", "SOLANA" ], "description": "Blockchain network for the settlement rule, this should be the same as the blockchain network of the virtual account", "example": "BASE" }, "includeHIFIFee": { "type": "boolean", "description": "Whether to include HiFi's fee in addition to custom rules, please contact HiFi support if you want to include HiFi's fee", "example": false }, "rules": { "type": "array", "items": { "$ref": "#/components/schemas/SettlementRule" }, "description": "Array of settlement rules", "minItems": 1 } }, "required": [ "requestId", "chain", "includeHIFIFee", "rules" ] }, "UpdateSettlementRule": { "type": "object", "title": "Update Settlement Rule", "properties": { "requestId": { "type": "string", "description": "Unique identifier for the request (recommend using uuid v4)", "example": "{{$guid}}" }, "chain": { "type": "string", "enum": [ "BASE", "POLYGON", "ETHEREUM", "SOLANA" ], "description": "Blockchain network for the settlement rule", "example": "BASE" }, "includeHIFIFee": { "type": "boolean", "description": "Whether to include HiFi's fee in addition to custom rules", "example": false }, "rules": { "type": "array", "items": { "$ref": "#/components/schemas/SettlementRule" }, "description": "Array of settlement rules", "minItems": 1 } }, "required": [ "requestId", "chain", "includeHIFIFee", "rules" ] }, "SettlementRuleResponse": { "type": "object", "title": "Settlement Rule Response", "properties": { "id": { "type": "string", "description": "Unique identifier for the settlement rule", "example": "15c786fb-de7a-520c-a4b3-f312d4a122d2" }, "chain": { "type": "string", "enum": [ "BASE", "POLYGON", "ETHEREUM", "SOLANA" ], "description": "Blockchain network for the settlement rule", "example": "BASE" }, "includeHIFIFee": { "type": "boolean", "description": "Whether to include HiFi's fee in addition to custom rules, please contact HiFi support if you want to include HiFi's fee", "example": false }, "rules": { "type": "array", "items": { "$ref": "#/components/schemas/SettlementRule" }, "description": "Array of settlement rules" } }, "required": [ "id", "chain", "includeHIFIFee", "rules" ] }, "SettlementRuleListResponse": { "type": "object", "title": "Settlement Rule List Response", "properties": { "count": { "type": "integer", "description": "Total number of settlement rules" }, "rules": { "type": "array", "items": { "$ref": "#/components/schemas/SettlementRuleResponse" }, "description": "Array of settlement rules" }, "nextCursor": { "type": "string", "nullable": true, "description": "Cursor for pagination to the next page of results" } }, "required": [ "count", "rules" ] }, "DeleteSettlementRuleResponse": { "type": "object", "title": "Delete Settlement Rule Response", "properties": { "message": { "type": "string", "description": "Success message" } }, "required": [ "message" ] }, "ApplySettlementRuleResponse": { "type": "object", "title": "Apply Settlement Rule Response", "properties": { "message": { "type": "string", "description": "Success message" } }, "required": [ "message" ] }, "RemoveSettlementRuleResponse": { "type": "object", "title": "Remove Settlement Rule Response", "properties": { "message": { "type": "string", "description": "Success message" } }, "required": [ "message" ] }, "Unauthorized": { "type": "object", "properties": { "error": { "type": "string", "example": "Not authorized" } } }, "NotFound": { "type": "object", "properties": { "error": { "type": "string", "example": "Not Found" } } }, "InternalServerError": { "type": "object", "properties": { "error": { "type": "string", "example": "Unexpected error happened" } } }, "Pong": { "type": "object", "properties": { "message": { "type": "string", "example": "pong" } } }, "CreateMCAccountRecipient": { "type": "object", "properties": { "type": { "type": "string", "description": "Account holder type.\n", "enum": [ "individual", "business" ] }, "userId": { "type": "string", "description": "User ID." }, "bank": { "type": "object", "description": "Bank account details of the recipient.", "$ref": "#/components/schemas/MCAccountBank", "required": [ "currency", "accountName", "bankName", "accountType", "address" ] }, "recipient": { "type": "object", "description": "Recipient details.", "$ref": "#/components/schemas/MCAccountRecipient", "required": [ "type", "address", "phone", "email", "name" ] } }, "required": [ "type", "userId", "bank", "recipient" ] }, "MCAccountBank": { "type": "object", "properties": { "currency": { "type": "string", "description": "Bank account currency. See the full list of payout currencies and channels by region [here](https://docs.hifibridge.com/docs/payment-currencies-and-channels-by-region).\n" }, "accountName": { "type": "string", "description": "individual's name or business name." }, "accountNumber": { "type": "string", "description": "Bank account number. Required if `bank.iban` is not provided.\n" }, "routingNumber": { "type": "string", "description": "Routing number for local payment channels." }, "bankName": { "type": "string", "description": "Bank name in the local language." }, "bankCode": { "type": "string", "description": "Bank code." }, "accountType": { "type": "string", "description": "Account type.", "enum": [ "SAVINGS", "CHECKING", "STANDARD" ] }, "accountPurpose": { "type": "string", "description": "Purpose of the bank account" }, "accountHolder": { "type": "object", "description": "Account holder info", "$ref": "#/components/schemas/MCAccountBankAccountHolder" }, "branchName": { "type": "string", "description": "Name of the account opening branch." }, "branchCode": { "type": "string", "description": "Opening branch code/ interbank number." }, "ifscCode": { "type": "string", "description": "India bank code." }, "sortCode": { "type": "string", "description": "UK bank sort code (6 digits)." }, "address": { "type": "object", "description": "Bank branch address.", "$ref": "#/components/schemas/Address" }, "swiftCode": { "type": "string", "description": "SWIFT code. This field only supports 8 or 11 digits. Required for international payments or SEPA payments." }, "iban": { "type": "string", "description": "EU international bank account number. Required if `bank.accountNumber` is not provided." } } }, "MCAccountBankAccountHolder": { "type": "object", "properties": { "address": { "type": "object", "description": "account holder address as recorded by the bank", "$ref": "#/components/schemas/Address" }, "phone": { "type": "string", "description": "account holder phone number" }, "govIdType": { "type": "string", "description": "account holder government ID type.\n\nCertificate type:\n `00` = Chinese Mainland ID Card\n `01` = Chinese Mainland Residence Permit\n `02` = Passport\n `03` = Hong Kong, Macao and Taiwan ID Card\n `04` = Hong Kong, Macao and Taiwan Residence Permit\n `05` = Hong Kong, Macao and Taiwan Exit-Entry Permit\n `06` = Non-Chinese ID Card\n `07` = Non-Chinese Residence Permit\n" }, "govIdNumber": { "type": "string", "description": "account holder government ID number" } }, "required": [ "phone", "address", "govIdType", "govIdNumber" ] }, "MCAccountRecipient": { "type": "object", "properties": { "type": { "type": "string", "description": "type of recipient.\n\n `00` UBO (`bank.accountName` must match the user's KYC name)\n `10` Supplier other\n `11` Supplier procurement\n `12` Supplier logistics\n `13` Supplier advertising\n `14` Supplier warehousing\n `15` Supplier operation agent\n `16` Supplier freelancer\n `20` General other\n `21` General freelance\n `22` General employee\n `23` General platform user\n `24` General remittance\n" }, "address": { "type": "object", "description": "recipient address", "$ref": "#/components/schemas/Address" }, "phone": { "type": "string", "description": "recipient phone number" }, "email": { "type": "string", "description": "recipient email" }, "name": { "type": "string", "description": "recipient name" }, "nationality": { "type": "string", "description": "recipient nationality. Required when `recipient.type` is `24`." }, "occupation": { "type": "string", "description": "recipient occupation code. Required when `recipient.type` is `24`.\n[Here](https://docs.hifibridge.com/v2/docs/occupation-code) is the list of occupation codes.\n" }, "certificationType": { "type": "string", "description": "recipient certification type. Required when `recipient.type` is `24`.\n\nCertificate type:\n `00` = Chinese Mainland ID Card\n `01` = Chinese Mainland Residence Permit\n `02` = Passport\n `03` = Hong Kong, Macao and Taiwan ID Card\n `04` = Hong Kong, Macao and Taiwan Residence Permit\n `05` = Hong Kong, Macao and Taiwan Exit-Entry Permit\n `06` = Non-Chinese ID Card\n `07` = Non-Chinese Residence Permit\n" }, "certificationNumber": { "type": "string", "description": "recipient certification number. Required when `recipient.type` is `24`." }, "certificationFrontUrl": { "type": "string", "description": "recipient certification front URL. Required when `recipient.type` is `24`." }, "certificationBackUrl": { "type": "string", "description": "recipient certification back URL. Required when `recipient.type` is `24`." }, "certificationIssuanceDate": { "type": "string", "description": "recipient certification issuance date. Required when `recipient.type` is `24`." }, "certificationExpirationDate": { "type": "string", "description": "recipient certification expiration date. Required when `recipient.type` is `24`." }, "certificationIssuanceAuthority": { "type": "string", "description": "recipient certification issuance authority. Required when `recipient.type` is `24`." } } }, "UpdateMCAccountRecipient": { "type": "object", "properties": { "bank": { "type": "object", "description": "Bank account details to use when making payments.", "$ref": "#/components/schemas/MCAccountBank" }, "recipient": { "type": "object", "description": "Payment recipient details.", "$ref": "#/components/schemas/MCAccountRecipient" } } }, "CreateMCAccountTransfer": { "type": "object", "properties": { "requestId": { "type": "string", "format": "uuid", "description": "Unique identifier for the request (recommend using uuid v4)." }, "type": { "type": "string", "description": "type of transfer.\n\n`PAYOUT` = general payment\n`SUPPLIER` = non-CNY supplier payment \n`INTERNAL_TRANSFER` = internal transfer\n", "enum": [ "PAYOUT", "SUPPLIER", "INTERNAL_TRANSFER" ] }, "paymentMethod": { "type": "string", "description": "payment method. not required when `type` = `INTERNAL_TRANSFER`.\n", "enum": [ "CROSS-BORDER", "LOCAL" ] }, "paymentNetwork": { "type": "string", "description": "payment network. not required when `type` = `INTERNAL_TRANSFER`.\n\n**LOCAL:** ACH, FPS, RTGS, FedWire, Bpay, SEPA\n\n**CROSS-BORDER:** SWIFT\n", "enum": [ "ACH", "FPS", "RTGS", "FedWire", "Bpay", "SEPA", "SWIFT" ] }, "rateId": { "type": "string", "format": "uuid", "description": "Rate ID.\n\nRequired only when `source.currency` and `destination.currency` are different.\n" }, "source": { "type": "object", "description": "source info", "$ref": "#/components/schemas/MCAccountTransferSource" }, "destination": { "type": "object", "description": "destination info", "$ref": "#/components/schemas/MCAccountTransferDestination" }, "feeBearer": { "type": "string", "description": "fee bearer. When making transfer, you must confirm who will pay the transfer fees.\n\n`SHA` - The transfer fees are shared. The payer will pay the charges from HIFI. The recipient bears the charges of the intermediary banks and their bank, which will be deducted from the remittance amount, and your recipient will receive the remaining balance. (Only available for `CROSS-BORDER` `SWIFT` payouts)\n\n`OUR` - The payer pays all transfer fees in full before initiating the transfer. This means that the amount will be delivered to the recipient in full.\n\nFor LOCAL transfers, `OUR` is the only option.\n", "enum": [ "SHA", "OUR" ] }, "pobo": { "type": "boolean", "description": "Use pay on behalf of(POBO) service?\nIf `true`, the transfer will be made on behalf of the user's KYC name. Default is `false`.\n" }, "middleBankCode": { "type": "string", "description": "Intermediate bank Swift code.\n" }, "reference": { "type": "string", "description": "reference" }, "purpose": { "type": "string", "description": "payment purpose code. [Here](https://docs.hifibridge.com/docs/payment-purpose-code) is the list of payment purpose codes." }, "documents": { "type": "array", "description": "document URLs.\n\nWhen `purpose` = `3005`-Salary, you can upload Employment Contract + Proof of Overseas Residence.\nWhen the single transaction amount exceeds 50,000 USD, an additional Tax return Certification should be uploaded.\nWhen `purpose` = `3007`-Living expenses/Family support, you could upload Screenshot of Household Register + Proof of Overseas Residence.\n", "items": { "type": "object", "properties": { "url": { "type": "string", "description": "document URL" }, "description": { "type": "string", "description": "document description" } } } } }, "required": [ "requestId", "type", "source", "destination", "feeBearer", "purpose" ] }, "MCAccountTransferSource": { "type": "object", "properties": { "userId": { "type": "string", "description": "User ID. Funds will be deducted from this user.\n" }, "amount": { "type": "string", "description": "Transfer payment amount.\n\nEither `source.amount` or `destination.amount` must be provided, but not both. \nIf `source.amount` is provided, the `destination.amount` will be calculated based on the `source.amount` and the exchange rate (if the `source.currency` and `destination.currency` are different).\n" }, "currency": { "type": "string", "description": "Transfer payment currency. See the full list of collection currencies by bank location [here](https://docs.hifibridge.com/v2/docs/currencies-by-bank-location).\n" } }, "required": [ "userId", "currency" ] }, "MCAccountTransferDestination": { "type": "object", "properties": { "userId": { "type": "string", "description": "User ID.\n\nEither `destination.userId` or `destination.recipientId` must be provided, but not both. \n`destination.userId` must be provided if the transfer `type` is `INTERNAL_TRANSFER`.\n" }, "recipientId": { "type": "string", "description": "Recipient ID returned by the Create a transfer recipient endpoint.\n\nEither `destination.userId` or `destination.recipientId` must be provided, but not both. \n`destination.recipientId` must be provided if the transfer `type` is not `INTERNAL_TRANSFER`.\n" }, "amount": { "type": "string", "description": "Destination recieved amount.\n\nEither `source.amount` or `destination.amount` must be provided, but not both. \nIf `destination.amount` is provided, the `source.amount` will be calculated based on the `destination.amount` and the exchange rate (if the `source.currency` and `destination.currency` are different).\n" }, "currency": { "type": "string", "description": "Destination recieving currency. See the full list of payout currencies and channels by region [here](https://docs.hifibridge.com/docs/payment-currencies-and-channels-by-region).\n" } }, "required": [ "currency" ] }, "MCAccountRecipientObject": { "type": "object", "properties": { "id": { "type": "string", "description": "Recipient ID." }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time when the recipient was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "The date and time when the recipient was last updated." }, "status": { "type": "string", "description": "Recipient KYC status:\n `CREATED`: recipient kyc application created \n `NOT_INITIATED`: recipient kyc application not initiated\n `PENDING`: recipient kyc application submitted and in process\n `AVAILABLE`: recipient kyc application approved and available for payout\n `DECLINED`: recipient kyc application declined\n", "enum": [ "CREATED", "NOT_INITIATED", "PENDING", "AVAILABLE", "DECLINED" ] }, "rejectionReasons": { "type": "string", "description": "Rejection reasons." }, "failedReason": { "type": "string", "description": "Failed reason." }, "userId": { "type": "string", "description": "User ID." }, "type": { "type": "string", "description": "Recipient type.", "enum": [ "individual", "business" ] }, "recipient": { "type": "object", "description": "recipient info", "$ref": "#/components/schemas/MCAccountRecipient" }, "bank": { "type": "object", "description": "bank info", "$ref": "#/components/schemas/MCAccountBank" } } }, "CreateMCAccountRecipientObject": { "type": "object", "$ref": "#/components/schemas/MCAccountRecipientObject", "example": { "id": "8beb7440-cedf-480d-b3da-14cead47b132", "createdAt": "2025-02-17T22:46:49.756131+00:00", "updatedAt": "2025-02-17T22:46:53.466+00:00", "status": "CREATED", "rejectionReasons": null, "failedReason": null, "userId": "0e965562-047c-43ae-9481-fd894f7e6706", "type": "individual", "recipient": { "type": "10", "name": "John Doe", "phone": "+185744112934", "email": "johndoe@gmail.com", "address": { "city": "New York", "country": "USA", "postalCode": "10001", "addressLine1": "Example St 1.", "stateProvinceRegion": "NY" }, "nationality": "USA", "occupation": null, "certificationType": null, "certificationNumber": null, "certificationFrontUrl": null, "certificationBackUrl": null, "certificationIssuanceAuth": null, "certificationIssuanceDate": null, "certificationExpirationDate": null }, "bank": { "currency": "USD", "accountName": "John Doe", "accountNumber": "10911234321", "routingNumber": "026009593", "bankName": "Bank of America", "bankCode": null, "accountType": "CHECKING", "accountPurpose": null, "accountHolder": { "phone": null, "address": null, "govIdType": null, "govIdNumber": null }, "branchName": null, "branchCode": null, "ifscCode": null, "sortCode": null, "address": { "city": "New York", "country": "USA", "postalCode": "10001", "addressLine1": "Example St 1.", "stateProvinceRegion": "NY" }, "swiftCode": "BOFAUS6NXXX", "iban": null } } }, "GetMCAccountRecipientObject": { "type": "object", "$ref": "#/components/schemas/MCAccountRecipientObject", "example": { "id": "8beb7440-cedf-480d-b3da-14cead47b132", "createdAt": "2025-02-17T22:46:49.756131+00:00", "updatedAt": "2025-02-17T22:46:53.466+00:00", "status": "AVAILABLE", "rejectionReasons": null, "failedReason": null, "userId": "0e965562-047c-43ae-9481-fd894f7e6706", "type": "individual", "recipient": { "type": "10", "name": "John Doe", "phone": "+185744112934", "email": "johndoe@gmail.com", "address": { "city": "New York", "country": "USA", "postalCode": "10001", "addressLine1": "Example St 1.", "stateProvinceRegion": "NY" }, "nationality": "USA", "occupation": null, "certificationType": null, "certificationNumber": null, "certificationFrontUrl": null, "certificationBackUrl": null, "certificationIssuanceAuth": null, "certificationIssuanceDate": null, "certificationExpirationDate": null }, "bank": { "currency": "USD", "accountName": "John Doe", "accountNumber": "10911234321", "routingNumber": "026009593", "bankName": "Bank of America", "bankCode": null, "accountType": "CHECKING", "accountPurpose": null, "accountHolder": { "phone": null, "address": null, "govIdType": null, "govIdNumber": null }, "branchName": null, "branchCode": null, "ifscCode": null, "sortCode": null, "address": { "city": "New York", "country": "USA", "postalCode": "10001", "addressLine1": "Example St 1.", "stateProvinceRegion": "NY" }, "swiftCode": "BOFAUS6NXXX", "iban": null } } }, "GetMCAccountRecipientListObject": { "type": "object", "properties": { "count": { "type": "number", "description": "number of recipients" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/MCAccountRecipientObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } }, "example": { "count": 1, "data": [ { "id": "8beb7440-cedf-480d-b3da-14cead47b132", "createdAt": "2025-02-17T22:46:49.756131+00:00", "updatedAt": "2025-02-17T22:46:53.466+00:00", "status": "AVAILABLE", "rejectionReasons": null, "failedReason": null, "userId": "0e965562-047c-43ae-9481-fd894f7e6706", "type": "individual", "recipient": { "type": "10", "name": "John Doe", "phone": "+185744112934", "email": "johndoe@gmail.com", "address": { "city": "New York", "country": "USA", "postalCode": "10001", "addressLine1": "Example St 1.", "stateProvinceRegion": "NY" }, "nationality": "USA", "occupation": null, "certificationType": null, "certificationNumber": null, "certificationFrontUrl": null, "certificationBackUrl": null, "certificationIssuanceAuth": null, "certificationIssuanceDate": null, "certificationExpirationDate": null }, "bank": { "currency": "USD", "accountName": "John Doe", "accountNumber": "10911234321", "routingNumber": "026009593", "bankName": "Bank of America", "bankCode": null, "accountType": "CHECKING", "accountPurpose": null, "accountHolder": { "phone": null, "address": null, "govIdType": null, "govIdNumber": null }, "branchName": null, "branchCode": null, "ifscCode": null, "sortCode": null, "address": { "city": "New York", "country": "USA", "postalCode": "10001", "addressLine1": "Example St 1.", "stateProvinceRegion": "NY" }, "swiftCode": "BOFAUS6NXXX", "iban": null } } ], "nextCursor": "2025-02-17T22:46:49.756131+00:00" } }, "MCAccountTransferObject": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Transfer ID." }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time when the transfer was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "The date and time when the transfer was last updated." }, "requestId": { "type": "string", "format": "uuid", "description": "Request ID." }, "type": { "type": "string", "description": "Transfer type." }, "status": { "type": "string", "description": "Transfer status.\n `CREATED`: order created\n `NOT_INITIATED`: order not initiated\n `INITIATED`: order initiated and to be processed\n `PENDING`: order processing and under review\n `COMPLETED`: order completed (payment has been accepted by the payment scheme and is on its way to the beneficiary bank.)\n `FAILED`: order failed\n `REFUNDED`: order refunded\n", "enum": [ "CREATED", "NOT_INITIATED", "INITIATED", "PENDING", "COMPLETED", "FAILED", "REFUNDED" ] }, "description": { "type": "string", "description": "Transfer description." }, "paymentMethod": { "type": "string", "description": "Payment method." }, "paymentNetwork": { "type": "string", "description": "Payment network." }, "source": { "type": "object", "description": "source info", "$ref": "#/components/schemas/MCAccountTransferSource" }, "destination": { "type": "object", "description": "destination info", "$ref": "#/components/schemas/MCAccountTransferDestination" }, "fee": { "type": "object", "description": "fee info", "properties": { "amount": { "type": "string", "description": "fee amount" }, "currency": { "type": "string", "description": "fee currency" } } }, "rate": { "type": "number", "description": "FX rate." }, "reference": { "type": "string", "description": "Reference." }, "feeBearer": { "type": "string", "description": "fee bearer." }, "purpose": { "type": "string", "description": "Transfer purpose." }, "pobo": { "type": "boolean", "description": "Use pay on behalf(POBO) service?" }, "gpi": { "type": "object", "description": "GPI info", "$ref": "#/components/schemas/MCAccountTransferGPI" }, "refund": { "type": "object", "description": "Refund info", "properties": { "amount": { "type": "number", "description": "Refund amount." }, "currency": { "type": "string", "description": "Refund currency." }, "reason": { "type": "string", "description": "Refund reason." } } }, "failedReason": { "type": "string", "description": "Failed reason." }, "remark": { "type": "string", "description": "Remark." } }, "example": { "id": "df939a40-e056-4830-b8c8-6f16a1e5424b", "createdAt": "2023-10-01T00:00:00Z", "updatedAt": "2023-10-01T00:00:00Z", "requestId": "8c617cb9-e0f4-4b78-869d-9551ec631fef", "type": "PAYOUT", "status": "CREATED", "description": null, "paymentMethod": "CROSS-BORDER", "paymentNetwork": "SWIFT", "source": { "userId": "3d34b0f1-7ba2-455f-bd63-8f2018567c80", "amount": 10.95, "currency": "EUR" }, "destination": { "amount": 10.47, "currency": "USD", "userId": null, "recipientId": "ef1b7cff-a5c0-495e-8774-2a8a93b9963e" }, "fee": { "amount": 1, "currency": "USD" }, "rateId": "06d17471-6a92-442c-87a1-dc2993aa0d8d", "reference": null, "feeBearer": "OUR", "purpose": "1001", "pobo": true, "refund": null, "failedReason": null, "remark": null, "gpi": null } }, "MCAccountTransferListObject": { "type": "object", "properties": { "count": { "type": "number", "description": "number of transfers" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/MCAccountTransferObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } }, "example": { "count": 1, "data": [ { "id": "df939a40-e056-4830-b8c8-6f16a1e5424b", "createdAt": "2023-10-01T00:00:00Z", "updatedAt": "2023-10-01T00:00:00Z", "requestId": "8c617cb9-e0f4-4b78-869d-9551ec631fef", "type": "PAYOUT", "status": "PENDING", "description": null, "paymentMethod": "CROSS-BORDER", "paymentNetwork": "SWIFT", "source": { "userId": "3d34b0f1-7ba2-455f-bd63-8f2018567c80", "amount": 10.95, "currency": "EUR" }, "destination": { "amount": 10.47, "currency": "USD", "userId": null, "recipientId": "ef1b7cff-a5c0-495e-8774-2a8a93b9963e" }, "fee": { "amount": 1, "currency": "USD" }, "rateId": "06d17471-6a92-442c-87a1-dc2993aa0d8d", "reference": null, "feeBearer": "OUR", "purpose": "1001", "pobo": true, "refund": null, "failedReason": null, "remark": null, "gpi": null } ], "nextCursor": "2023-10-01T00:00:00Z" } }, "MCAccountTransferGPI": { "type": "object", "properties": { "createdAt": { "type": "string", "format": "date-time", "description": "creation date" }, "updatedAt": { "type": "string", "format": "date-time", "description": "update date" }, "gpiId": { "type": "string", "description": "GPI ID" }, "uetrCode": { "type": "string", "description": "UETR code" }, "status": { "type": "string", "description": "GPI status", "enum": [ "PENDING", "PROCESSING", "SUCCESS", "REJECTED" ] }, "bankReference": { "type": "string", "description": "bank reference" }, "confirmedAmount": { "type": "string", "description": "confirmed amount" }, "confirmedCurrency": { "type": "string", "description": "confirmed currency" }, "instructedAmount": { "type": "string", "description": "instructed amount" }, "instructedCurrency": { "type": "string", "description": "instructed currency" }, "payee": { "type": "object", "description": "payee info", "$ref": "#/components/schemas/MCAccountGPIPayee" }, "payer": { "type": "object", "description": "payer info", "$ref": "#/components/schemas/MCAccountGPIPayer" }, "middleBankInfo": { "type": "array", "items": { "$ref": "#/components/schemas/MCAccountGPIMiddleBankInfo" } } } }, "MCAccountGPIPayee": { "type": "object", "properties": { "name": { "type": "string", "description": "payee name" }, "address": { "type": "object", "description": "payee address", "$ref": "#/components/schemas/Address" }, "account": { "type": "string", "description": "payee account" }, "bank": { "type": "string", "description": "payee bank" }, "bic": { "type": "string", "description": "payee BIC" } } }, "MCAccountGPIPayer": { "type": "object", "properties": { "name": { "type": "string", "description": "payer name" }, "bank": { "type": "string", "description": "payer bank" } } }, "MCAccountGPIMiddleBankInfo": { "type": "object", "properties": { "chargeCode": { "type": "string", "description": "charge code" }, "serialNumber": { "type": "string", "description": "serial number" }, "processedAt": { "type": "string", "format": "date-time", "description": "processed date" }, "bankName": { "type": "string", "description": "bank name" }, "bankNameAbbrev": { "type": "string", "description": "bank name abbreviation" }, "swiftCode": { "type": "string", "description": "SWIFT code" }, "address": { "type": "object", "description": "bank address", "properties": { "addressLine1": { "type": "string", "description": "address line 1" }, "addressLine2": { "type": "string", "description": "address line 2" }, "addressLine3": { "type": "string", "description": "address line 3" }, "city": { "type": "string", "description": "city" }, "country": { "type": "string", "description": "country" } } } } }, "FileUpload": { "type": "object", "properties": { "file": { "type": "string", "format": "binary" } }, "required": [ "file" ] }, "FileUploadResult": { "type": "object", "properties": { "id": { "type": "string", "description": "File ID" }, "createdAt": { "type": "string", "format": "date-time", "description": "The time the file was uploaded" }, "fileName": { "type": "string", "description": "The name of the uploaded file" }, "size": { "type": "integer", "description": "The size of the uploaded file in bytes" }, "mimeType": { "type": "string", "description": "The MIME type of the uploaded file" } }, "example": { "id": "file_zEFpbPhk71NaQfEVMR544", "createdAt": "2023-10-01T12:00:00Z", "fileName": "document.pdf", "size": 204800, "mimeType": "application/pdf" } }, "GetForexRate": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "description": "user ID." }, "source": { "type": "object", "description": "source", "$ref": "#/components/schemas/GetForexRateSource" }, "destination": { "type": "object", "description": "source", "$ref": "#/components/schemas/GetForexRateDestination" } }, "required": [ "userId", "source", "destination" ] }, "GetForexRateSource": { "type": "object", "properties": { "currency": { "type": "string", "description": "source currency" }, "amount": { "type": "number", "description": "source amount. \n\nEither `source.amount` or `destination.amount` must be provided, but not both. \nIf `source.amount` is provided, the `destination.amount` will be calculated based on the `source.amount` and the exchange rate.\n" } }, "required": [ "currency" ] }, "GetForexRateDestination": { "type": "object", "properties": { "currency": { "type": "string", "description": "destination currency" }, "amount": { "type": "number", "description": "destination amount. \n\nEither `source.amount` or `destination.amount` must be provided, but not both. \nIf `destination.amount` is provided, the `source.amount` will be calculated based on the `destination.amount` and the exchange rate.\n" } }, "required": [ "currency" ] }, "CreateForexOrder": { "type": "object", "properties": { "requestId": { "type": "string", "format": "uuid", "description": "Unique identifier for the request (recommend using uuid v4)." }, "userId": { "type": "string", "format": "uuid", "description": "User ID." }, "rateId": { "type": "string", "format": "uuid", "description": "exchange rate ID." }, "source": { "type": "object", "description": "source", "$ref": "#/components/schemas/CreateForexSource" }, "destination": { "type": "object", "description": "destination", "$ref": "#/components/schemas/CreateForexDestination" }, "reference": { "type": "string", "description": "Reference information." } }, "required": [ "requestId", "userId", "rateId", "source", "destination" ] }, "CreateForexSource": { "type": "object", "properties": { "currency": { "type": "string", "description": "source currency.\n" }, "amount": { "type": "number", "description": "source amount. \n\nEither `source.amount` or `destination.amount` must be provided, but not both. \nIf `source.amount` is provided, the `destination.amount` will be calculated based on the `source.amount` and the exchange rate.\n" } }, "required": [ "currency" ] }, "CreateForexDestination": { "type": "object", "properties": { "currency": { "type": "string", "description": "destination currency.\n" }, "amount": { "type": "number", "description": "destination amount. \n\nEither `source.amount` or `destination.amount` must be provided, but not both. \nIf `destination.amount` is provided, the `source.amount` will be calculated based on the `destination.amount` and the exchange rate.\n" } }, "required": [ "currency" ] }, "ForexRateObject": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Rate ID." }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time when the currency exchange rate was created." }, "userId": { "type": "string", "format": "uuid", "description": "User ID." }, "source": { "type": "object", "description": "source", "properties": { "currency": { "type": "string", "description": "Source currency." }, "amount": { "type": "number", "description": "Source amount." } } }, "destination": { "type": "object", "description": "destination", "properties": { "currency": { "type": "string", "description": "Destination currency." }, "amount": { "type": "number", "description": "Destination amount." } } }, "rate": { "type": "number", "description": "Exchange rate." }, "expiresAt": { "type": "string", "format": "date-time", "description": "The expiration date and time of the exchange rate." } }, "example": { "id": "8351ef38-ad25-4535-944f-7f1eabf33be7", "createdAt": "2023-10-01T00:00:00Z", "userId": "123e4567-e89b-12d3-a456-426614174001", "source": { "currency": "USD", "amount": 10 }, "destination": { "currency": "EUR", "amount": 9.62 }, "rate": 0.96189, "expiresAt": "2025-02-01T04:33:26.557+00:00" } }, "ForexOrderObject": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Currency exchange order ID." }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time when the currency exchange order was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "The date and time when the currency exchange order was last updated." }, "requestId": { "type": "string", "format": "uuid", "description": "Request ID." }, "userId": { "type": "string", "format": "uuid", "description": "User ID." }, "rate": { "type": "number", "description": "FX rate." }, "source": { "type": "object", "description": "source", "properties": { "currency": { "type": "string", "description": "Source currency." }, "amount": { "type": "number", "description": "Source amount." } } }, "destination": { "type": "object", "description": "destination", "properties": { "currency": { "type": "string", "description": "Destination currency." }, "amount": { "type": "number", "description": "Destination amount." } } }, "reference": { "type": "string", "description": "Reference." }, "status": { "type": "string", "description": "FX order status:\n `CREATED`: FX order created\n `NOT_INITIATED`: FX order not initiated\n `PENDING`: FX order processing\n `COMPLETED`: FX order completed\n `FAILED`: FX order failed\n", "enum": [ "CREATED", "NOT_INITIATED", "PENDING", "COMPLETED", "FAILED" ] }, "failedReason": { "type": "string", "description": "Failed reason." } }, "example": { "id": "8351ef38-ad25-4535-944f-7f1eabf33be7", "createdAt": "2025-02-25T19:29:34.457154+00:00", "updatedAt": "2025-02-25T20:04:00.173+00:00", "requestId": "8351ef38-ad25-4535-944f-7f1eabf33be7", "userId": "123e4567-e89b-12d3-a456-426614174001", "rate": 0.94946, "source": { "currency": "USD", "amount": 1 }, "destination": { "currency": "EUR", "amount": 0.95 }, "reference": null, "status": "COMPLETED", "failedReason": "" } }, "ForexOrderListObject": { "type": "object", "properties": { "count": { "type": "integer", "description": "The total number of currency exchange orders." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ForexOrderObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } }, "example": { "count": 1, "data": [ { "id": "8351ef38-ad25-4535-944f-7f1eabf33be7", "createdAt": "2025-02-25T19:29:34.457+00:00", "updatedAt": "2025-02-25T20:04:00.173+00:00", "requestId": "8351ef38-ad25-4535-944f-7f1eabf33be7", "userId": "123e4567-e89b-12d3-a456-426614174001", "rate": 0.94946, "source": { "currency": "USD", "amount": 1 }, "destination": { "currency": "EUR", "amount": 0.95 }, "reference": null, "status": "COMPLETED", "failedReason": "" } ], "nextCursor": "2025-02-25T19:29:34.457+00:00" } }, "RailsEnum": { "type": "string", "description": "The type of rail.", "enum": [ "USD", "SOUTH_AMERICA_STANDARD", "AFRICA_GENERAL", "AFRICA_NIGERIA", "GLOBAL_NETWORK" ] }, "KycStatusEnum": { "type": "string", "enum": [ "INACTIVE", "CREATED", "PENDING", "INCOMPLETE", "RFI_PENDING", "ACTIVE", "REJECTED", "CONTACT_SUPPORT" ], "description": "Kyc Status\n- `INACTIVE`: No KYC submission has been made.\n- `CREATED`: KYC application has been submitted.\n- `PENDING`: Review in progress.\n- `RFI_PENDING`: An RFI (Request for Information) email has been sent and is pending user response.\n- `INCOMPLETE`: RFI or resubmission required.\n- `ACTIVE`: User approved and onboarded.\n- `REJECTED`: KYC application rejected.\n- `CONTACT_SUPPORT`: Unexpected issue encountered during KYC review.\n" }, "IndividualKycUpdate": { "type": "object", "title": "Update Individual User KYC", "properties": { "firstName": { "type": "string" }, "firstNameLocal": { "type": "string", "description": "first name in local language." }, "middleName": { "type": "string" }, "middleNameLocal": { "type": "string", "description": "middle name in local language." }, "lastName": { "type": "string" }, "lastNameLocal": { "type": "string", "description": "last name in local language." }, "nationality": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "email": { "type": "string", "description": "E-mail address for compliance-related communications.", "format": "email" }, "phone": { "type": "string", "description": "Phone number in E.164 format \"+12223334444\"." }, "address": { "type": "object", "description": "Address of the user.", "$ref": "#/components/schemas/Address" }, "dateOfBirth": { "type": "string", "format": "date", "description": "Date of birth in format yyyy-mm-dd." }, "countryOfBirth": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "stateOfBirth": { "type": "string", "description": "The state, region, district, county or another territorial entity of birth inside a country, if applicable." }, "placeOfBirth": { "type": "string", "description": "User place of birth. This can be a city, a town or another settlement type." }, "gender": { "type": "string", "enum": [ "M", "F" ] }, "country": { "type": "string", "description": "User country. This is usually a country of the last uploaded ID document, and it may differ from the country of birth. \nThree-letter alpha-3 country code as defined in the ISO 3166-1 spec.\n" }, "taxIdentificationNumber": { "type": "string", "description": "Taxpayer identification number that is unique to each taxpayer.\nFor individual US customers, SSN should be used. \nFor business US customers, EIN should be used.\n" }, "taxResidenceCountry": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "ipAddress": { "type": "string", "description": "IP address of the user. \n\n(See [here](https://docs.hifibridge.com/docs/compliance/regions) for the list of unsupported countries/states.)\n", "format": "ipv4" }, "govIdType": { "type": "string", "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ] }, "govIdFrontUrl": { "type": "string", "description": "URL or Base64 encoded string of the front of the user's government issued ID.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "govIdBackUrl": { "type": "string", "description": "URL or Base64 encoded string of the back of the user's government issued ID.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "govIdCountry": { "type": "string", "description": "Alpha-3 country code of the provided government id as defined in the ISO 3166-1 spec. Note that the government ID may be different from the 'country' above.\n" }, "govIdNumber": { "type": "string" }, "govIdIssuanceDate": { "type": "string", "format": "date", "description": "The issue date of the Gov ID document in format yyyy-mm-dd." }, "govIdExpirationDate": { "type": "string", "format": "date", "description": "The expiry date of the Gov ID document in format yyyy-mm-dd.\n" }, "govIdIssuanceAuthority": { "type": "string", "description": "Issuing authority of the Gov ID document." }, "govIdHandHoldUrl": { "type": "string", "description": "URL or Base64 encoded string of image of the user holding their government issued ID next to their face.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "proofOfAddressType": { "type": "string", "enum": [ "UTILITY_BILL", "BANK_STATEMENT", "RENTAL_AGREEMENT", "TAX_DOCUMENT" ] }, "proofOfAddressUrl": { "type": "string", "description": "URL or Base64 encoded string of the file of the proof of address.\n\n(See [here](https://docs.hifibridge.com/docs/compliance/regions) for the list of unsupported countries/states.)\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "sofEuQuestionnaire": { "type": "object", "title": "Source of Funds and Expected Use Questionnaire", "description": "Source of Funds and Expected Use Questionnaire", "$ref": "#/components/schemas/SofEuKycQuestionnaire" }, "idType": { "type": "string", "enum": [ "PASSPORT", "ID_CARD", "DRIVERS", "NIN" ] }, "idNumber": { "type": "string" }, "additionalIdType": { "type": "string", "description": "Required only for \"AFRICA_NIGERIA\" rail and must be \"BVN\" type:\n" }, "additionalIdNumber": { "type": "string", "description": "Required only for \"AFRICA_NIGERIA\" rail and must be the BVN number.\n" }, "purpose": { "type": "array", "description": "The purposes for unlocking this rail. Multiple values can be put into an array. Only required for `MULTI_CURRENCY_ACCOUNT` rail. \n\nLook up the purpose code [here](https://docs.hifibridge.com/docs/compliance/references/account-purposes).\n" }, "productServiceCategory": { "type": "string", "description": "The category of the product or service the user is in. Only required for `MULTI_CURRENCY_ACCOUNT` rail.\n\nLook up the product and service category code [here](https://docs.hifibridge.com/docs/compliance/references/product-service-categories).\n" }, "supplementaryInfo": { "type": "string", "description": "This field allows the inclusion of additional textual information or context that may be relevant to the KYC process.\n" }, "supplementaryUrl": { "type": "string", "description": "This field is designed to contain supplementary documents or files that can be uploaded as part of the KYC process.\n\nURL or Base64 encoded string of the file of the supplementary information.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" } } }, "BusinessKycUpdate": { "type": "object", "title": "Update Business User KYC", "properties": { "businessName": { "type": "string", "description": "The full legal name of the business." }, "businessNameLocal": { "type": "string", "description": "The full legal name of the business in the local language.\n" }, "alternativeNames": { "type": "array", "description": "Alternative names of the business.", "items": { "type": "string" } }, "businessDescription": { "type": "string" }, "businessIndustry": { "type": "string", "description": "The industry in which this business operates. Click [here](https://docs.hifibridge.com/docs/compliance/references/business-industries) for the complete list of valid industries and codes." }, "businessType": { "type": "string", "description": "The type of business structure that most closely matches the business customer.", "enum": [ "cooperative", "s_corporation", "b_corporation", "c_corporation", "close_corporation", "nonprofit_corporation", "general_partnership", "limited_partnership", "limited_liability_company", "other", "sole_proprietorship", "trust" ] }, "email": { "type": "string", "description": "Email address for compliance-related communications.", "format": "email" }, "phone": { "type": "string", "description": "Phone number in E.164 format \"+12223334444\"." }, "taxIdentificationNumberType": { "type": "string", "description": "Company tax id type", "enum": [ "EIN", "SSN", "VAT", "TIN", "UTR" ] }, "taxIdentificationNumber": { "type": "string", "description": "Company tax number. US businesses should provide EIN." }, "registrationNumber": { "type": "string", "description": "Business Registration Number." }, "leiNumber": { "type": "string", "description": "Legal Entity Identifier (LEI) is a 20-character alphanumeric code that uniquely identifies a legal entity participating in financial transactions.\nLEI is required for businesses based in the European Economic Area (EEA) and Switzerland.\n" }, "formationDate": { "type": "string", "description": "Company formation date.", "format": "date" }, "incorporationDate": { "type": "string", "format": "date", "description": "Date of incorporation in format yyyy-mm-dd." }, "incorporationCountry": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "incorporationState": { "type": "string" }, "website": { "type": "string" }, "address": { "type": "object", "description": "Company office address.", "$ref": "#/components/schemas/Address" }, "registeredAddress": { "type": "object", "description": "The official registered office address of the business as filed with the relevant authority.", "$ref": "#/components/schemas/Address" }, "postalAddress": { "type": "object", "description": "Business postal address.", "$ref": "#/components/schemas/Address" }, "ipAddress": { "type": "string", "description": "IP address of the user.\n\n(See [here](https://docs.hifibridge.com/docs/compliance/regions) for the list of unsupported countries/states.)\n", "format": "ipv4" }, "sourceOfFunds": { "type": "string", "description": "The source of funds for the business, e.g. profits, income, venture capital, etc." }, "transmitsCustomerFunds": { "type": "boolean", "description": "True if the business transmits funds on behalf of its customers." }, "complianceScreeningExplanation": { "type": "string", "description": "Required if transmitsCustomerFunds is true. An explanation of types of compliance screening (KYC, KYB, or AML) the customer performs before transmitting funds on behalf of its customers.\n" }, "daoStatus": { "type": "boolean", "description": "Whether the business is a DAO (Decentralized Autonomous Organization)" }, "proofOfAddressType": { "type": "string", "enum": [ "UTILITY_BILL", "BANK_STATEMENT", "RENTAL_AGREEMENT", "TAX_DOCUMENT" ] }, "proofOfAddressUrl": { "type": "string", "description": "URL or Base64 encoded string of the proof of address that ties the owner's name to the provided address. Typically a utility bill or bank statement.\nRequired for businesses registered or operating in the EEA (European Economic Area).\nUtility bills and bank statements are recommended for proof of address.\n\n(See [here](https://docs.hifibridge.com/docs/compliance/regions) for the list of unsupported countries/states.)\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "formationDocUrl": { "type": "string", "description": "URL or Base64 encoded string of the formation documentation. \n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "proofOfOwnershipUrl": { "type": "string", "description": "URL or Base64 encoded string of the ownership documentation.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "certificateOfRegistrationDocType": { "type": "string", "description": "Type of the certificate of registration doc.", "enum": [ "ACRA", "GST", "MSME", "CERTIFICATE_OF_REGISTRATION" ] }, "certificateOfRegistrationDocUrl": { "type": "string", "description": "URL or Base64 encoded string of the certificate of registration.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "certificateNumber": { "type": "string", "description": "A unique number that identifies the business. This is usually the number shown on the certificate of registration.\n" }, "businessRegistrationDocUrl": { "type": "string", "description": "URL or Base64 encoded string of the business registration document. For business based in HKG only.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "licenseExpirationDate": { "type": "string", "format": "date", "description": "Expiry date of company license in format yyyy-mm-dd." }, "certificateOfIncorporationDocUrl": { "type": "string", "description": "URL or Base64 encoded string of the certificate of incorporation. For business based in HKG only.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "incorporationNumber": { "type": "string", "description": "Certificate of Incorporation Number." }, "controlScheme": { "type": "string" }, "shareStructureUrl": { "type": "string", "description": "URL or Base64 encoded string of of the shareholder structure file.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "constitutionOrAnnualReportUrl": { "type": "string", "description": "URL or Base64 encoded string of the company constitution or annual report\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "articlesOfAssociationUrl": { "type": "string", "description": "URL or Base64 encoded string of the articles of association.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "uboDeclarationUrl": { "type": "string", "description": "URL or Base64 encoded string of the UBO (Ultimate Beneficial Owner) declaration.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "partnershipMinsOfMeetingUrl": { "type": "string", "description": "URL or Base64 encoded string of the Partnership Meeting Minutes. For PARTNERSHIP business only.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "partnershipDeedUrl": { "type": "string", "description": "URL of the Partnership Agreement. For PARTNERSHIP business only.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "certificateOfIncumbencyUrl": { "type": "string", "description": "URL or Base64 encoded string of the Certificate of Incumbency.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "organizationStructureUrl": { "type": "string", "description": "URL or Base64 encoded string of the Organization Structure.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "sourceOfFundsUrl": { "type": "string", "description": "URL or Base64 encoded string of the source of fund document.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "flowOfFundsUrl": { "type": "string", "description": "URL or Base64 encoded string of the flow of funds document.\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "purpose": { "type": "array", "description": "The purposes for unlocking this rail. Multiple values can be put into an array. Only required for `MULTI_CURRENCY_ACCOUNT` rail. \n\nLook up the purpose code [here](https://docs.hifibridge.com/docs/compliance/references/account-purposes).\n", "items": { "type": "string", "enum": [ "PAY_SUPPLIERS", "PAY_SERVICE_PROVIDERS", "GOODS_MERCHANDISE_COMMODITIES", "FREELANCERS_CONTRACTORS_PAYROLL", "FINANCIAL_SERVICES_LOANS_INVESTMENTS", "TAX_REGULATORY_FEES", "LEGAL_SERVICES", "OPERATIONAL_EXPENSES", "SUBSCRIPTIONS", "TRAVEL_RELATED_EXPENSES", "INSURANCE", "ADVERTISING_MARKETING_EXPENSES", "EQUIPMENT_MACHINERY", "TECHNOLOGY_SERVICES", "EDUCATION_RELATED_EXPENSES", "TREASURY_PAYMENTS", "FX_SERVICES", "OTHER", "ONLINE_MARKETPLACE_TRADING", "OFFLINE_TRADING" ] } }, "productServiceCategory": { "type": "string", "description": "The category of the product or service the user is in. \n\nLook up the product and service category code [here](https://docs.hifibridge.com/docs/compliance/references/product-service-categories).\n" }, "tradeName": { "type": "string", "description": "Enterprise trading name. This information is only required if the customer’s business `purpose` includes `OFFLINE`.\n" }, "exportCountry": { "type": "string", "description": "Export country. This information is only required if the customer’s business `purpose` includes `OFFLINE`.\n" }, "tradeType": { "type": "string", "description": "Trade type. This information is only required if the customer’s business `purpose` includes `OFFLINE`.\nLook up export item category codes [here](https://docs.hifibridge.com/docs/compliance/references/export-categories).\n" }, "supplementaryInfo": { "type": "string", "description": "This field allows the inclusion of additional textual information or context that may be relevant to the KYC process.\n" }, "supplementaryUrl": { "type": "string", "description": "This field is designed to contain supplementary documents or files that can be uploaded as part of the KYC process.\n\nURL or Base64 encoded string of the file of the supplementary information.\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "sofEuQuestionnaire": { "type": "object", "title": "Source of Funds and Expected Use Questionnaire", "description": "Source of Funds and Expected Use Questionnaire", "$ref": "#/components/schemas/SofEuKybQuestionnaire" }, "ultimateBeneficialOwners": { "type": "array", "description": "List of ultimate beneficial owners (UBOs) of the business. This list will replace any existing UBOs.\n\nNote: This field is deprecated and will be removed in the future. To add or update a specific UBO, please use the UBO-specific endpoints instead.\n", "deprecated": true, "items": { "$ref": "#/components/schemas/UltimateBeneficialOwner" } } } }, "UltimateBeneficialOwner": { "type": "object", "properties": { "role": { "type": "string", "deprecated": true, "description": "The role of the ubo in the business.", "enum": [ "OWNER_OR_OPERATOR", "PARTNER", "UBO", "DIRECTOR_CONTROL_PERSON_OR_LEGAL_REP", "AGENT_OR_AUTHORISED_PERSON" ] }, "roles": { "type": "array", "description": "The roles of the ubo in the business.", "items": { "type": "string", "enum": [ "UBO", "DIRECTOR", "REPRESENTATIVE", "SHAREHOLDER" ] } }, "businessTitle": { "type": "string", "description": "Agent or authorised person‘s job title." }, "firstName": { "type": "string", "description": "first name in local language." }, "firstNameLocal": { "type": "string" }, "middleName": { "type": "string" }, "middleNameLocal": { "type": "string", "description": "middle name in local language." }, "lastName": { "type": "string" }, "lastNameLocal": { "type": "string", "description": "last name in local language." }, "nationality": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "email": { "type": "string", "format": "email" }, "phone": { "type": "string" }, "address": { "type": "object", "description": "Address of the user.", "$ref": "#/components/schemas/Address" }, "dateOfBirth": { "type": "string", "description": "Date of birth in format yyyy-mm-dd.", "format": "date" }, "countryOfBirth": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "stateOfBirth": { "type": "string" }, "placeOfBirth": { "type": "string" }, "gender": { "type": "string", "enum": [ "M", "F" ] }, "taxIdentificationNumber": { "type": "string", "description": "For US owners, SSN should be used. For non-US individual owners, a national ID is preferred where applicable; however, a tax ID can also be used as an alternative." }, "taxResidenceCountry": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "govIdType": { "type": "string", "enum": [ "PASSPORT", "ID_CARD", "DRIVERS" ] }, "govIdCountry": { "type": "string", "description": "Three-letter alpha-3 country code of the submitted government id as defined in the ISO 3166-1 spec." }, "govIdNumber": { "type": "string" }, "govIdFrontUrl": { "type": "string", "description": "URL or Base64 encoded string of the front of the user's government issued ID.\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "govIdBackUrl": { "type": "string", "description": "URL or Base64 encoded string of the back of the user's government issued ID.\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "govIdIssuanceDate": { "type": "string", "format": "date", "description": "The issue date of the Gov ID document in format yyyy-mm-dd." }, "govIdExpirationDate": { "type": "string", "format": "date", "description": "The expiry date of the Gov ID document in format yyyy-mm-dd." }, "govIdIssuanceAuthority": { "type": "string", "description": "Issuing authority of the Gov ID document." }, "proofOfAddressType": { "type": "string", "enum": [ "UTILITY_BILL", "BANK_STATEMENT", "RENTAL_AGREEMENT", "TAX_DOCUMENT" ] }, "proofOfAddressUrl": { "type": "string", "description": "URL or Base64 encoded string of the file of the proof of address.\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "authLetterUrl": { "type": "string", "description": "URL or Base64 encoded string of the authorization letter that the authorised person can act on behalf of the business.\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "shareProportion": { "type": "number", "description": "Percentage of shares owned (greater than or equal to 25%), only for UBOs.\n" }, "hasOwnership": { "type": "boolean", "description": "True if the person has at least 25% ownership of the business." }, "hasControl": { "type": "boolean", "description": "True if the person has a significant responsibility to control, manage, or direct the activities of the business. At least one of the ultimateBeneficialOwners needs to have this set to true." }, "isSigner": { "type": "boolean", "description": "True if the person can authorize transactions on behalf of the business. At least one of the ultimateBeneficialOwners needs to have this set to true." }, "relationshipEstablishedAt": { "type": "string", "format": "date", "description": "The date that the ultimateBeneficialOwners first became an owner, control person, or signer for the business in format yyyy-mm-dd." }, "supplementaryInfo": { "type": "string", "description": "This field allows the inclusion of additional textual information or context that may be relevant to the KYC process.\n" }, "supplementaryUrl": { "type": "string", "description": "This field is designed to contain supplementary documents or files that can be uploaded as part of the KYC process.\n\nURL or Base64 encoded string of the file of the supplementary information.\n\n*If the file is base64 encoded, it must start with \"data:\"\n\n*Maximum file size 3MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" } } }, "UboAdd": { "type": "object", "title": "Add UBO", "allOf": [ { "$ref": "#/components/schemas/UltimateBeneficialOwner" } ], "required": [ "roles", "firstName", "lastName" ] }, "UboUpdate": { "type": "object", "title": "Add UBO", "allOf": [ { "$ref": "#/components/schemas/UltimateBeneficialOwner" } ] }, "Address": { "type": "object", "properties": { "addressLine1": { "type": "string" }, "addressLine2": { "type": "string" }, "city": { "type": "string" }, "stateProvinceRegion": { "type": "string", "description": "The second part of the [ISO 3166-2 subdivision code](https://en.wikipedia.org/wiki/ISO_3166-2). This must be provided if the country has subdivisions.\n\nAn ISO 3166-2 code consists of two parts, separated by a hyphen (`-`):\n 1. The first part is the ISO 3166-1 alpha-2 code of the country (e.g., `US`, `CA`, `BR`);\n 2. The second part is a string of up to three alphanumeric characters representing a specific subdivision (e.g., state, province). This is typically based on national standards or developed by ISO.\n\n Only provide the second part of the code (e.g., `CA` for California in `US-CA`, or `SP` for São Paulo in `BR-SP`).\n" }, "postalCode": { "type": "string", "description": "Must be supplied for countries that use postal codes." }, "country": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the [ISO 3166-1 spec](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3)." } }, "required": [ "addressLine1", "city", "stateProvinceRegion", "postalCode", "country" ] }, "Rails": { "type": "object", "properties": { "rails": { "$ref": "#/components/schemas/RailsEnum" } }, "required": [ "rails" ] }, "SofEuKycQuestionnaire": { "type": "object", "properties": { "actingAsIntermediary": { "type": "boolean", "description": "Is the customer acting as an intermediary for a third party?" }, "employmentStatus": { "type": "string", "description": "What is the customer's current employment status?", "enum": [ "employed", "homemaker", "retired", "self_employed", "student", "unemployed" ] }, "expectedMonthlyPayments": { "type": "string", "description": "What is the expected monthly volume of payments the customer will be sending or receiving?", "enum": [ "0_4999", "5000_9999", "10000_49999", "50000_plus" ] }, "mostRecentOccupation": { "type": "string", "description": "What is the customer's most recent occupation? Specify the relevant alphanumeric occupation code. \nSee the [list](https://docs.hifibridge.com/docs/compliance/references/occupations) of occupations for the complete list of valid occupations and codes.\n" }, "primaryPurpose": { "type": "string", "description": "What is the primary purpose of the customer's account?", "enum": [ "charitable_donations", "ecommerce_retail_payments", "investment_purposes", "operating_a_company", "payments_to_friends_or_family_abroad", "personal_or_living_expenses", "protect_wealth", "purchase_goods_and_services", "receive_payment_for_freelancing", "receive_salary", "other" ] }, "primaryPurposeOther": { "type": "string", "description": "Required if the primary purpose is 'other'." }, "sourceOfFunds": { "type": "string", "description": "What is the source of funds for the customer's account?", "enum": [ "company_funds", "ecommerce_reseller", "gambling_proceeds", "gifts", "government_benefits", "inheritance", "investments_loans", "pension_retirement", "salary", "sale_of_assets_real_estate", "savings", "someone_elses_funds" ] } } }, "SofEuKybQuestionnaire": { "type": "object", "properties": { "estimatedAnnualRevenueUsd": { "type": "string", "description": "Estimated annual revenue in USD.", "enum": [ "0_99999", "100000_999999", "1000000_9999999", "10000000_49999999", "50000000_249999999", "250000000_plus" ] }, "expectedMonthlyPaymentsUsd": { "type": "string", "description": "Expected monthly payments in USD." }, "operatesInProhibitedCountries": { "type": "boolean", "deprecated": true }, "primaryPurpose": { "type": "string", "description": "What is the primary purpose of the business account?", "enum": [ "charitable_donations", "ecommerce_retail_payments", "investment_purposes", "other", "payments_to_friends_or_family_abroad", "payroll", "personal_or_living_expenses", "protect_wealth", "purchase_goods_and_services", "receive_payments_for_goods_and_services", "tax_optimization", "third_party_money_transmission", "treasury_management" ] }, "primaryPurposeOther": { "type": "string", "description": "Required if the primary purpose is 'other'." }, "highRiskActivities": { "type": "array", "description": "List of high-risk activities the business is involved in.", "items": { "type": "string", "enum": [ "none_of_the_above", "adult_entertainment", "gambling", "hold_client_funds", "investment_services", "lending_banking", "marijuana_or_related_services", "money_services", "operate_foreign_exchange_virtual_currencies_brokerage_otc", "safe_deposit_box_rentals", "third_party_payment_processing", "weapons_firearms_and_explosives" ] } }, "sourceOfFunds": { "type": "string", "description": "What is the source of funds for the business account?", "enum": [ "business_loans", "grants", "inter_company_funds", "investment_proceeds", "legal_settlement", "owners_capital", "pension_retirement", "sale_of_assets", "sales_of_goods_and_services", "tax_refund", "third_party_funds", "treasury_reserves" ] }, "sourceOfFundsDescription": { "type": "string", "description": "Description of the source of funds for the business' account." }, "transmitsCustomerFunds": { "type": "boolean", "description": "Specifies whether the business directly receives, holds, or sends customer funds to another party on behalf of its users. \nA value of true means the business is acting as a money transmitter and is subject to money transmission regulations in addition to general money service obligations.\n" }, "transmitsCustomerFundsDescription": { "type": "string", "description": "Describes whether and how the business actively transmits customer funds. i.e., moves money from one party to another on behalf of a customer (e.g., sending, remitting, or transferring funds). \nThis field should clarify the money-transmission activity performed.\n" }, "customerFundsDescription": { "type": "string", "description": "Describes the nature of the customer funds handled by the business. This field explains the characteristics of the funds rather than the act of transmitting them.\n" }, "conductsMoneyServices": { "type": "boolean", "description": "Indicates whether the business is engaged in providing money services as a line of business (e.g., money transmission, currency exchange, or other regulated financial activities). \nA value of true means the business is considered a Money Services Business (MSB) under applicable regulations and may be subject to AML, KYC, and licensing requirements.\n" } } }, "IndividualDocumentAdd": { "type": "array", "title": "Add Individual Document", "description": "An array of documents to be added.", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "Type of the document. This field is immutable once created.\n", "enum": [ "DRIVERS", "ID_CARD", "PASSPORT", "INCOME_SOURCE", "INVESTOR_DOC", "PAYMENT_SOURCE", "RESIDENCE_PERMIT", "SELFIE", "PROOF_OF_ADDRESS", "AUTH_LETTER", "OTHER" ] }, "subType": { "type": "string", "description": "Subtype of the document. This field is immutable once created.\n", "enum": [ "FRONT_SIDE", "BACK_SIDE", "SINGLE_SIDE" ] }, "issuedCountry": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "issuedDate": { "type": "string", "description": "Date of issue of the document.", "format": "date" }, "expiryDate": { "type": "string", "description": "Expiry date of the document.", "format": "date" }, "number": { "type": "string", "description": "If applicable, unique identification number of the document." }, "description": { "type": "string", "description": "Description of the document. Required if type is `OTHER`." }, "url": { "type": "string", "deprecated": true, "description": "URL of the document. Either `url` or `fileId` is required, but not both.\n\n*Maximum file size 10MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "fileId": { "type": "string", "description": "The file ID returned from the file upload endpoint. Either `url` or `fileId` is required, but not both." }, "uboId": { "type": "string", "description": "If provided, this document will be attached to the specified UBO. This field is immutable once created." } }, "required": [ "type", "subType", "issuedCountry" ] } }, "BusinessDocumentAdd": { "type": "array", "title": "Add Business Document", "description": "An array of documents to be added.", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "Type of the document. This field is immutable once created.\n", "enum": [ "DIRECTORS_REGISTRY", "GOOD_STANDING_CERT", "INCORPORATION_ARTICLES", "INCORPORATION_CERT", "INCUMBENCY_CERT", "INFORMATION_STATEMENT", "POWER_OF_ATTORNEY", "PROOF_OF_ADDRESS", "SHAREHOLDER_REGISTRY", "STATE_REGISTRY", "TRUST_AGREEMENT", "SOURCE_OF_FUNDS", "FORMATION_CERT", "REGISTRATION_CERT", "PROOF_OF_OWNERSHIP", "CONSTITUTION_OR_ANNUAL_REPORT", "ARTICLES_OF_ASSOCIATION", "UBO_DECLARATION", "PARTNERSHIP_MINS_OF_MEETING", "PARTNERSHIP_DEED", "FLOW_OF_FUNDS", "SOURCE_OF_FUNDS", "ORGANIZATION_STRUCTURE", "SHARE_STRUCTURE", "BUSINESS_REGISTRATION", "OTHER" ] }, "subType": { "type": "string", "description": "Subtype of the document. This field is immutable once created.\n", "enum": [ "SINGLE_SIDE" ] }, "issuedCountry": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "issuedDate": { "type": "string", "description": "Date of issue of the document.", "format": "date" }, "expiryDate": { "type": "string", "description": "Expiry date of the document.", "format": "date" }, "number": { "type": "string", "description": "If applicable, unique identification number of the document." }, "description": { "type": "string", "description": "Description of the document. Required if type is `OTHER`." }, "url": { "type": "string", "deprecated": true, "description": "URL of the document. Either `url` or `fileId` is required, but not both.\n\n*Maximum file size 10MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "fileId": { "type": "string", "description": "The file ID returned from the file upload endpoint. Either `url` or `fileId` is required, but not both." }, "uboId": { "type": "string", "description": "If provided, this document will be attached to the specified UBO. This field is immutable once created." } }, "required": [ "type", "subType", "issuedCountry" ] } }, "IndividualDocumentUpdate": { "type": "object", "title": "Update Individual Document", "properties": { "issuedCountry": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "issuedDate": { "type": "string", "description": "Date of issue of the document.", "format": "date" }, "expiryDate": { "type": "string", "description": "Expiry date of the document.", "format": "date" }, "number": { "type": "string", "description": "If applicable, unique identification number of the document." }, "description": { "type": "string", "description": "Description of the document. Required if type is `OTHER`." }, "url": { "type": "string", "deprecated": true, "description": "URL of the document. Either `url` or `fileId` is required, but not both.\n\n*Maximum file size 10MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "fileId": { "type": "string", "description": "The file ID returned from the file upload endpoint. Either `url` or `fileId` is required, but not both." } } }, "BusinessDocumentUpdate": { "type": "object", "title": "Update Business Document", "properties": { "issuedCountry": { "type": "string", "description": "Three-letter alpha-3 country code as defined in the ISO 3166-1 spec." }, "issuedDate": { "type": "string", "description": "Date of issue of the document.", "format": "date" }, "expiryDate": { "type": "string", "description": "Expiry date of the document.", "format": "date" }, "number": { "type": "string", "description": "If applicable, unique identification number of the document." }, "description": { "type": "string", "description": "Description of the document. Required if type is `OTHER`." }, "url": { "type": "string", "deprecated": true, "description": "URL of the document. Either `url` or `fileId` is required, but not both.\n\n*Maximum file size 10MB and minimum file size 10KB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif\n" }, "fileId": { "type": "string", "description": "The file ID returned from the file upload endpoint. Either `url` or `fileId` is required, but not both." } } }, "KycIndividualObject": { "type": "object", "title": "KYC Object (Individual)", "properties": { "userId": { "type": "string", "format": "uuid" }, "kycInfo": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "individual" ] }, "firstName": { "type": "string" }, "firstNameLocal": { "type": "string" }, "middleName": { "type": "string" }, "middleNameLocal": { "type": "string" }, "lastName": { "type": "string" }, "lastNameLocal": { "type": "string" }, "nationality": { "type": "string" }, "email": { "type": "string", "format": "email" }, "phone": { "type": "string" }, "address": { "type": "object", "$ref": "#/components/schemas/Address" }, "dateOfBirth": { "type": "string" }, "countryOfBirth": { "type": "string" }, "stateOfBirth": { "type": "string" }, "placeOfBirth": { "type": "string" }, "gender": { "type": "string" }, "country": { "type": "string" }, "taxIdentificationNumber": { "type": "string" }, "taxResidenceCountry": { "type": "string" }, "govIdType": { "type": "string" }, "govIdFrontUrl": { "type": "string" }, "govIdBackUrl": { "type": "string" }, "govIdCountry": { "type": "string" }, "govIdNumber": { "type": "string" }, "govIdIssuanceDate": { "type": "string" }, "govIdExpirationDate": { "type": "string" }, "govIdIssuanceAuthority": { "type": "string" }, "govIdHandHoldUrl": { "type": "string" }, "proofOfAddressType": { "type": "string" }, "proofOfAddressUrl": { "type": "string" }, "sofEuQuestionnaire": { "type": "object", "$ref": "#/components/schemas/SofEuKycQuestionnaire" }, "ipAddress": { "type": "string" }, "idType": { "type": "string" }, "idNumber": { "type": "string" }, "additionalIdType": { "type": "string" }, "additionalIdNumber": { "type": "string" }, "purpose": { "type": "string" }, "productServiceCategory": { "type": "string" }, "supplementaryInfo": { "type": "string" }, "supplementaryUrl": { "type": "string" }, "documents": { "type": "array", "items": { "$ref": "#/components/schemas/DocumentObject" } } } } } }, "KycBusinessObject": { "type": "object", "title": "KYC Object (Business)", "properties": { "userId": { "type": "string", "format": "uuid" }, "kycInfo": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "business" ] }, "businessName": { "type": "string" }, "businessNameLocal": { "type": "string" }, "alternativeNames": { "type": "array", "items": { "type": "string" } }, "businessDescription": { "type": "string" }, "email": { "type": "string", "format": "email" }, "phone": { "type": "string" }, "sourceOfFunds": { "type": "string" }, "businessType": { "type": "string" }, "businessIndustry": { "type": "string" }, "website": { "type": "string" }, "address": { "type": "object", "$ref": "#/components/schemas/Address" }, "registeredAddress": { "type": "object", "$ref": "#/components/schemas/Address" }, "postalAddress": { "type": "object", "$ref": "#/components/schemas/Address" }, "taxIdentificationNumberType": { "type": "string" }, "taxIdentificationNumber": { "type": "string" }, "leiNumber": { "type": "string" }, "daoStatus": { "type": "boolean" }, "transmitsCustomerFunds": { "type": "boolean" }, "formationDate": { "type": "string" }, "ipAddress": { "type": "string", "format": "ipv4" }, "formationDocUrl": { "type": "string" }, "proofOfOwnershipUrl": { "type": "string" }, "complianceScreeningExplanation": { "type": "string" }, "ultimateBeneficialOwners": { "type": "array", "items": { "$ref": "#/components/schemas/UboObject" } }, "proofOfAddressType": { "type": "string" }, "proofOfAddressUrl": { "type": "string" }, "certificateOfRegistrationDocType": { "type": "string" }, "certificateOfRegistrationDocUrl": { "type": "string" }, "certificateNumber": { "type": "string" }, "businessRegistrationDocUrl": { "type": "string" }, "registrationNumber": { "type": "string" }, "licenseExpirationDate": { "type": "string" }, "certificateOfIncorporationDocUrl": { "type": "string" }, "incorporationNumber": { "type": "string" }, "incorporationDate": { "type": "string" }, "incorporationCountry": { "type": "string" }, "incorporationState": { "type": "string" }, "controlScheme": { "type": "string" }, "shareStructureUrl": { "type": "string" }, "constitutionOrAnnualReportUrl": { "type": "string" }, "articlesOfAssociationUrl": { "type": "string" }, "uboDeclarationUrl": { "type": "string" }, "partnershipMinsOfMeetingUrl": { "type": "string" }, "partnershipDeedUrl": { "type": "string" }, "certificateOfIncumbencyUrl": { "type": "string" }, "sourceOfFundsUrl": { "type": "string" }, "organizationStructureUrl": { "type": "string" }, "flowOfFundsUrl": { "type": "string" }, "purpose": { "type": "string" }, "productServiceCategory": { "type": "string" }, "tradeName": { "type": "string" }, "exportCountry": { "type": "string" }, "tradeType": { "type": "string" }, "sofEuQuestionnaire": { "type": "object", "$ref": "#/components/schemas/SofEuKybQuestionnaire" }, "supplementaryInfo": { "type": "string" }, "supplementaryUrl": { "type": "string" }, "documents": { "type": "array", "items": { "$ref": "#/components/schemas/DocumentObject" } } } } } }, "UboObject": { "type": "object", "title": "UBO Object", "allOf": [ { "$ref": "#/components/schemas/UboAdd" } ] }, "UboObjectList": { "type": "object", "title": "UBO Object List", "properties": { "count": { "type": "integer", "description": "The total number of documents." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/UboObject" } } } }, "DocumentObject": { "type": "object", "title": "Document Object", "properties": { "type": { "type": "string" }, "subType": { "type": "string" }, "issuedCountry": { "type": "string" }, "issuedDate": { "type": "string", "format": "date" }, "expiryDate": { "type": "string", "format": "date" }, "number": { "type": "string" }, "description": { "type": "string" }, "url": { "type": "string", "deprecated": true }, "fileId": { "type": "string" }, "uboId": { "type": "string" } } }, "DocumentObjectList": { "type": "object", "title": "Document Object List", "properties": { "count": { "type": "integer", "description": "Number of documents." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/DocumentObject" } } } }, "ReviewResultObject": { "type": "object", "title": "Review Result", "properties": { "reviewAnswer": { "type": "string", "enum": [ "APPROVED", "DECLINED" ] }, "reviewRejectType": { "type": "string", "enum": [ "FINAL", "RETRY" ] }, "rejectReasons": { "type": "array", "items": { "type": "string" } }, "comment": { "type": "string" } } }, "VerificationStatusObject": { "type": "object", "title": "Verification Status", "properties": { "reviewResult": { "$ref": "#/components/schemas/ReviewResultObject" } } }, "DocumentVerificationStatusObject": { "type": "object", "title": "Document Verification Status", "properties": { "reviewResult": { "$ref": "#/components/schemas/ReviewResultObject" }, "details": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "description": "Document type." }, "subType": { "type": "string", "description": "Document subType." }, "reviewResult": { "$ref": "#/components/schemas/ReviewResultObject" } } } } } }, "ReviewDetailsIndividualObject": { "type": "object", "title": "Review Details Individual", "properties": { "personalInfo": { "$ref": "#/components/schemas/VerificationStatusObject" }, "identity": { "$ref": "#/components/schemas/DocumentVerificationStatusObject" }, "proofOfAddress": { "$ref": "#/components/schemas/DocumentVerificationStatusObject" }, "questionnaire": { "$ref": "#/components/schemas/VerificationStatusObject" } } }, "UsdRailKycSubmissionObject": { "type": "object", "title": "Kyc Submission Object (USD)", "properties": { "USD": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "message": { "type": "string" } }, "required": [ "status", "message" ] } }, "required": [ "USD" ] }, "SouthAmericaRailKycSubmissionObject": { "type": "object", "title": "Kyc Submission Object (SOUTH_AMERICA_STANDARD)", "properties": { "SOUTH_AMERICA_STANDARD": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "warnings": { "type": "array" }, "message": { "type": "string" }, "limit": { "type": "object", "additionalProperties": false }, "onRamp": { "type": "object", "properties": { "brl": { "type": "object", "properties": { "pix": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } }, "offRamp": { "type": "object", "properties": { "brl": { "type": "object", "properties": { "pix": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "mxn": { "type": "object", "properties": { "spei": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "cop": { "type": "object", "properties": { "achCop": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ars": { "type": "object", "properties": { "transfers": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } } }, "required": [ "status", "warnings", "message", "limit", "onRamp", "offRamp" ] } }, "required": [ "SOUTH_AMERICA_STANDARD" ] }, "AfricaGeneralRailKycSubmissionObject": { "type": "object", "title": "Kyc Submission Object (AFRICA_GENERAL)", "properties": { "AFRICA_GENERAL": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "warnings": { "type": "array" }, "message": { "type": "string" }, "onRamp": { "type": "object", "properties": { "kes": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ghs": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "tzs": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ugx": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "bwp": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "xaf": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" }, "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "mwk": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" }, "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "rwf": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "zmw": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" }, "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "xof": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } }, "offRamp": { "type": "object", "properties": { "kes": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" }, "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "zar": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ghs": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "tzs": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ugx": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "bwp": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "xaf": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "mwk": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "rwf": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "zmw": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "xof": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } } }, "required": [ "status", "warnings", "message", "onRamp", "offRamp" ] } }, "required": [ "AFRICA_GENERAL" ] }, "AfricaNigeriaRailKycSubmissionObject": { "type": "object", "title": "Kyc Submission Object (AFRICA_NIGERIA)", "properties": { "AFRICA_NIGERIA": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "warnings": { "type": "array" }, "message": { "type": "string" }, "onRamp": { "type": "object", "properties": { "ngn": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } }, "offRamp": { "type": "object", "properties": { "ngn": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } } }, "required": [ "status", "warnings", "message", "onRamp", "offRamp" ] } }, "required": [ "AFRICA_NIGERIA" ] }, "GlobalNetworkRailKycSubmissionObject": { "type": "object", "title": "Kyc Submission Object (GLOBAL_NETWORK)", "properties": { "GLOBAL_NETWORK": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "warnings": { "type": "array" }, "message": { "type": "string" }, "onRamp": { "type": "object", "additionalProperties": false }, "offRamp": { "type": "object", "additionalProperties": false, "properties": { "brl": { "type": "object", "properties": { "pix": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "hkd": { "type": "object", "properties": { "wire": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "mxn": { "type": "object", "properties": { "spei": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ngn": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } } }, "required": [ "status", "warnings", "message", "onRamp", "offRamp" ] } }, "required": [ "GLOBAL_NETWORK" ] }, "ReviewDetailsBusinessObject": { "type": "object", "title": "Review Details Business Object", "properties": { "companyInfo": { "$ref": "#/components/schemas/VerificationStatusObject" }, "companyDocuments": { "$ref": "#/components/schemas/DocumentVerificationStatusObject" }, "questionnaire": { "$ref": "#/components/schemas/VerificationStatusObject" }, "ultimateBeneficialOwners": { "type": "object", "properties": { "reviewResult": { "$ref": "#/components/schemas/ReviewResultObject" }, "details": { "type": "array", "items": { "allOf": [ { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "UBO ID." } } }, { "$ref": "#/components/schemas/UsdRailIndividualKycStatusObject" } ] } } } } } }, "UsdRailIndividualKycStatusObject": { "type": "object", "title": "Kyc Status Object (USD - Individual)", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "message": { "type": "string" }, "reviewResult": { "$ref": "#/components/schemas/ReviewResultObject" }, "details": { "$ref": "#/components/schemas/ReviewDetailsIndividualObject" } }, "required": [ "status", "message", "reviewResult", "details" ] }, "UsdRailBusinessKycStatusObject": { "type": "object", "title": "Kyc Status Object (USD - Business)", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "message": { "type": "string" }, "reviewResult": { "$ref": "#/components/schemas/ReviewResultObject" }, "details": { "$ref": "#/components/schemas/ReviewDetailsBusinessObject" } }, "required": [ "status", "message", "reviewResult", "details" ] }, "SouthAmericaRailKycStatusObject": { "type": "object", "title": "KYC Status Object (SOUTH_AMERICA_STANDARD)", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "warnings": { "type": "array" }, "message": { "type": "string" }, "limit": { "type": "object", "properties": { "daily": { "type": "number" }, "monthly": { "type": "number" }, "perTransaction": { "type": "number" } } }, "onRamp": { "type": "object", "properties": { "brl": { "type": "object", "properties": { "pix": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } }, "offRamp": { "type": "object", "properties": { "brl": { "type": "object", "properties": { "pix": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "mxn": { "type": "object", "properties": { "spei": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "cop": { "type": "object", "properties": { "achCop": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ars": { "type": "object", "properties": { "transfers": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } } } }, "AfricaGeneralRailKycStatusObject": { "type": "object", "title": "Kyc Status Object (AFRICA_GENERAL)", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "warnings": { "type": "array" }, "message": { "type": "string" }, "onRamp": { "type": "object", "properties": { "kes": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ghs": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "tzs": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ugx": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "bwp": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "xaf": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" }, "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "mwk": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" }, "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "rwf": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "zmw": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" }, "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "xof": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } }, "offRamp": { "type": "object", "properties": { "kes": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" }, "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "zar": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ghs": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "tzs": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ugx": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "bwp": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "xaf": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "mwk": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "rwf": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "zmw": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "xof": { "type": "object", "properties": { "momo": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } } }, "required": [ "status", "warnings", "message", "onRamp", "offRamp" ] }, "AfricaNigeriaRailKycStatusObject": { "type": "object", "title": "Kyc Status Object (AFRICA_NIGERIA)", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "warnings": { "type": "array" }, "message": { "type": "string" }, "onRamp": { "type": "object", "properties": { "ngn": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } }, "offRamp": { "type": "object", "properties": { "ngn": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } } }, "required": [ "status", "warnings", "message", "onRamp", "offRamp" ] }, "GlobalNetworkRailKycStatusObject": { "type": "object", "title": "Kyc Status Object (GLOBAL_NETWORK)", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "warnings": { "type": "array" }, "message": { "type": "string" }, "onRamp": { "type": "object", "additionalProperties": false }, "offRamp": { "type": "object", "additionalProperties": false, "properties": { "brl": { "type": "object", "properties": { "pix": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "hkd": { "type": "object", "properties": { "wire": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "mxn": { "type": "object", "properties": { "spei": { "$ref": "#/components/schemas/KycRailStatusObject" } } }, "ngn": { "type": "object", "properties": { "bank": { "$ref": "#/components/schemas/KycRailStatusObject" } } } } } }, "required": [ "status", "warnings", "message", "onRamp", "offRamp" ] }, "OnChainRailKycStatusObject": { "type": "object", "title": "KYC Status Object (ON_CHAIN)", "properties": { "INDIVIDUAL": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/KycStatusEnum" }, "warnings": { "type": "array" }, "message": { "type": "string" }, "addresses": { "type": "object", "properties": { "ETHEREUM": { "type": "object", "properties": { "address": { "type": "string" } } }, "POLYGON": { "type": "object", "properties": { "address": { "type": "string" } } } } } } } } }, "SofEuQaKycReqOptObject": { "type": "object", "title": "SofEuQuestionnaire Requirement (Individual)", "properties": { "required": { "type": "object", "properties": { "actingAsIntermediary": { "type": "string" }, "employmentStatus": { "type": "string" }, "expectedMonthlyPayments": { "type": "string" }, "mostRecentOccupation": { "type": "string" }, "primaryPurpose": { "type": "string" }, "sourceOfFunds": { "type": "string" } } }, "optional": { "type": "object", "properties": { "primaryPurposeOther": { "type": "string" } } } } }, "SofEuQaKybReqOptObject": { "type": "object", "title": "SofEuQuestionnaire Requirement (Business)", "properties": { "required": { "type": "object", "properties": { "primaryPurpose": { "type": "string" }, "sourceOfFunds": { "type": "string" }, "transmitsCustomerFunds": { "type": "string" }, "conductsMoneyServices": { "type": "string" }, "highRiskActivities": { "type": "string" }, "estimatedAnnualRevenueUsd": { "type": "string" }, "expectedMonthlyPaymentsUsd": { "type": "string" }, "customerFundsDescription": { "type": "string" } } }, "optional": { "type": "object", "properties": { "operatesInProhibitedCountries": { "type": "string" }, "primaryPurposeOther": { "type": "string" }, "sourceOfFundsDescription": { "type": "string" }, "transmitsCustomerFundsDescription": { "type": "string" } } } } }, "AddressReqOptObject": { "type": "object", "title": "Address Requirement", "properties": { "required": { "type": "object", "properties": { "addressLine1": { "type": "string" }, "city": { "type": "string" }, "stateProvinceRegion": { "type": "string" }, "postalCode": { "type": "string" }, "country": { "type": "string" } } }, "optional": { "type": "object", "properties": { "addressLine2": { "type": "string" } } } } }, "DocGroupRequirementObject": { "type": "object", "title": "Document Group Requirement", "description": "Represents minimum document requirements for a specific rail. Each group specifies the minimum number of documents required from a list of accepted document types.\n**Note: Only documents provided through the Documents Endpoint will be considered for fulfilling these requirements.**\n", "properties": { "minCount": { "type": "integer", "description": "Minimum number of documents needed from the `acceptedDocTypes`.\n" }, "acceptedDocTypes": { "type": "array", "description": "List of accepted document types. The user must provide at least `minCount` documents from this list.\n", "items": { "type": "string" } } } }, "USDRailBusinessDocReqOptObject": { "type": "object", "title": "Document Group Requirements (Business)", "properties": { "legalPresence": { "$ref": "#/components/schemas/DocGroupRequirementObject" }, "ownershipStructure": { "$ref": "#/components/schemas/DocGroupRequirementObject" }, "companyDetails": { "$ref": "#/components/schemas/DocGroupRequirementObject" }, "controlStructure": { "$ref": "#/components/schemas/DocGroupRequirementObject" } } }, "USDRailIndividualDocReqOptObject": { "type": "object", "title": "Document Group Requirements (Individual)", "properties": { "identity": { "$ref": "#/components/schemas/DocGroupRequirementObject" }, "proofOfResidence": { "$ref": "#/components/schemas/DocGroupRequirementObject" } } }, "USDRailBusinessKYCReqOptObject": { "type": "object", "title": "KYC Requirement Object (USD - Business)", "properties": { "userId": { "type": "string", "format": "uuid" }, "rails": { "$ref": "#/components/schemas/RailsEnum" }, "type": { "type": "string", "enum": [ "business" ] }, "required": { "type": "object", "description": "KYC fields required for this rail. The required fields varies based on the Rail.", "properties": { "businessName": { "type": "string" }, "businessType": { "type": "string" }, "businessIndustry": { "type": "string" }, "registrationNumber": { "type": "string" }, "registeredAddress": { "type": "string" }, "address": { "$ref": "#/components/schemas/AddressReqOptObject" }, "website": { "type": "string" }, "incorporationDate": { "type": "string" }, "email": { "type": "string" }, "phone": { "type": "string" }, "taxIdentificationNumber": { "type": "string" }, "sofEuQuestionnaire": { "$ref": "#/components/schemas/SofEuQaKybReqOptObject" }, "ultimateBeneficialOwners": { "type": "array" }, "documents": { "$ref": "#/components/schemas/USDRailBusinessDocReqOptObject" } } }, "optional": { "type": "object", "description": "KYC fields that are optional for this rail. The optional fields varies based on the Rail.", "properties": { "incorporationCountry": { "type": "string" }, "incorporationState": { "type": "string" } } }, "invalid": { "type": "object", "description": "KYC fields the user currently holds that are either missing or invalid for this rail. The specific invalid fields vary depending on the user’s current KYC data.", "properties": { "message": { "type": "string" }, "fields": { "type": "object", "description": "Any missing or invalid fields, which varies depending on the user’s current KYC data.", "properties": { "registrationNumber": { "type": "string" } } }, "documents": { "type": "object", "description": "Any missing documents groups, which varies depending on the user’s current KYC documents data.", "properties": { "message": { "type": "string" }, "groups": { "type": "object", "properties": { "controlStructure": { "type": "object", "properties": { "minCount": { "type": "integer" }, "acceptedDocTypes": { "type": "array", "items": { "type": "string" } } } } } } } } } } } }, "USDRailIndividualKYCReqOptObject": { "type": "object", "title": "KYC Requirement Object (USD - Individual)", "properties": { "userId": { "type": "string", "format": "uuid" }, "rails": { "$ref": "#/components/schemas/RailsEnum" }, "type": { "type": "string", "enum": [ "individual" ] }, "required": { "type": "object", "description": "KYC fields required for this rail. The required fields varies based on the Rail.", "properties": { "firstName": { "type": "string" }, "lastName": { "type": "string" }, "email": { "type": "string" }, "phone": { "type": "string" }, "nationality": { "type": "string" }, "dateOfBirth": { "type": "string" }, "address": { "$ref": "#/components/schemas/AddressReqOptObject" }, "taxIdentificationNumber": { "type": "string" }, "documents": { "$ref": "#/components/schemas/USDRailIndividualDocReqOptObject" } } }, "optional": { "type": "object", "description": "KYC fields that are optional for this rail. The optional fields varies based on the Rail.", "properties": { "sofEuQuestionnaire": { "$ref": "#/components/schemas/SofEuQaKycReqOptObject" } } }, "invalid": { "type": "object", "description": "KYC fields the user currently holds that are either missing or invalid for this rail. The specific invalid fields vary depending on the user’s current KYC data.\n", "properties": { "message": { "type": "string" }, "fields": { "type": "object", "description": "Any missing or invalid fields, which varies depending on the user’s current KYC data.", "properties": { "phone": { "type": "string" }, "nationality": { "type": "string" }, "taxIdentificationNumber": { "type": "string" } } }, "documents": { "type": "object", "description": "Any missing documents groups, which varies depending on the user’s current KYC documents data.", "properties": { "message": { "type": "string" }, "groups": { "type": "object", "properties": { "identity": { "type": "object", "properties": { "minCount": { "type": "integer" }, "acceptedDocTypes": { "type": "array", "items": { "type": "string" } } } } } } } } } } } }, "KycRailStatusObject": { "type": "object", "properties": { "status": { "type": "string" }, "warnings": { "type": "array" }, "message": { "type": "string" } } }, "KycLinkForUserCreation": { "type": "object", "title": "KYC Link for User Creation", "required": [ "userType" ], "properties": { "userType": { "type": "string", "enum": [ "INDIVIDUAL", "BUSINESS" ] }, "rails": { "type": "array", "items": { "type": "string", "enum": [ "USD", "SOUTH_AMERICA_STANDARD", "AFRICA_GENERAL", "AFRICA_NIGERIA" ] }, "description": "KYC rails to unlock for the user, if not provided, only wallet will be created" }, "redirectUrl": { "type": "string", "description": "URL to redirect to after KYC information is submitted, userId will be appended to the URL as a query parameter" }, "recipientEmail": { "type": "string", "description": "Email address to send the KYC link to if provided (only in production)" }, "templateId": { "type": "string", "description": "Template ID to use for the KYC link, please contact HIFI for more information" } } }, "KycLinkForUnlockingRails": { "type": "object", "title": "KYC Link for Unlocking Rails", "required": [ "userId", "rails" ], "properties": { "userId": { "type": "string" }, "rails": { "type": "array", "items": { "type": "string", "enum": [ "USD", "SOUTH_AMERICA_STANDARD", "AFRICA_GENERAL", "AFRICA_NIGERIA" ] }, "description": "KYC rails to unlock for the user" }, "redirectUrl": { "type": "string", "description": "URL to redirect to after KYC information is submitted, userId will be appended to the URL as a query parameter" }, "recipientEmail": { "type": "string", "description": "Email address to send the KYC link to if provided (only in production)" }, "templateId": { "type": "string", "description": "Template ID to use for the KYC link, please contact HIFI for more information" } } }, "KycLinkObject": { "type": "object", "properties": { "kycLinkUrl": { "type": "string", "description": "KYC link to be shared with the user" } } }, "AllKycStatusesObject": { "type": "array", "items": { "type": "object", "properties": { "user": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "enum": [ "individual", "business" ] }, "name": { "type": "string" }, "email": { "type": "string", "format": "email" } } }, "rails": { "$ref": "#/components/schemas/RailsEnum" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "status": { "$ref": "#/components/schemas/KycStatusEnum" } } } }, "CreateMCAccount": { "type": "object", "description": "Apply for a currency account.", "properties": { "currency": { "type": "string", "description": "See the full list of collection currencies by bank location [here](https://docs.hifibridge.com/v2/docs/currencies-by-bank-location).\n" }, "bankLocation": { "type": "string", "description": "The three-letter alpha-3 country code for the bank issuing the currency account. To check the availability of currencies by region, see [here](https://docs.hifibridge.com/v2/docs/currencies-by-bank-location).\n" }, "purpose": { "type": "string", "description": "Account purpose. See the full list puposes for applying for this currency account [here](https://docs.hifibridge.com/v2/docs/currency-account-purpose).\n" } }, "required": [ "currency", "bankLocation", "purpose" ] }, "CreateMCAccountStore": { "type": "object", "description": "Create a store to receive funds into the currency account.", "properties": { "userId": { "type": "string", "description": "The user ID." }, "platform": { "type": "string", "description": "Store platform code. Look up the platforms that can be used in each country and the currencies that can be collected [here](https://docs.hifibridge.com/v2/docs/platform-code).\n" }, "store": { "type": "object", "description": "Store details.", "$ref": "#/components/schemas/MCAccountStore" }, "selfBuiltStore": { "type": "object", "description": "Self-built store details.", "$ref": "#/components/schemas/MCAccountSelfStore" } }, "required": [ "userId", "platform", "store" ] }, "MCAccountStore": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the store." }, "category": { "type": "string", "description": "Look up the store sale category [here](https://docs.hifibridge.com/v2/docs/store-sales-categories).\n" } }, "required": [ "name", "category" ] }, "MCAccountSelfStore": { "type": "object", "properties": { "apiIntegrated": { "type": "boolean", "description": "Does the customer connect transactional, store and other data through API?" }, "hasStoreInfo": { "type": "boolean", "description": "Is store information provided?" }, "hasOrderInfo": { "type": "boolean", "description": "Is transaction information provided?" }, "hasLogisticsInfo": { "type": "boolean", "description": "Is logistics information provided?" } }, "required": [ "apiIntegrated", "hasStoreInfo", "hasOrderInfo", "hasLogisticsInfo" ] }, "AuthorizeMCAccountStore": { "type": "object", "description": "Authorise a store to receive funds into the currency account.", "properties": { "storeId": { "type": "string", "description": "The store ID." }, "authType": { "type": "string", "description": "Authorization type:\n`URL`: Authorization through a jump link.\n`TOKEN`: Authorization through binding developer account.\n", "enum": [ "URL", "TOKEN" ] }, "url": { "type": "object", "description": "Required when authType = `URL`", "$ref": "#/components/schemas/AuthorizeMCAccountURL" }, "token": { "type": "object", "description": "Required when authType = `TOKEN`", "$ref": "#/components/schemas/AuthorizeMCAccountToken" } }, "required": [ "storeId", "authType" ] }, "AuthorizeMCAccountURL": { "type": "object", "properties": { "storeUrl": { "type": "string", "description": "Store URL." }, "redirectUrl": { "type": "string", "description": "Post authorisation redirect URL." } }, "required": [ "storeUrl" ] }, "AuthorizeMCAccountToken": { "type": "object", "properties": { "sellerId": { "type": "string", "description": "Store seller_id." }, "accessToken": { "type": "string", "description": "Required when `developerId` and `developerSecret` are null.\n\nToken information for store authorization. Refer to Platform auth type [here](https://docs.hifibridge.com/v2/docs/platform-auth-type).\n" }, "developerId": { "type": "string", "description": "Required when `accessToken` is null.\n\nToken information for store authorization. Refer to Platform auth type [here](https://docs.hifibridge.com/v2/docs/platform-auth-type).\n" }, "developerSecret": { "type": "string", "description": "Required when `accessToken` is null.\n\nToken information for store authorization. Refer to Platform auth type [here](https://docs.hifibridge.com/v2/docs/platform-auth-type).\n" } }, "required": [ "sellerId" ] }, "MCAccountObject": { "type": "object", "properties": { "id": { "type": "string", "description": "Currency account ID." }, "userId": { "type": "string", "description": "User ID." }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time when the currency account was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "The date and time when the currency account was last updated." }, "status": { "type": "string", "description": "Currency account application status:\n`CREATED` application created\n`NOT_INITIATED` application not initiated\n`PENDING` application submitted and pending\n`AVAILABLE` application accepted and available\n`DECLINED` application rejected\n`SUSPENDED` application suspended\n`CLOSING` application closing\n`CLOSED` application closed\n", "enum": [ "CREATED", "NOT_INITIATED", "PENDING", "AVAILABLE", "DECLINED", "SUSPENDED", "CLOSING", "CLOSED" ] }, "accountHolderName": { "type": "string", "description": "Account holder's name. Normally equal to user's English name or the translated name.\n" }, "accountType": { "type": "string", "description": "The type of account.", "enum": [ "SAVINGS", "CHECKING", "STANDARD" ] }, "purpose": { "type": "string", "description": "The purpose of the account." }, "currency": { "type": "string", "description": "The currency of the currency account." }, "bankName": { "type": "string", "description": "The name of the bank." }, "bankCode": { "type": "string", "description": "Domestic bank code in the `bankCountry`." }, "branchName": { "type": "string", "description": "The name of the branch." }, "accountNumber": { "type": "string", "description": "Bank account number." }, "routingNumber": { "type": "string", "description": "North American bank code." }, "swiftCode": { "type": "string", "description": "International bank code." }, "sortCode": { "type": "string", "description": "UK bank sort code (6 digits)." }, "iban": { "type": "string", "description": "EU international bank account number." }, "bankCountry": { "type": "string", "description": "The country of the bank." }, "bankCity": { "type": "string", "description": "The city where the bank is located." }, "bankAddress": { "type": "string", "description": "The bank's detailed address." }, "bankPostalCode": { "type": "string", "description": "Bank's postal or ZIP code." }, "failedReason": { "type": "string", "description": "Account application submit failure reason or application decline reason." } } }, "CreateMCAccountObject": { "type": "object", "$ref": "#/components/schemas/MCAccountObject", "example": { "id": "5105ba8b-e54f-437c-9b98-10345d99791e", "userId": "c77f11bb-b869-41eb-af27-e64a62c980c6", "createdAt": "2023-10-01T12:00:00Z", "updatedAt": "2023-10-01T12:00:00Z", "status": "CREATED", "accountHolderName": "", "accountType": "", "purpose": "03", "currency": "USD", "bankName": "", "bankCode": "", "branchName": "", "accountNumber": "", "routingNumber": "", "swiftCode": "", "sortCode": "", "iban": "", "bankCountry": "USA", "bankCity": "", "bankAddress": "", "bankPostalCode": "", "failedReason": "" } }, "GetMCAccountObject": { "type": "object", "$ref": "#/components/schemas/MCAccountObject", "example": { "id": "5105ba8b-e54f-437c-9b98-10345d99791e", "userId": "c77f11bb-b869-41eb-af27-e64a62c980c6", "createdAt": "2023-10-01T12:00:00Z", "updatedAt": "2023-10-01T12:00:00Z", "status": "AVAILABLE", "accountHolderName": "Henry Wu", "accountType": "Checking", "purpose": "03", "currency": "USD", "bankName": "Citibank", "bankCode": "", "branchName": "", "accountNumber": "73380000000363268", "routingNumber": "031100209", "swiftCode": "GEOORUMMXXX", "sortCode": "", "iban": "", "bankCountry": "United States", "bankCity": "New York", "bankAddress": "111 Wall Street, New York, New York 10043, United States", "bankPostalCode": "10043", "failedReason": "" } }, "GetMCAccountListObject": { "type": "object", "properties": { "count": { "type": "integer", "description": "The total number of currency accounts." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/MCAccountObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } }, "example": { "count": 1, "accounts": [ { "id": "5105ba8b-e54f-437c-9b98-10345d99791e", "userId": "c77f11bb-b869-41eb-af27-e64a62c980c6", "createdAt": "2023-10-01T12:00:00Z", "updatedAt": "2023-10-01T12:00:00Z", "status": "AVAILABLE", "accountHolderName": "Henry Wu", "accountType": "Checking", "purpose": "03", "currency": "USD", "bankName": "Citibank", "bankCode": "", "branchName": "", "accountNumber": "73380000000363268", "routingNumber": "031100209", "swiftCode": "GEOORUMMXXX", "sortCode": "", "iban": "", "bankCountry": "United States", "bankCity": "New York", "bankAddress": "111 Wall Street, New York, New York 10043, United States", "bankPostalCode": "10043", "failedReason": "" } ], "nextCursor": "2023-10-01T12:00:00Z" } }, "MCAccountDepositObject": { "type": "object", "properties": { "id": { "type": "string", "description": "Deposit ID." }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time when the deposit was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "The date and time when the deposit was last updated." }, "userId": { "type": "string", "description": "User ID." }, "type": { "type": "string", "description": "Deposit type.", "enum": [ "EXTERNAL", "INTERNAL" ] }, "currencyAccountId": { "type": "string", "description": "Currency account ID of the currency account receiving funds." }, "sourceAmount": { "type": "number", "description": "Source amount." }, "sourceCurrency": { "type": "string", "description": "Source currency received. Three-letter ISO currency code in upper case." }, "receivedAmount": { "type": "number", "description": "The amount received." }, "receivedCurrency": { "type": "string", "description": "The currency received." }, "feeAmount": { "type": "number", "description": "The service fee charged by HIFI for the deposit." }, "feeCurrency": { "type": "string", "description": "Currency of service fee. Three-letter ISO currency code in upper case." }, "feeRate": { "type": "number", "description": "Service fee exchange rate." }, "debitedAmount": { "type": "number", "description": "The amount that is to be credited to the user's balance.\n`debitedAmount` = `receivedAmount` - `feeAmount`.\n" }, "debitedCurrency": { "type": "string", "description": "Currency of the amount credited to the user's balance. Three-letter ISO currency code in upper case." }, "rate": { "type": "number", "description": "Exchange rate." }, "status": { "type": "string", "description": "`INITIATED` - Deposit is initiated.\n`PENDING` - Deposit has been received and am currently going through review.\n`COMPLETED` - Deposit review has been approved and completed.\n`CANCELED` - Deposit has been cancelled.\n`CLOSED` - Deposit have been rejected and may be resubmitted.\n`REJECTED` - If the deposit is rejected, the corresponding deposit flow cannot be initiated again.\n`REFUNDED` - Deposit has been rejected, and a refund has been made.\n", "enum": [ "INITIATED", "PENDING", "COMPLETED", "CANCELED", "CLOSED", "REJECTED", "REFUNDED" ] }, "swiftCode": { "type": "string", "description": "SWIFT code for the currency account." }, "payee": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the payee." }, "address": { "type": "string", "description": "The address of the payee." }, "accountNumber": { "type": "string", "description": "The account number of the payee." } } }, "payer": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the payer." }, "country": { "type": "string", "description": "The country of the payer." }, "address": { "type": "string", "description": "The address of the payer." }, "bankName": { "type": "string", "description": "The name of the bank of the payer." }, "accountNumber": { "type": "string", "description": "The account number of the payer." }, "userId": { "type": "string", "description": "The user ID of the payer for `INTERNAL_TRANSFER`." } } }, "bankReference": { "type": "string", "description": "Reference number provided by the bank." }, "declareId": { "type": "string", "description": "The ID number for the declaration notification required by some banking partners for incoming restricted currencies, such as `BRL`, `THB`, and `PHP`.\n" }, "reference": { "type": "string", "description": "Reference information." }, "remark": { "type": "string", "description": "Remark information." } }, "example": { "id": "5105ba8b-e54f-437c-9b98-10345d99791e", "createdAt": "2023-10-01T12:00:00Z", "updatedAt": "2023-10-01T12:00:00Z", "userId": "c77f11bb-b869-41eb-af27-e64a62c980c6", "type": "EXTERNAL_TRANSFER", "currencyAccountId": "5105ba8b-e54f-437c-9b98-10345d99791e", "sourceAmount": 100, "sourceCurrency": "USD", "receivedAmount": 90, "receivedCurrency": "USD", "feeAmount": 10, "feeCurrency": "USD", "feeRate": 1, "debitedAmount": 90, "debitedCurrency": "USD", "rate": 1, "status": "PENDING", "swiftCode": "BOFAUS3N", "payee": { "name": "John Doe", "address": "123 Main St, New York, NY 10001", "accountNumber": "1234567890" }, "payer": { "name": "Jane Smith", "country": "USA", "address": "456 Elm St, Los Angeles, CA 90001", "bankName": "Bank of America", "accountNumber": "0987654321", "userId": null }, "bankReference": "REF1234567890", "declareId": "DECL1234567890", "reference": null, "remark": null } }, "MCAccountDepositListObject": { "type": "object", "properties": { "count": { "type": "integer", "description": "The total number of deposits." }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/MCAccountDepositObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } }, "example": { "count": 1, "data": [ { "id": "5105ba8b-e54f-437c-9b98-10345d99791e", "createdAt": "2023-10-01T12:00:00Z", "updatedAt": "2023-10-01T12:00:00Z", "userId": "c77f11bb-b869-41eb-af27-e64a62c980c6", "type": "EXTERNAL_TRANSFER", "currencyAccountId": "5105ba8b-e54f-437c-9b98-10345d99791e", "sourceAmount": 100, "sourceCurrency": "USD", "receivedAmount": 90, "receivedCurrency": "USD", "feeAmount": 10, "feeCurrency": "USD", "feeRate": 1, "debitedAmount": 90, "debitedCurrency": "USD", "rate": 1, "status": "PENDING", "swiftCode": "BOFAUS3N", "payee": { "name": "John Doe", "address": "123 Main St, New York, NY 10001", "accountNumber": "1234567890" }, "payer": { "name": "Jane Smith", "country": "USA", "address": "456 Elm St, Los Angeles, CA 90001", "bankName": "Bank of America", "accountNumber": "0987654321", "userId": null }, "bankReference": "REF1234567890", "declareId": "DECL1234567890", "reference": null, "remark": null } ], "nextCursor": "2023-10-01T12:00:00Z" } }, "MCAccountBalanceObject": { "type": "object", "properties": { "userId": { "type": "string", "description": "User ID." }, "balances": { "type": "array", "items": { "type": "object", "properties": { "currency": { "type": "string", "description": "Three-letter ISO currency code in upper case." }, "amount": { "type": "number", "description": "balance." } } } } }, "example": { "userId": "c77f11bb-b869-41eb-af27-e64a62c980c6", "balances": [ { "currency": "USD", "amount": 1000 }, { "currency": "EUR", "amount": 500 } ] } }, "MCAccountStoreObject": { "type": "object", "properties": { "id": { "type": "string", "description": "store ID." }, "userId": { "type": "string", "description": "user ID." }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time when the store was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "The date and time when the store was last updated." }, "apiStatus": { "type": "string", "description": "`PENDING` = API information has been submitted for verification.\n`SUCCESS` = API verification success.\n`FAIL` = API verification failed.\n", "enum": [ "PENDING", "SUCCESS", "FAIL" ] }, "status": { "type": "string", "description": "`PENDING` = Store information has been submitted.\n`APPROVED` = Store has been approved.\n`DECLINED` = Store has been declined.\n", "enum": [ "PENDING", "APPROVED", "DECLINED" ] }, "store": { "type": "object", "description": "store details.", "$ref": "#/components/schemas/MCAccountStore" }, "authUrl": { "type": "string", "description": "Authorization." } }, "example": { "id": "5105ba8b-e54f-437c-9b98-10345d99791e", "userId": "c77f11bb-b869-41eb-af27-e64a62c980c6", "createdAt": "2023-10-01T12:00:00Z", "updatedAt": "2023-10-01T12:00:00Z", "apiStatus": "PENDING", "status": "PENDING", "store": { "name": "My Store", "category": "E-commerce" }, "authUrl": "https://example.com/auth" } }, "OfframpStatusEnum": { "type": "string", "enum": [ "NOT_INITIATED", "CREATED", "OPEN_QUOTE", "CRYPTO_INITIATED", "AWAITING_FUNDS", "CRYPTO_PENDING", "CRYPTO_PROCESSED", "FIAT_INITIATED", "FIAT_PENDING", "COMPLETED", "FIAT_FAILED", "CRYPTO_RETURNED", "CRYPTO_FAILED", "QUOTE_FAILED", "IN_REVIEW" ], "description": "Refer to [here](https://docs.hifibridge.com/docs/transfers/offramps#transaction-status) for more details on each offramp status.\n" }, "CreateOfframp": { "type": "object", "title": "Offramp", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "supportingDocumentType": { "type": "string", "enum": [ "billing_document", "order_document", "shipment_document", "regulatory_document", "transport_document", "other_document" ], "description": "The type of supporting document, required for swift payment.\n" }, "supportingDocumentUrl": { "type": "string", "description": "The URL of the supporting document, required for swift payment.\n" }, "description": { "type": "string", "description": "Memo code or description for usd offramp." }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/OfframpDestination" }, "developerFee": { "type": "array", "description": "custom offramp fees, omit if no fees are charged", "nullable": true, "items": { "$ref": "#/components/schemas/DeveloperFee" } } }, "required": [ "requestId", "source", "destination" ] }, "CreateUsdOfframp": { "type": "object", "title": "Offramp (USD)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "supportingDocumentType": { "type": "string", "enum": [ "billing_document", "order_document", "shipment_document", "regulatory_document", "transport_document", "other_document" ], "description": "The type of supporting document, required for swift payment.\n" }, "supportingDocumentUrl": { "type": "string", "description": "The URL of the supporting document, required for swift payment.\n" }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/UsdOfframpDestination" }, "developerFee": { "type": "object", "description": "custom offramp developer fee, omit if no developer fee is charged", "nullable": true, "$ref": "#/components/schemas/DeveloperFee" } }, "required": [ "requestId", "source", "destination" ] }, "UsdOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "usd" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" }, "sameDayAch": { "type": "boolean", "default": false, "description": "same day ACH offramp for a $1 additional fee" }, "achReference": { "type": "string", "description": "a reference message to include when offramping through ACH transfer. \n\nit can be at most 10 characters, A-Z, a-z, 0-9, and spaces. Note that as of `2024-08-06`, setting this field is only supported for certain developers while we work on rolling out general support for everyone.\n" }, "wireMessage": { "type": "string", "description": "a message to include when offramping through WIRE transfer. \n\nit can be at most 4 lines, each with a max length of 35 char according to the Fedwire standard.\n" }, "swiftReference": { "type": "string", "description": "A reference message to include when offramping through SWIFT transfer that is mainly use to indicate the purpose of payment. \n\nit can be at most 12 characters.\n" } }, "required": [ "currency", "accountId" ] }, "CreateEuroOfframp": { "type": "object", "title": "Offramp (EURO)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/EuroOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "EuroOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "eur" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" }, "sepaReference": { "type": "string", "description": "a reference message to include when offramping through SEPA transfer. \n\nit must be between 6 to 140 characters. The allowed characters are a-z, A-Z, 0-9, spaces, ampersand (&), hyphen (-), full stop (.), and solidus (/).\n" } }, "required": [ "currency", "accountId" ] }, "CreateBrlOfframp": { "type": "object", "title": "Offramp (BRL)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/BrlOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "CreateBrazilGlobalNetworkOfframp": { "type": "object", "title": "Offramp Global Network (BRL)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "invoice_payments", "payment_for_services", "payment_for_software", "payment_for_imported_goods", "travel_services", "transfer_to_own_account", "repayment_of_loans", "payroll", "payment_of_property_rental", "information_service_charges", "advertising_and_public_relations", "royalty_and_ip_fees", "financial_service_fees", "advisory_and_consulting_fees", "representative_office_expenses", "tax_payment", "transportation_fees", "construction_costs", "insurance_premium", "offline_goods_trade", "insurance_claims", "remittance_to_family_or_friends", "education_expenses", "medical_treatment", "donations", "mutual_fund_investment", "currency_exchange", "advance_payment_for_goods", "merchant_settlement", "repatriation_fund_settlement" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/BrlOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "BrlOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "brl" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" }, "paymentReference": { "type": "string", "description": "a reference message to include when offramping.\n" } }, "required": [ "userId", "currency", "accountId" ] }, "CreateCopOfframp": { "type": "object", "title": "Offramp (COP)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/CopOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "CopOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "cop" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" } }, "required": [ "currency", "accountId" ] }, "CreateMxnOfframp": { "type": "object", "title": "Offramp (MXN)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/MxnOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "CreateMexicoGlobalNetworkOfframp": { "type": "object", "title": "Offramp Global Network (MXN)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "invoice_payments", "payment_for_services", "payment_for_software", "payment_for_imported_goods", "travel_services", "transfer_to_own_account", "repayment_of_loans", "payroll", "payment_of_property_rental", "information_service_charges", "advertising_and_public_relations", "royalty_and_ip_fees", "financial_service_fees", "advisory_and_consulting_fees", "representative_office_expenses", "tax_payment", "transportation_fees", "construction_costs", "insurance_premium", "offline_goods_trade", "insurance_claims", "remittance_to_family_or_friends", "education_expenses", "medical_treatment", "donations", "mutual_fund_investment", "currency_exchange", "advance_payment_for_goods", "merchant_settlement", "repatriation_fund_settlement" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/MxnOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "MxnOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "mxn" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" }, "paymentReference": { "type": "string", "description": "a reference message to include when offramping.\n" } }, "required": [ "currency", "accountId" ] }, "CreateArsOfframp": { "type": "object", "title": "Offramp (ARS)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/ArsOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "ArsOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "ars" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" } }, "required": [ "currency", "accountId" ] }, "CreateAfricaOfframp": { "type": "object", "title": "Offramp (Africa)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/AfricaOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination", "purposeOfPayment" ] }, "AfricaOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "description": "fiat currency.\nLook at the list of supported `currency` [here](https://docs.google.com/spreadsheets/d/1QxAWGoZMznB6_Ts4mzFcFD49ZOMUZNdNiR6wlr8NDL0/edit?gid=293141391#gid=293141391).\nMake sure the `currency` enum is supported for the provided `accountId`.\n" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" } }, "required": [ "currency", "accountId" ] }, "CreateHongKongGlobalNetworkOfframp": { "type": "object", "title": "Offramp Global Network (HKD)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "invoice_payments", "payment_for_services", "payment_for_software", "payment_for_imported_goods", "travel_services", "transfer_to_own_account", "repayment_of_loans", "payroll", "payment_of_property_rental", "information_service_charges", "advertising_and_public_relations", "royalty_and_ip_fees", "financial_service_fees", "advisory_and_consulting_fees", "representative_office_expenses", "tax_payment", "transportation_fees", "construction_costs", "insurance_premium", "offline_goods_trade", "insurance_claims", "remittance_to_family_or_friends", "education_expenses", "medical_treatment", "donations", "mutual_fund_investment", "currency_exchange", "advance_payment_for_goods", "merchant_settlement", "repatriation_fund_settlement" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/HongKongOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "HongKongOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "hkd", "usd" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" }, "paymentReference": { "type": "string", "description": "a reference message to include when offramping.\n" } }, "required": [ "currency", "accountId" ] }, "CreateChinaGlobalNetworkOfframp": { "type": "object", "title": "Offramp Global Network (CHN)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "invoice_payments", "payment_for_services", "payment_for_software", "payment_for_imported_goods", "travel_services", "transfer_to_own_account", "repayment_of_loans", "payroll", "payment_of_property_rental", "information_service_charges", "advertising_and_public_relations", "royalty_and_ip_fees", "financial_service_fees", "advisory_and_consulting_fees", "representative_office_expenses", "tax_payment", "transportation_fees", "construction_costs", "insurance_premium", "offline_goods_trade", "insurance_claims", "remittance_to_family_or_friends", "education_expenses", "medical_treatment", "donations", "mutual_fund_investment", "currency_exchange", "advance_payment_for_goods", "merchant_settlement", "repatriation_fund_settlement" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/ChinaOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "ChinaOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "usd", "cny" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" }, "paymentReference": { "type": "string", "description": "a reference message to include when offramping.\n" } }, "required": [ "currency", "accountId" ] }, "CreateSingaporeGlobalNetworkOfframp": { "type": "object", "title": "Offramp Global Network (SGP)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "invoice_payments", "payment_for_services", "payment_for_software", "payment_for_imported_goods", "travel_services", "transfer_to_own_account", "repayment_of_loans", "payroll", "payment_of_property_rental", "information_service_charges", "advertising_and_public_relations", "royalty_and_ip_fees", "financial_service_fees", "advisory_and_consulting_fees", "representative_office_expenses", "tax_payment", "transportation_fees", "construction_costs", "insurance_premium", "offline_goods_trade", "insurance_claims", "remittance_to_family_or_friends", "education_expenses", "medical_treatment", "donations", "mutual_fund_investment", "currency_exchange", "advance_payment_for_goods", "merchant_settlement", "repatriation_fund_settlement" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/SingaporeOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "SingaporeOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "usd", "sgd" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" }, "paymentReference": { "type": "string", "description": "a reference message to include when offramping.\n" } }, "required": [ "currency", "accountId" ] }, "CreateNigeriaGlobalNetworkOfframp": { "type": "object", "title": "Offramp Global Network (NGN)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "invoice_payments", "payment_for_services", "payment_for_software", "payment_for_imported_goods", "travel_services", "transfer_to_own_account", "repayment_of_loans", "payroll", "payment_of_property_rental", "information_service_charges", "advertising_and_public_relations", "royalty_and_ip_fees", "financial_service_fees", "advisory_and_consulting_fees", "representative_office_expenses", "tax_payment", "transportation_fees", "construction_costs", "insurance_premium", "offline_goods_trade", "insurance_claims", "remittance_to_family_or_friends", "education_expenses", "medical_treatment", "donations", "mutual_fund_investment", "currency_exchange", "advance_payment_for_goods", "merchant_settlement", "repatriation_fund_settlement" ] }, "description": { "type": "string" }, "source": { "type": "object", "description": "offramp source", "$ref": "#/components/schemas/OfframpSource" }, "destination": { "type": "object", "description": "offramp destination", "$ref": "#/components/schemas/NigeriaOfframpDestination" }, "fee": { "type": "object", "description": "custom offramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OfframpFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "NigeriaOfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "ngn" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" }, "paymentReference": { "type": "string", "description": "a reference message to include when offramping.\n" } }, "required": [ "currency", "accountId" ] }, "OfframpSource": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of crypto currency to send" }, "currency": { "type": "string", "enum": [ "usdc", "usdt", "usdHifi" ], "description": "crypto currency (note: `usdHifi` is only available in sandbox to simulate token movement)\n" }, "chain": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA", "BASE" ] }, "userId": { "type": "string", "format": "uuid", "description": "user who is sending the crypto, required if `externalWalletId` is not provided" }, "externalWalletId": { "type": "string", "format": "uuid", "description": "external wallet id who is sending the crypto, required if `userId` is not provided" } }, "required": [ "currency", "chain" ] }, "OfframpDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to receive" }, "currency": { "type": "string", "enum": [ "usd", "eur", "brl", "hkd", "mxn", "cop", "ars", "ngn", "ugx", "kes", "zmw", "mwk", "rwf", "tzs", "xaf", "xof", "bwp", "xaf", "cdf", "ghs", "zar" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "account that is receiving the fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the fiat" }, "sameDayAch": { "type": "boolean", "default": false, "description": "same day ACH offramp for a $1 additional fee" }, "achReference": { "type": "string", "description": "a reference message to include when offramping through ACH transfer. \n\nit can be at most 10 characters, A-Z, a-z, 0-9, and spaces. Note that as of `2024-08-06`, setting this field is only supported for certain developers while we work on rolling out general support for everyone.\n" }, "sepaReference": { "type": "string", "description": "a reference message to include when offramping through SEPA transfer. \n\nit must be between 6 to 140 characters. The allowed characters are a-z, A-Z, 0-9, spaces, ampersand (&), hyphen (-), full stop (.), and solidus (/).\n" }, "wireMessage": { "type": "string", "description": "a message to include when offramping through WIRE transfer. \n\nit can be at most 4 lines, each with a max length of 35 char according to the Fedwire standard.\n" }, "paymentReference": { "type": "string", "description": "a reference message to include when offramping. \n\nPlease utilize `wireMessage` for wire transfer and `achReference` for ACH transfer instead of this field.\n" }, "swiftReference": { "type": "string", "description": "a reference message or remittance information to include when offramping through SWIFT transfer. \n\nit can have at most 4 lines (separated by \"\\n\"), each line with a max length of 35 chars. The allowed characters are a-z, A-Z, 0-9, special characters (/ - ? : ( ) . , ' +), and spaces.\n" }, "swiftCharges": { "type": "string", "enum": [ "sha", "our" ] } }, "required": [ "currency", "accountId" ] }, "DeveloperFee": { "type": "object", "properties": { "fees": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "PERCENTAGE", "FLAT" ] }, "value": { "type": "string", "description": "Fee amount as a string. For PERCENTAGE type, \"0.0005\" represents 0.05%.\nFor FLAT type, represents absolute amount.\nFor PERCENTAGE type, the value must be between 0 and 1 with max 4 decimal places.\n" }, "walletAddress": { "type": "string", "description": "Wallet address to receive the fee" } }, "required": [ "type", "value", "walletAddress" ] } } }, "required": [ "fees" ] }, "OfframpPaymentTrackingObject": { "type": "object", "properties": { "fedBatchId": { "type": "string", "description": "Fedwire or ACH batch ID used for settlement tracking" }, "imad": { "type": "string", "description": "Input Messaging Accountability Data. A combination of a date, source identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application. Unique to the payment." }, "omad": { "type": "string", "description": "Output Messaging Accountability Data. A combination of a date, destination identifier, and sequence number assigned to a Fedwire message when it is processed by the Federal Reserve Bank Funds Transfer application." }, "traceNumber": { "type": "string", "description": "Unique ACH trace number for the transaction" }, "paymentRail": { "type": "string", "enum": [ "wire", "ach", "rtp", "swift" ] } } }, "OfframpDepositInstructionsList": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "fromAddress": { "type": "string" }, "toAddress": { "type": "string" }, "currency": { "type": "string" }, "contractAddress": { "type": "string" }, "rawAmount": { "type": "string" }, "amount": { "type": "number" }, "chain": { "type": "string" }, "collected": { "type": "boolean" }, "collectable": { "type": "boolean" }, "expiresAt": { "type": "string", "format": "date-time" }, "transactionHash": { "type": "string", "nullable": true } } } }, "OfframpObject": { "type": "object", "properties": { "transferType": { "type": "string" }, "transferDetails": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "unique identifier for the offramp" }, "requestId": { "type": "string", "format": "uuid" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "status": { "$ref": "#/components/schemas/OfframpStatusEnum" }, "failedReason": { "type": "string" }, "source": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid" }, "chain": { "type": "string" }, "currency": { "type": "string" }, "amount": { "type": "number" }, "walletAddress": { "type": "string" }, "user": { "type": "object", "properties": { "email": { "type": "string" }, "lastName": { "type": "string", "nullable": true }, "firstName": { "type": "string", "nullable": true }, "businessName": { "type": "string", "nullable": true } } } } }, "destination": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid" }, "amount": { "type": "number" }, "currency": { "type": "string" }, "user": { "type": "object", "properties": { "email": { "type": "string" }, "lastName": { "type": "string", "nullable": true }, "firstName": { "type": "string", "nullable": true }, "businessName": { "type": "string", "nullable": true } } }, "accountId": { "type": "string", "format": "uuid", "description": "destination offramp account ID" }, "sameDayAch": { "type": "boolean", "default": false, "description": "same day ACH offramp for a $1 additional fee" } } }, "receipt": { "type": "object", "properties": { "transactionHash": { "type": "string", "nullable": true }, "paymentTracking": { "$ref": "#/components/schemas/OfframpPaymentTrackingObject" } } }, "developerFee": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "unique identifier for the developer fee record" }, "transactionHash": { "type": "string", "nullable": true, "description": "transaction hash of the fee transfer" }, "fees": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "PERCENTAGE", "FLAT" ] }, "value": { "type": "string", "description": "fee amount as string, for percentage represents decimal (e.g. \"0.0005\" = 0.05%)" }, "amount": { "type": "string", "description": "actual fee amount charged" }, "walletAddress": { "type": "string", "description": "wallet address receiving the fee" } }, "required": [ "type", "value", "amount", "walletAddress" ] } } } }, "quoteInformation": { "type": "object", "properties": { "sendGross": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "sendNet": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "receiveGross": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "receiveNet": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "rate": { "type": "string" }, "expiresAt": { "type": "string", "format": "date-time" } } }, "depositInformation": { "$ref": "#/components/schemas/OfframpDepositInstructionsList" } } } } }, "OfframpQuoteObject": { "$ref": "#/components/schemas/OfframpObject" }, "OfframpAcceptedQuoteObject": { "$ref": "#/components/schemas/OfframpObject" }, "OfframpRecordObject": { "$ref": "#/components/schemas/OfframpObject" }, "OfframpAllRecordsObject": { "type": "object", "properties": { "count": { "type": "integer" }, "records": { "type": "array", "items": { "$ref": "#/components/schemas/OfframpRecordObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } } }, "OfframpConversionRateObject": { "type": "object", "properties": { "fromCurrency": { "type": "string", "enum": [ "usdc" ], "description": "source currency" }, "toCurrency": { "type": "string", "enum": [ "usd", "brl", "mxn", "ugx", "ngn", "kes", "tzs", "mwk", "xaf", "bwp", "zar", "usd-hka", "usd-chn", "cny", "hkd", "sgd", "usd-sgp" ], "description": "target currency" }, "conversionRate": { "type": "string" }, "conversionRates": { "type": "array", "items": { "type": "object", "properties": { "transferType": { "type": "string", "description": "when `transferType` is `default`, this is the conversion rate for the default transfer type" }, "conversionRate": { "type": "string" } } } } }, "example": { "fromCurrency": "usdc", "toCurrency": "usd", "conversionRate": "1", "conversionRates": [ { "transferType": "default", "conversionRate": "1" } ] } }, "CreateCryptoTransfer": { "type": "object", "title": "Crypto Transfer", "properties": { "requestId": { "type": "string", "description": "unique identifier for the transfer request (recommend using uuid v4)" }, "currency": { "type": "string", "enum": [ "usdc", "usdt", "usdHifi" ], "description": "crypto currency (note: `usdHifi` is only available in sandbox to simulate token movement)\n" }, "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of crypto currency to send" }, "chain": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "BASE", "SOLANA" ] }, "source": { "type": "object", "description": "crypto transfer source", "$ref": "#/components/schemas/CryptoTransferSource" }, "destination": { "type": "object", "description": "crypto transfer destination", "$ref": "#/components/schemas/CryptoTransferDestination" }, "fee": { "type": "object", "description": "crypto transfer fee", "$ref": "#/components/schemas/CryptoTransferFee" }, "requireApproval": { "type": "boolean", "description": "Whether this transfer requires approval before processing.\n- `true`: Transfer will enter approval workflow\n- `false` or omitted: Transfer proceeds immediately\n", "default": false, "example": false } }, "required": [ "requestId", "source", "destination" ] }, "CryptoTransferSource": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "description": "user who is sending the crypto" } }, "required": [ "userId" ] }, "CryptoTransferDestination": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the crypto (should provide either `userId` or `walletAddress`)\n" }, "walletAddress": { "type": "string", "description": "wallet address that is receiving the crypto (should provide either `userId` or `walletAddress`)\n" } }, "required": [ "userId" ] }, "CryptoTransferFee": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "FIX", "PERCENT" ] }, "value": { "type": "number", "format": "float", "minimum": 0, "description": "custom transaction fee (`0.01` represents `1%` when `type` is set to `PERCENT`, checkout https://docs.hifibridge.com/v2/docs/fee-collection for more information)\n" } }, "required": [ "type", "value" ] }, "CreateBridgingRequest": { "type": "object", "title": "Bridging Request", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of crypto currency to bridge" }, "source": { "type": "object", "description": "bridging source", "$ref": "#/components/schemas/BridgingRequestSource" }, "destination": { "type": "object", "description": "bridging destination", "$ref": "#/components/schemas/BridgingRequestDestination" }, "requireApproval": { "type": "boolean", "description": "Whether this bridging request requires approval before processing.\n- `true`: Request will enter approval workflow\n- `false` or omitted: Request proceeds immediately\n", "default": false, "example": false } }, "required": [ "requestId", "amount", "source", "destination" ] }, "BridgingRequestSource": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "description": "user who is sending the crypto" }, "chain": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA" ] }, "currency": { "type": "string", "enum": [ "usdc", "usdt" ], "description": "crypto currency" } }, "required": [ "userId", "chain", "currency" ] }, "BridgingRequestDestination": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the crypto" }, "chain": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "BASE", "OPTIMISM", "ARBITRUM", "SOLANA" ] }, "currency": { "type": "string", "enum": [ "usdc", "usdt" ], "description": "crypto currency" }, "walletAddress": { "type": "string", "description": "wallet address that is receiving the crypto (should provide either `userId` or `walletAddress`)\nTo use this feature, please ensure you're enrolled in HIFI's Gas Sponsorship Program or provide a userId; otherwise, the transaction may get stuck.\n" } }, "required": [ "chain", "currency" ] }, "CryptoToCryptoTransferObject": { "type": "object", "properties": { "transferType": { "type": "string", "example": "WALLET.TRANSFER" }, "transferDetails": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "requestId": { "type": "string", "format": "uuid", "example": "d0d62bec-2623-4f61-afda-148d6a8e1009" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:11:36.654998+00:00" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" }, "chain": { "type": "string", "example": "POLYGON_MAINNET" }, "currency": { "type": "string", "example": "usdc" }, "contractAddress": { "type": "string", "example": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" }, "status": { "type": "string", "example": "CREATED" }, "failedReason": { "type": "string", "example": "" }, "source": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "walletAddress": { "type": "string", "example": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA" }, "walletType": { "type": "string", "example": "INDIVIDUAL" }, "user": { "type": "object", "properties": { "email": { "type": "string", "example": "samuelyoon0@gmail.com" }, "lastName": { "type": "string", "example": "Yoon" }, "firstName": { "type": "string", "example": "Samuel" }, "businessName": { "type": "string", "example": null } } } } }, "destination": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "walletType": { "type": "string", "example": "INDIVIDUAL" }, "walletAddress": { "type": "string", "example": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA" }, "user": { "type": "object", "properties": { "email": { "type": "string", "example": "samuelyoon0@gmail.com" }, "lastName": { "type": "string", "example": "Yoon" }, "firstName": { "type": "string", "example": "Samuel" }, "businessName": { "type": "string", "example": null } } } } }, "amount": { "type": "number", "format": "float", "example": 0.01 }, "amountIncludeDeveloperFee": { "type": "number", "format": "float", "example": 0.01 }, "receipt": { "type": "object", "properties": { "transactionHash": { "type": "string", "example": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53" }, "userOpHash": { "type": "string", "example": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" } } }, "developerFee": { "type": "object", "properties": { "feeId": { "type": "string", "format": "uuid", "example": "9b354c37-d20d-4d94-bcd8-c852353ca406" }, "feeType": { "type": "string", "example": "FIX" }, "feeAmount": { "type": "number", "format": "float", "example": 0.5 }, "feePercent": { "type": "number", "format": "float", "example": 0 }, "status": { "type": "string", "example": "CREATED" }, "transactionHash": { "type": "string", "example": null }, "failedReason": { "type": "string", "example": null } } }, "approval": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "status": { "type": "string", "example": "PENDING" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:11:36.654998+00:00" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" }, "transferId": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "transferType": { "type": "string", "example": "WALLET.TRANSFER" }, "fromDashboard": { "type": "boolean", "example": true }, "initiatorProfileId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "votes": { "type": "array", "description": "Array of approval votes (only present when status is PENDING_APPROVAL or REJECTED)", "items": { "type": "object", "properties": { "approverId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "vote": { "type": "string", "enum": [ "APPROVE", "REJECT" ], "example": "REJECT" }, "comment": { "type": "string", "example": "Transfer amount exceeds daily limit" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" } } } } } } } } }, "example": { "transferType": "WALLET.TRANSFER", "transferDetails": { "id": "006737ca-42d5-4780-b3c2-aeb63279c591", "requestId": "d0d62bec-2623-4f61-afda-148d6a8e1009", "createdAt": "2025-02-03T16:11:36.654998+00:00", "updatedAt": "2025-02-03T16:12:41.503+00:00", "chain": "POLYGON_MAINNET", "currency": "usdc", "contractAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", "status": "CREATED", "failedReason": "", "source": { "userId": "aec66b02-4f3f-471c-839a-94820b36abb2", "walletAddress": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA", "walletType": "INDIVIDUAL", "user": { "email": "samuelyoon0@gmail.com", "lastName": "Yoon", "firstName": "Samuel", "businessName": null } }, "destination": { "userId": "aec66b02-4f3f-471c-839a-94820b36abb2", "walletType": "INDIVIDUAL", "walletAddress": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA", "user": { "email": "samuelyoon0@gmail.com", "lastName": "Yoon", "firstName": "Samuel", "businessName": null } }, "amount": 0.01, "amountIncludeDeveloperFee": 0.01, "receipt": { "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" }, "developerFee": { "feeId": "9b354c37-d20d-4d94-bcd8-c852353ca406", "feeType": "FIX", "feeAmount": 0.5, "feePercent": 0, "status": "CREATED", "transactionHash": null, "failedReason": null } } } }, "CryptoToCryptoRecordObject": { "type": "object", "properties": { "transferType": { "type": "string", "example": "WALLET.TRANSFER" }, "transferDetails": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "requestId": { "type": "string", "format": "uuid", "example": "d0d62bec-2623-4f61-afda-148d6a8e1009" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:11:36.654998+00:00" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" }, "chain": { "type": "string", "example": "POLYGON_MAINNET" }, "currency": { "type": "string", "example": "usdc" }, "contractAddress": { "type": "string", "example": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" }, "status": { "type": "string", "example": "CREATED" }, "failedReason": { "type": "string", "example": "" }, "source": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "walletAddress": { "type": "string", "example": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA" }, "walletType": { "type": "string", "example": "INDIVIDUAL" }, "user": { "type": "object", "properties": { "email": { "type": "string", "example": "samuelyoon0@gmail.com" }, "lastName": { "type": "string", "example": "Yoon" }, "firstName": { "type": "string", "example": "Samuel" }, "businessName": { "type": "string", "example": null } } } } }, "destination": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "walletType": { "type": "string", "example": "INDIVIDUAL" }, "walletAddress": { "type": "string", "example": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA" }, "user": { "type": "object", "properties": { "email": { "type": "string", "example": "samuelyoon0@gmail.com" }, "lastName": { "type": "string", "example": "Yoon" }, "firstName": { "type": "string", "example": "Samuel" }, "businessName": { "type": "string", "example": null } } } } }, "amount": { "type": "number", "format": "float", "example": 0.01 }, "amountIncludeDeveloperFee": { "type": "number", "format": "float", "example": 0.01 }, "receipt": { "type": "object", "properties": { "transactionHash": { "type": "string", "example": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53" }, "userOpHash": { "type": "string", "example": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" } } }, "developerFee": { "type": "object", "properties": { "feeId": { "type": "string", "format": "uuid", "example": "9b354c37-d20d-4d94-bcd8-c852353ca406" }, "feeType": { "type": "string", "example": "FIX" }, "feeAmount": { "type": "number", "format": "float", "example": 0.5 }, "feePercent": { "type": "number", "format": "float", "example": 0 }, "status": { "type": "string", "example": "CREATED" }, "transactionHash": { "type": "string", "example": null }, "failedReason": { "type": "string", "example": null } } } } } }, "example": { "transferType": "WALLET.TRANSFER", "transferDetails": { "id": "006737ca-42d5-4780-b3c2-aeb63279c591", "requestId": "d0d62bec-2623-4f61-afda-148d6a8e1009", "createdAt": "2025-02-03T16:11:36.654998+00:00", "updatedAt": "2025-02-03T16:12:41.503+00:00", "chain": "POLYGON_MAINNET", "currency": "usdc", "contractAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", "status": "CREATED", "failedReason": "", "source": { "userId": "aec66b02-4f3f-471c-839a-94820b36abb2", "walletAddress": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA", "walletType": "INDIVIDUAL", "user": { "email": "samuelyoon0@gmail.com", "lastName": "Yoon", "firstName": "Samuel", "businessName": null } }, "destination": { "userId": "aec66b02-4f3f-471c-839a-94820b36abb2", "walletType": "INDIVIDUAL", "walletAddress": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA", "user": { "email": "samuelyoon0@gmail.com", "lastName": "Yoon", "firstName": "Samuel", "businessName": null } }, "amount": 0.01, "amountIncludeDeveloperFee": 0.01, "receipt": { "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" }, "developerFee": { "feeId": "9b354c37-d20d-4d94-bcd8-c852353ca406", "feeType": "FIX", "feeAmount": 0.5, "feePercent": 0, "status": "CREATED", "transactionHash": null, "failedReason": null } } } }, "CryptoToCryptoAllRecordsObject": { "type": "object", "properties": { "count": { "type": "integer" }, "records": { "type": "array", "items": { "type": "object", "properties": { "transferType": { "type": "string", "example": "WALLET.TRANSFER" }, "transferDetails": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "requestId": { "type": "string", "format": "uuid", "example": "d0d62bec-2623-4f61-afda-148d6a8e1009" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:11:36.654998+00:00" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" }, "chain": { "type": "string", "example": "POLYGON_MAINNET" }, "currency": { "type": "string", "example": "usdc" }, "contractAddress": { "type": "string", "example": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" }, "status": { "type": "string", "example": "CREATED" }, "failedReason": { "type": "string", "example": "" }, "approval": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "status": { "type": "string", "example": "PENDING" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:11:36.654998+00:00" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" }, "transferId": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "transferType": { "type": "string", "example": "WALLET.TRANSFER" }, "fromDashboard": { "type": "boolean", "example": true }, "initiatorProfileId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "votes": { "type": "array", "description": "Array of approval votes (only present when status is PENDING_APPROVAL or REJECTED)", "items": { "type": "object", "properties": { "approverId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "vote": { "type": "string", "enum": [ "APPROVE", "REJECT" ], "example": "REJECT" }, "comment": { "type": "string", "example": "Transfer amount exceeds daily limit" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" } } } } } }, "source": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "walletAddress": { "type": "string", "example": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA" }, "walletType": { "type": "string", "example": "INDIVIDUAL" }, "user": { "type": "object", "properties": { "email": { "type": "string", "example": "samuelyoon0@gmail.com" }, "lastName": { "type": "string", "example": "Yoon" }, "firstName": { "type": "string", "example": "Samuel" }, "businessName": { "type": "string", "example": null } } } } }, "destination": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "walletType": { "type": "string", "example": "INDIVIDUAL" }, "walletAddress": { "type": "string", "example": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA" }, "user": { "type": "object", "properties": { "email": { "type": "string", "example": "samuelyoon0@gmail.com" }, "lastName": { "type": "string", "example": "Yoon" }, "firstName": { "type": "string", "example": "Samuel" }, "businessName": { "type": "string", "example": null } } } } }, "amount": { "type": "number", "format": "float", "example": 0.01 }, "amountIncludeDeveloperFee": { "type": "number", "format": "float", "example": 0.01 }, "receipt": { "type": "object", "properties": { "transactionHash": { "type": "string", "example": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53" }, "userOpHash": { "type": "string", "example": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" } } }, "developerFee": { "type": "object", "properties": { "feeId": { "type": "string", "format": "uuid", "example": "9b354c37-d20d-4d94-bcd8-c852353ca406" }, "feeType": { "type": "string", "example": "FIX" }, "feeAmount": { "type": "number", "format": "float", "example": 0.5 }, "feePercent": { "type": "number", "format": "float", "example": 0 }, "status": { "type": "string", "example": "CREATED" }, "transactionHash": { "type": "string", "example": null }, "failedReason": { "type": "string", "example": null } } } } } } } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } }, "example": { "count": 1, "records": [ { "transferType": "WALLET.TRANSFER", "transferDetails": { "id": "006737ca-42d5-4780-b3c2-aeb63279c591", "requestId": "d0d62bec-2623-4f61-afda-148d6a8e1009", "createdAt": "2025-02-03T16:11:36.654+00:00", "updatedAt": "2025-02-03T16:12:41.503+00:00", "chain": "POLYGON_MAINNET", "currency": "usdc", "contractAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", "status": "CREATED", "failedReason": "", "source": { "userId": "aec66b02-4f3f-471c-839a-94820b36abb2", "walletAddress": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA", "walletType": "INDIVIDUAL", "user": { "email": "samuelyoon0@gmail.com", "lastName": "Yoon", "firstName": "Samuel", "businessName": null } }, "destination": { "userId": "aec66b02-4f3f-471c-839a-94820b36abb2", "walletType": "INDIVIDUAL", "walletAddress": "0xA25641cB6056C371CB65F28aC02450c9206e0fAA", "user": { "email": "samuelyoon0@gmail.com", "lastName": "Yoon", "firstName": "Samuel", "businessName": null } }, "amount": 0.01, "amountIncludeDeveloperFee": 0.01, "receipt": { "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" }, "developerFee": { "feeId": "9b354c37-d20d-4d94-bcd8-c852353ca406", "feeType": "FIX", "feeAmount": 0.5, "feePercent": 0, "status": "CREATED", "transactionHash": null, "failedReason": null } } } ], "nextCursor": "2025-02-03T16:11:36.654+00:00" } }, "BridgeAssetTransfer": { "type": "object", "properties": { "requestId": { "type": "string", "description": "Unique identifier for the transfer request (recommend using uuid v4)" }, "sourceUserId": { "type": "string", "description": "User Id of the sender" }, "destinationUserId": { "type": "string", "description": "User Id of the recipient" }, "amount": { "type": "number", "format": "float", "minimum": 0 }, "sourceChain": { "type": "string", "description": "Chain where the source asset is", "enum": [ "POLYGON_MAINNET", "ETHEREUM_MAINNET", "SOLANA_MAINNET" ] }, "destinationChain": { "type": "string", "description": "Chain where the asset will be bridged to", "enum": [ "POLYGON_MAINNET", "ETHEREUM_MAINNET", "BASE_MAINNET", "OPTIMISM_MAINNET", "ARBITRUM_MAINNET", "SOLANA_MAINNET" ] }, "sourceCurrency": { "type": "string", "enum": [ "usdc" ] }, "destinationCurrency": { "type": "string", "enum": [ "usdc" ] } }, "required": [ "sourceUserId", "destinationUserId", "amount", "requestId", "sourceChain", "sourceCurrency", "destinationCurrency", "destinationChain" ] }, "BridgeAssetTransferObject": { "type": "object", "properties": { "transferType": { "type": "string" }, "transferDetails": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "requestId": { "type": "string", "format": "uuid" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "amount": { "type": "number" }, "status": { "type": "string", "enum": [ "NOT_INITIATED", "OPEN_QUOTE", "CREATED", "SOURCE_INITIATED", "SOURCE_PENDING", "SOURCE_PROCESSED", "SOURCE_FAILED", "DESTINATION_INITIATED", "DESTINATION_PENDING", "COMPLETED", "DESTINATION_FAILED", "QUOTE_FAILED", "UNKNOWN" ] }, "source": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid" }, "walletAddress": { "type": "string" }, "chain": { "type": "string" }, "currency": { "type": "string" } } }, "destination": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid" }, "walletAddress": { "type": "string" }, "chain": { "type": "string" }, "currency": { "type": "string" } } }, "receipt": { "type": "object", "properties": { "transactionHash": { "type": "string" }, "operations": { "type": "object", "properties": { "mint": { "type": "object", "properties": { "transactionHash": { "type": "string", "nullable": true }, "userOpHash": { "type": "string", "nullable": true }, "chain": { "type": "string", "nullable": true } } }, "burn": { "type": "object", "properties": { "transactionHash": { "type": "string", "nullable": true }, "userOpHash": { "type": "string", "nullable": true }, "chain": { "type": "string", "nullable": true } } }, "approve": { "type": "object", "properties": { "transactionHash": { "type": "string", "nullable": true }, "userOpHash": { "type": "string", "nullable": true }, "chain": { "type": "string", "nullable": true } } } } } } }, "failedReason": { "type": "string", "nullable": true }, "fee": { "type": "number", "nullable": true }, "quoteInformation": { "type": "object", "properties": { "sendGross": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "sendNet": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "railFee": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "receiveGross": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "receiveNet": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "rate": { "type": "string" }, "expiresAt": { "type": "string", "format": "date-time" } } } } } }, "example": { "transferType": "WALLET.BRIDGE", "transferDetails": { "id": "9ccafd0f-e47f-43c2-8693-13741b67d638", "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215", "createdAt": "2025-02-24T17:44:54.781519+00:00", "updatedAt": "2025-02-24T17:57:01.185+00:00", "amount": 0.01, "status": "COMPLETED", "source": { "userId": "a804f891-b63c-4b36-99ee-0aa83e6facde", "walletAddress": "0xE9cfBf1D690565579D823264170eE357f80e9A34", "chain": "POLYGON", "currency": "usdc" }, "destination": { "userId": "a804f891-b63c-4b36-99ee-0aa83e6facde", "walletAddress": "0x17f043FB0a39334641beD627551AC095941157B0", "chain": "ETHEREUM", "currency": "usdc" }, "receipt": { "transactionHash": "0x17f043FB0a39334641beD627551AC095941157B0", "operations": { "mint": { "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac", "chain": "ETHEREUM" }, "burn": { "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac", "chain": "POLYGON" }, "approve": { "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac", "chain": "POLYGON" } } }, "failedReason": null, "fee": null, "quoteInformation": { "sendGross": { "amount": "0.01", "currency": "usdc" }, "sendNet": { "amount": "0.01", "currency": "usdc" }, "railFee": { "amount": "0", "currency": "usdc" }, "receiveGross": { "amount": "0.01", "currency": "usdc" }, "receiveNet": { "amount": "0.01", "currency": "usdc" }, "rate": "1", "expiresAt": "2025-02-25T17:44:54.781Z" } } } }, "BridgeAssetTransferListObject": { "type": "object", "properties": { "count": { "type": "integer" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/BridgeAssetTransferObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } }, "example": { "count": 1, "data": [ { "transferType": "WALLET.BRIDGE", "transferDetails": { "id": "9ccafd0f-e47f-43c2-8693-13741b67d638", "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215", "createdAt": "2025-02-24T17:44:54.781+00:00", "updatedAt": "2025-02-24T17:57:01.185+00:00", "amount": 0.01, "status": "COMPLETED", "source": { "userId": "a804f891-b63c-4b36-99ee-0aa83e6facde", "walletAddress": "0xE9cfBf1D690565579D823264170eE357f80e9A34", "chain": "POLYGON", "currency": "usdc" }, "destination": { "userId": "a804f891-b63c-4b36-99ee-0aa83e6facde", "walletAddress": "0x17f043FB0a39334641beD627551AC095941157B0", "chain": "ETHEREUM", "currency": "usdc" }, "failedReason": null, "receipt": { "transactionHash": "0x17f043FB0a39334641beD627551AC095941157B0", "operations": { "mint": { "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac", "chain": "ETHEREUM" }, "approve": { "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac", "chain": "POLYGON" }, "burn": { "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac", "chain": "POLYGON" } } }, "fee": null, "quoteInformation": { "sendGross": { "amount": "0.01", "currency": "usdc" }, "sendNet": { "amount": "0.01", "currency": "usdc" }, "railFee": { "amount": "0", "currency": "usdc" }, "receiveGross": { "amount": "0.01", "currency": "usdc" }, "receiveNet": { "amount": "0.01", "currency": "usdc" }, "rate": "1", "expiresAt": "2025-02-25T17:44:54.781Z" } } } ], "nextCursor": "2025-02-24T17:44:54.781+00:00" } }, "AcceptBridgeAssetTransfer": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "ACCEPT_QUOTE" ], "description": "Action to take on the transfer request" } }, "required": [ "action" ] }, "CreateBatchCryptoTransfer": { "type": "object", "required": [ "requestId", "currency", "chain", "source", "destination" ], "properties": { "requestId": { "type": "string", "format": "uuid", "example": "123e4567-e89b-12d3-a456-426614174000" }, "currency": { "type": "string", "enum": [ "usdc" ], "example": "usdc" }, "chain": { "type": "string", "enum": [ "POLYGON" ], "example": "POLYGON" }, "source": { "type": "object", "required": [ "userId" ], "properties": { "userId": { "type": "string", "format": "uuid", "example": "a1f70737-3844-4782-a321-ad481108a8ec" } } }, "destination": { "type": "object", "required": [ "batch" ], "properties": { "batch": { "type": "array", "maxItems": 50, "items": { "type": "object", "required": [ "amount" ], "properties": { "userId": { "type": "string", "format": "uuid", "example": "a1f70737-3844-4782-a321-ad481108a8ec" }, "walletAddress": { "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$", "example": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e" }, "amount": { "type": "string", "example": "0.01" } } } } } }, "requireApproval": { "type": "boolean", "description": "Whether this batch transfer requires approval before processing.\n- `true`: Transfer will enter approval workflow\n- `false` or omitted: Transfer proceeds immediately\n", "default": false, "example": false } } }, "BatchCryptoTransferObject": { "type": "object", "required": [ "transferType", "transferDetails" ], "properties": { "transferType": { "type": "string", "example": "WALLET.TRANSFER.BATCH" }, "transferDetails": { "type": "object", "required": [ "id", "requestId", "createdAt", "updatedAt", "chain", "currency", "contractAddress", "status", "source", "destination", "receipt" ], "properties": { "id": { "type": "string", "format": "uuid", "example": "879af7af-67bf-469f-b718-d262a39d4857" }, "requestId": { "type": "string", "format": "uuid", "example": "14a84906-b72e-4847-b34d-51b9048fa6a5" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-04-05T00:55:50.609Z" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-04-05T00:56:33.236Z" }, "chain": { "type": "string", "enum": [ "POLYGON" ], "example": "POLYGON" }, "currency": { "type": "string", "enum": [ "usdc" ], "example": "usdc" }, "contractAddress": { "type": "string", "example": "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582" }, "status": { "type": "string", "enum": [ "NOT_INITIATED", "CREATED", "INITIATED", "PENDING", "COMPLETED", "FAILED", "UNKNOWN" ], "example": "COMPLETED" }, "source": { "type": "object", "required": [ "userId", "walletAddress", "walletType" ], "properties": { "userId": { "type": "string", "format": "uuid", "example": "6a13bd30-b3a3-4d44-af33-0b32e58261be" }, "walletAddress": { "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$", "example": "0x99a8c5ED386d217BC6ff0AA1b3585606D475432B" }, "walletType": { "type": "string", "enum": [ "INDIVIDUAL", "BUSINESS" ], "example": "INDIVIDUAL" } } }, "destination": { "type": "object", "required": [ "batch" ], "properties": { "batch": { "type": "array", "maxItems": 50, "items": { "type": "object", "required": [ "amount" ], "properties": { "amount": { "type": "string", "example": "0.04" }, "userId": { "type": "string", "format": "uuid", "example": "6a13bd30-b3a3-4d44-af33-0b32e58261be" } } } } } }, "receipt": { "type": "object", "required": [ "transactionHash" ], "properties": { "transactionHash": { "type": "string", "example": "0x57f0cd3429ea425d982882243428ef4a1eda5f1be2157c1b34ea48b49b24fe7f" }, "userOpHash": { "type": "string", "example": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" }, "approval": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "status": { "type": "string", "example": "PENDING" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:11:36.654998+00:00" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" }, "transferId": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "transferType": { "type": "string", "example": "WALLET.TRANSFER.BATCH" }, "fromDashboard": { "type": "boolean", "example": true }, "initiatorProfileId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "votes": { "type": "array", "description": "Array of approval votes (only present when status is PENDING_APPROVAL or REJECTED)", "items": { "type": "object", "properties": { "approverId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "vote": { "type": "string", "enum": [ "APPROVE", "REJECT" ], "example": "REJECT" }, "comment": { "type": "string", "example": "Transfer amount exceeds daily limit" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" } } } } } } } } } } }, "example": { "transferType": "WALLET.TRANSFER.BATCH", "transferDetails": { "id": "879af7af-67bf-469f-b718-d262a39d4857", "requestId": "14a84906-b72e-4847-b34d-51b9048fa6a5", "createdAt": "2025-04-05T00:55:50.609Z", "updatedAt": "2025-04-05T00:56:33.236Z", "chain": "POLYGON", "currency": "usdc", "contractAddress": "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582", "status": "COMPLETED", "source": { "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be", "walletAddress": "0x99a8c5ED386d217BC6ff0AA1b3585606D475432B", "walletType": "INDIVIDUAL" }, "destination": { "batch": [ { "amount": "0.04", "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be" }, { "amount": "0.05", "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be" }, { "amount": "0.06", "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be" }, { "amount": "0.03", "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be" }, { "amount": "0.03", "userId": "6a13bd30-b3a3-4d44-af33-0b32e58261be" } ] }, "receipt": { "transactionHash": "0x57f0cd3429ea425d982882243428ef4a1eda5f1be2157c1b34ea48b49b24fe7f", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" } } } }, "BatchCryptoTransferListObject": { "type": "object", "required": [ "count", "records", "nextCursor" ], "properties": { "count": { "type": "integer", "example": 1 }, "records": { "type": "array", "items": { "type": "object", "required": [ "transferType", "transferDetails" ], "properties": { "transferType": { "type": "string", "example": "WALLET.TRANSFER.BATCH" }, "transferDetails": { "type": "object", "required": [ "id", "requestId", "createdAt", "updatedAt", "chain", "currency", "contractAddress", "status", "source", "destination", "receipt" ], "properties": { "id": { "type": "string", "format": "uuid", "example": "a671d42d-9417-4bb3-868e-06c868d0d4b8" }, "requestId": { "type": "string", "format": "uuid", "example": "d2189ddd-2d32-4a46-9421-d25ebf602e6c" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-04-05T14:01:09.785Z" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-04-05T14:01:37.708Z" }, "chain": { "type": "string", "enum": [ "POLYGON" ], "example": "POLYGON" }, "currency": { "type": "string", "enum": [ "usdc" ], "example": "usdc" }, "contractAddress": { "type": "string", "example": "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582" }, "status": { "type": "string", "enum": [ "NOT_INITIATED", "CREATED", "INITIATED", "PENDING", "COMPLETED", "FAILED", "UNKNOWN" ], "example": "COMPLETED" }, "failedReason": { "type": "string", "nullable": true, "example": null }, "source": { "type": "object", "required": [ "userId", "walletAddress", "walletType" ], "properties": { "userId": { "type": "string", "format": "uuid", "example": "a1f70737-3844-4782-a321-ad481108a8ec" }, "walletAddress": { "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$", "example": "0xAFD59de44048D33d964f720ec2Dec3465D8D887D" }, "walletType": { "type": "string", "enum": [ "INDIVIDUAL", "BUSINESS" ], "example": "INDIVIDUAL" } } }, "destination": { "type": "object", "required": [ "batch" ], "properties": { "batch": { "type": "array", "maxItems": 50, "items": { "type": "object", "required": [ "amount" ], "properties": { "amount": { "type": "string", "example": "0.01" }, "userId": { "type": "string", "format": "uuid", "example": "a1f70737-3844-4782-a321-ad481108a8ec" }, "walletAddress": { "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$", "example": null } } } } } }, "receipt": { "type": "object", "required": [ "transactionHash" ], "properties": { "transactionHash": { "type": "string", "example": "0xeef52c844f72f41717f025b160a8e6b34ebcd22ea77b5e70fd6ab4c5a42e98af" }, "userOpHash": { "type": "string", "example": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" }, "approval": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "status": { "type": "string", "example": "PENDING" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:11:36.654998+00:00" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" }, "transferId": { "type": "string", "format": "uuid", "example": "006737ca-42d5-4780-b3c2-aeb63279c591" }, "transferType": { "type": "string", "example": "WALLET.TRANSFER.BATCH" }, "fromDashboard": { "type": "boolean", "example": true }, "initiatorProfileId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "votes": { "type": "array", "description": "Array of approval votes (only present when status is PENDING_APPROVAL or REJECTED)", "items": { "type": "object", "properties": { "approverId": { "type": "string", "format": "uuid", "example": "aec66b02-4f3f-471c-839a-94820b36abb2" }, "vote": { "type": "string", "enum": [ "APPROVE", "REJECT" ], "example": "REJECT" }, "comment": { "type": "string", "example": "Transfer amount exceeds daily limit" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-02-03T16:12:41.503+00:00" } } } } } } } } } } } } }, "nextCursor": { "type": "string", "format": "date-time", "example": "2025-04-05T14:01:09.785Z" } }, "example": { "count": 1, "records": [ { "transferType": "WALLET.TRANSFER.BATCH", "transferDetails": { "id": "a671d42d-9417-4bb3-868e-06c868d0d4b8", "requestId": "d2189ddd-2d32-4a46-9421-d25ebf602e6c", "createdAt": "2025-04-05T14:01:09.785Z", "updatedAt": "2025-04-05T14:01:37.708Z", "chain": "POLYGON", "currency": "usdc", "contractAddress": "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582", "status": "COMPLETED", "failedReason": null, "source": { "userId": "a1f70737-3844-4782-a321-ad481108a8ec", "walletAddress": "0xAFD59de44048D33d964f720ec2Dec3465D8D887D", "walletType": "INDIVIDUAL" }, "destination": { "batch": [ { "amount": "0.01", "userId": "a1f70737-3844-4782-a321-ad481108a8ec" }, { "amount": "0.01", "userId": "a1f70737-3844-4782-a321-ad481108a8ec" }, { "amount": "0.01", "userId": "a1f70737-3844-4782-a321-ad481108a8ec" }, { "amount": "0.01", "userId": "a1f70737-3844-4782-a321-ad481108a8ec" }, { "amount": "0.01", "userId": "a1f70737-3844-4782-a321-ad481108a8ec" } ] }, "receipt": { "transactionHash": "0xeef52c844f72f41717f025b160a8e6b34ebcd22ea77b5e70fd6ab4c5a42e98af", "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac" } } } ], "nextCursor": "2025-04-05T14:01:09.785Z" } }, "CreateWalletSwap": { "type": "object", "required": [ "requestId", "source", "destination" ], "properties": { "requestId": { "type": "string", "format": "uuid", "description": "Unique identifier for the swap request (recommend using uuid v4)", "example": "1ab3e6e0-4839-4dbe-89c3-b06d9645ae86" }, "source": { "type": "object", "description": "Source wallet information for the swap", "required": [ "userId", "chain", "currency" ], "properties": { "userId": { "type": "string", "format": "uuid", "description": "User ID of the source wallet owner", "example": "05179f69-1988-4b46-a847-dd4eea0984d6" }, "chain": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA" ], "description": "Blockchain network for the source wallet", "example": "POLYGON" }, "currency": { "type": "string", "enum": [ "usdc", "usdt" ], "description": "Source cryptocurrency to swap from", "example": "usdt" }, "amount": { "type": "string", "description": "Amount to swap (either source.amount or destination.amount must be provided)", "example": "10000" } } }, "destination": { "type": "object", "description": "Destination wallet information for the swap", "required": [ "chain", "currency" ], "properties": { "userId": { "type": "string", "format": "uuid", "description": "User ID of the destination wallet owner", "example": "05179f69-1988-4b46-a847-dd4eea0984d6" }, "externalWalletId": { "type": "string", "format": "uuid", "description": "External wallet ID (Exclude with userId)", "example": "64fc4e9d-4839-4384-b4a0-0376af2c9b2e" }, "walletAddress": { "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$", "description": "Wallet address (Exclude with userId)", "example": "0xE9cfBf1D690565579D823264170eE357f80e9A34" }, "chain": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA" ], "description": "Blockchain network for the destination wallet", "example": "POLYGON" }, "currency": { "type": "string", "enum": [ "usdc", "usdt", "usdg" ], "description": "Destination cryptocurrency to swap to", "example": "usdc" }, "amount": { "type": "string", "description": "Amount to receive (either source.amount or destination.amount must be provided)", "example": "10000" } } } } }, "WalletSwapObject": { "type": "object", "properties": { "transferType": { "type": "string", "example": "WALLET.SWAP" }, "transferDetails": { "$ref": "#/components/schemas/WalletSwapDetailsObject" } } }, "WalletSwapDetailsObject": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "dc923cc1-d74b-58f6-9fe4-9e9c6eb8dc37" }, "requestId": { "type": "string", "format": "uuid", "example": "1ab3e6e0-4839-4dbe-89c3-b06d9645ae86" }, "status": { "type": "string", "enum": [ "PENDING", "COMPLETED", "FAILED", "CANCELLED" ], "example": "COMPLETED" }, "createdAt": { "type": "string", "format": "date-time", "example": "2025-08-20T03:55:29.437108+00:00" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2025-08-20T04:08:10.837+00:00" }, "source": { "$ref": "#/components/schemas/WalletSwapSourceObject" }, "destination": { "$ref": "#/components/schemas/WalletSwapDestinationObject" }, "error": { "type": "string", "nullable": true, "example": null }, "errorDetails": { "type": "string", "nullable": true, "example": null }, "quoteInformation": { "$ref": "#/components/schemas/WalletSwapQuoteInformationObject" }, "billingInformation": { "$ref": "#/components/schemas/WalletSwapBillingInformationObject" } } }, "WalletSwapSourceObject": { "type": "object", "properties": { "currency": { "type": "string", "example": "usdc" }, "amount": { "type": "number", "example": 10 }, "chain": { "type": "string", "example": "POLYGON" }, "userId": { "type": "string", "format": "uuid", "example": "05179f69-1988-4b46-a847-dd4eea0984d6" } } }, "WalletSwapDestinationObject": { "type": "object", "properties": { "currency": { "type": "string", "example": "usdt" }, "userId": { "type": "string", "format": "uuid", "example": "05179f69-1988-4b46-a847-dd4eea0984d6" }, "externalWalletId": { "type": "string", "format": "uuid", "nullable": true, "example": null }, "amount": { "type": "number", "nullable": true, "example": null }, "chain": { "type": "string", "example": "POLYGON" }, "walletAddress": { "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$", "example": "0xe5727a4B1d93A26D6A7Adfaae145EFa41ED7f204" } } }, "WalletSwapQuoteInformationObject": { "type": "object", "properties": { "sendGross": { "$ref": "#/components/schemas/WalletSwapAmountObject" }, "sendNet": { "$ref": "#/components/schemas/WalletSwapAmountObject" }, "receiveGross": { "$ref": "#/components/schemas/WalletSwapAmountObject" }, "receiveNet": { "$ref": "#/components/schemas/WalletSwapAmountObject" }, "rate": { "type": "string", "example": "1" }, "expiresAt": { "type": "string", "format": "date-time", "example": "2025-08-20T03:55:59.539+00:00" } } }, "WalletSwapAmountObject": { "type": "object", "properties": { "amount": { "type": "string", "example": "10" }, "currency": { "type": "string", "example": "usdc" } } }, "WalletSwapBillingInformationObject": { "type": "object", "properties": { "fees": { "type": "array", "items": { "$ref": "#/components/schemas/WalletSwapFeeObject" } } } }, "WalletSwapFeeObject": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "2ca381ec-9498-52f5-9a27-d0e392b2626b" }, "amount": { "type": "number", "example": 0.01 }, "currency": { "type": "string", "example": "USD" }, "type": { "type": "string", "enum": [ "EXCHANGE_FEE", "GAS_FEE" ], "example": "EXCHANGE_FEE" }, "timing": { "type": "string", "enum": [ "ON_INVOICE", "ON_TRANSACTION" ], "example": "ON_INVOICE" } } }, "WalletSwapAllRecordsObject": { "type": "object", "properties": { "count": { "type": "integer", "example": 1 }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/WalletSwapObject" } }, "nextCursor": { "type": "string", "format": "date-time", "example": "2025-08-20T04:08:10.837+00:00" } } }, "OnrampStatusEnum": { "type": "string", "enum": [ "NOT_INITIATED", "CREATED", "OPEN_QUOTE", "FIAT_INITIATED", "AWAITING_FUNDS", "FIAT_PENDING", "FIAT_PROCESSED", "CRYPTO_INITIATED", "CRYPTO_PENDING", "COMPLETED", "FIAT_FAILED", "FIAT_RETURNED", "CRYPTO_FAILED", "QUOTE_FAILED", "EXPIRED", "UNKNOWN" ], "description": "Refer to [here](https://docs.hifibridge.com/docs/transfers/onramps#transaction-status) for more details on each onramp status.\n" }, "CreateOnramp": { "type": "object", "title": "Onramp", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "isInstant": { "type": "boolean", "default": false, "description": "instant onramp. coming soon ...\n" }, "source": { "type": "object", "description": "onramp source", "$ref": "#/components/schemas/OnrampSource" }, "destination": { "type": "object", "description": "onramp destination", "$ref": "#/components/schemas/OnrampDestination" }, "fee": { "type": "object", "description": "custom onramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OnrampFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "CreateUsdAchPullOnramp": { "type": "object", "title": "Onramp (USD Plaid)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "source": { "type": "object", "description": "onramp source", "$ref": "#/components/schemas/UsdAchPullOnrampSource" }, "destination": { "type": "object", "description": "onramp destination", "$ref": "#/components/schemas/OnrampDestination" }, "fee": { "type": "object", "description": "custom onramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OnrampFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "UsdAchPullOnrampSource": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to send" }, "currency": { "type": "string", "enum": [ "usd" ], "description": "fiat currency" }, "accountId": { "type": "string", "format": "uuid", "description": "The ACH onramp bank account to ACH pull the funds from.\n" }, "userId": { "type": "string", "format": "uuid", "description": "user who is sending the fiat" } }, "required": [ "currency", "userId", "accountId" ] }, "CreateUsdOnramp": { "type": "object", "title": "Onramp (USD)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "source": { "type": "object", "description": "onramp source", "$ref": "#/components/schemas/UsdOnrampSource" }, "destination": { "type": "object", "description": "onramp destination", "$ref": "#/components/schemas/OnrampDestination" }, "fee": { "type": "object", "description": "custom onramp fee, omit if no fee is charged", "allOf": [ { "$ref": "#/components/schemas/OnrampFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "UsdOnrampSource": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to send" }, "currency": { "type": "string", "enum": [ "usd" ], "description": "fiat currency" }, "transferType": { "type": "string", "enum": [ "ach", "wire" ], "description": "payment network type\n" }, "accountId": { "type": "string", "format": "uuid", "description": "bank account to ACH pull from.\n" }, "userId": { "type": "string", "format": "uuid", "description": "user who is funding the fiat." } }, "required": [ "transferType", "currency", "userId" ] }, "CreateEuroOnramp": { "type": "object", "title": "Onramp (EURO)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "isInstant": { "type": "boolean", "default": false, "description": "instant onramp. coming soon ...\n" }, "source": { "type": "object", "description": "onramp source", "$ref": "#/components/schemas/EuroOnrampSource" }, "destination": { "type": "object", "description": "onramp destination", "$ref": "#/components/schemas/OnrampDestination" }, "fee": { "type": "object", "description": "custom onramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OnrampFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "EuroOnrampSource": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to send" }, "currency": { "type": "string", "enum": [ "eur" ], "description": "fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is sending the fiat" } }, "required": [ "currency", "userId" ] }, "CreateBrlOnramp": { "type": "object", "title": "Onramp (BRL)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "isInstant": { "type": "boolean", "default": false, "description": "instant onramp. coming soon ...\n" }, "source": { "type": "object", "description": "onramp source", "$ref": "#/components/schemas/BrlOnrampSource" }, "destination": { "type": "object", "description": "onramp destination", "$ref": "#/components/schemas/OnrampDestination" }, "fee": { "type": "object", "description": "custom onramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OnrampFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "BrlOnrampSource": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to send" }, "currency": { "type": "string", "enum": [ "brl" ], "description": "fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is sending the fiat" } }, "required": [ "currency", "userId" ] }, "CreateMxnOnramp": { "type": "object", "title": "Onramp (MXN)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "isInstant": { "type": "boolean", "default": false, "description": "instant onramp. coming soon ...\n" }, "source": { "type": "object", "description": "onramp source", "$ref": "#/components/schemas/MxnOnrampSource" }, "destination": { "type": "object", "description": "onramp destination", "$ref": "#/components/schemas/OnrampDestination" }, "fee": { "type": "object", "description": "custom onramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OnrampFee" } ] } }, "required": [ "requestId", "source", "destination" ] }, "MxnOnrampSource": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to send" }, "currency": { "type": "string", "enum": [ "mxn" ], "description": "fiat currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is sending the fiat" } }, "required": [ "currency", "userId" ] }, "CreateAfricaOnramp": { "type": "object", "title": "Onramp (Africa)", "properties": { "requestId": { "type": "string", "description": "unique identifier for the request (recommend using uuid v4)" }, "purposeOfPayment": { "type": "string", "enum": [ "gift", "bills", "groceries", "travel", "health", "entertainment", "housing", "school-fees", "other" ] }, "isInstant": { "type": "boolean", "default": false, "description": "instant onramp. coming soon ...\n" }, "source": { "type": "object", "description": "onramp source", "$ref": "#/components/schemas/AfricaOnrampSource" }, "destination": { "type": "object", "description": "onramp destination", "$ref": "#/components/schemas/OnrampDestination" }, "fee": { "type": "object", "description": "custom onramp fee, omit if no fee is charged", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OnrampFee" } ] } }, "required": [ "requestId", "source", "destination", "purposeOfPayment" ] }, "AfricaOnrampSource": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to send" }, "currency": { "type": "string", "description": "fiat currency.\nLook at the list of supported `currency` [here](https://docs.google.com/spreadsheets/d/1QxAWGoZMznB6_Ts4mzFcFD49ZOMUZNdNiR6wlr8NDL0/edit?gid=293141391#gid=293141391).\nMake sure the `currency` enum is supported for the provided `accountId`.\n" }, "accountId": { "type": "string", "format": "uuid", "description": "account the fiat comes from. eg. usd Plaid account\n\n* this field is optional when onramping from `currency`: `usd`\n* this field is not required when onramping from `currency`: `brl`\n* this field is required when onramping from the rest of the currencies\n" }, "userId": { "type": "string", "format": "uuid", "description": "user who is sending the fiat" } }, "required": [ "currency", "userId", "accountId" ] }, "FiatToCryptoConversionRateObject": { "type": "object", "properties": { "fromCurrency": { "type": "string", "enum": [ "usd", "ugx", "ngn", "bwp", "tzs", "mwk", "xaf", "kes" ], "description": "source currency" }, "toCurrency": { "type": "string", "enum": [ "usdc" ], "description": "target currency" }, "conversionRate": { "type": "string" }, "conversionRates": { "type": "array", "items": { "type": "object", "properties": { "transferType": { "type": "string", "description": "when `transferType` is `default`, this is the conversion rate for the default transfer type" }, "conversionRate": { "type": "string" } } } } }, "example": { "fromCurrency": "usd", "toCurrency": "usdc", "conversionRate": "1", "conversionRates": [ { "transferType": "default", "conversionRate": "1" } ] } }, "OnrampSource": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of fiat currency to send" }, "currency": { "type": "string", "enum": [ "usd", "ngn", "mwk", "bwp", "xaf", "ghs", "kes", "rwf", "zar", "tzs", "ugx", "xof", "zmw", "brl", "mxn", "eur" ], "description": "fiat currency" }, "transferType": { "type": "string", "enum": [ "ach", "wire" ], "description": "payment network type\n\n* this field is used when onramping from usd, default is `ach`\n" }, "accountId": { "type": "string", "format": "uuid", "description": "account the fiat comes from. eg. usd Plaid account\n\n* this field is optional when onramping from `currency`: `usd`\n* this field is not required when onramping from `currency`: `brl`, `mxn`\n* this field is required when onramping from the rest of the currencies\n" }, "userId": { "type": "string", "format": "uuid", "description": "user who is sending the fiat" } }, "required": [ "currency", "userId" ] }, "OnrampDestination": { "type": "object", "properties": { "amount": { "type": "number", "format": "float", "minimum": 0, "description": "amount of crypto currency to receive" }, "currency": { "type": "string", "enum": [ "usdc", "usdt", "usdHifi" ], "description": "crypto currency (note: `usdHifi` is only available in sandbox to simulate token movement)\n" }, "chain": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA", "BASE" ], "description": "chain of the crypto currency" }, "userId": { "type": "string", "format": "uuid", "description": "user who is receiving the crypto, required if `externalWalletId` is not provided" }, "externalWalletId": { "type": "string", "format": "uuid", "description": "external wallet id who is receiving the crypto, required if `userId` is not provided" } } }, "OnrampFee": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "FIX", "PERCENT" ] }, "value": { "type": "number", "format": "float", "minimum": 0, "description": "custom transaction fee (`0.01` represents `1%` when `type` is set to `PERCENT`, checkout https://docs.hifibridge.com/v2/docs/fee-collection for more information)\n" } }, "required": [ "type", "value" ] }, "OnrampDepositInfoObject": { "type": "object", "properties": { "bankName": { "type": "string" }, "bankAddress": { "type": "string" }, "swiftCode": { "type": "string" }, "beneficiary": { "type": "object", "properties": { "name": { "type": "string" }, "address": { "type": "string" } } }, "ach": { "type": "object", "properties": { "routingNumber": { "type": "string" }, "accountNumber": { "type": "string" } } }, "wire": { "type": "object", "properties": { "routingNumber": { "type": "string" }, "accountNumber": { "type": "string" } } }, "rtp": { "type": "object", "properties": { "routingNumber": { "type": "string" }, "accountNumber": { "type": "string" } } }, "reference": { "type": "string" }, "depositBy": { "type": "string", "format": "date-time" }, "instruction": { "type": "string" } } }, "OnrampObject": { "type": "object", "properties": { "transferType": { "type": "string" }, "transferDetails": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "requestId": { "type": "string", "format": "uuid" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "status": { "$ref": "#/components/schemas/OnrampStatusEnum" }, "failedReason": { "type": "string" }, "source": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid" }, "currency": { "type": "string" }, "amount": { "type": "number", "format": "float" }, "accountId": { "type": "string" }, "user": { "type": "object", "properties": { "email": { "type": "string" }, "lastName": { "type": "string" }, "firstName": { "type": "string" }, "businessName": { "type": "string" } } }, "bankInfo": { "$ref": "#/components/schemas/InboundObject" } } }, "destination": { "type": "object", "properties": { "userId": { "type": "string", "format": "uuid" }, "currency": { "type": "string" }, "chain": { "type": "string" }, "walletAddress": { "type": "string" }, "externalWalletId": { "type": "string" }, "amount": { "type": "number", "format": "float" }, "user": { "type": "object", "properties": { "email": { "type": "string" }, "lastName": { "type": "string" }, "firstName": { "type": "string" }, "businessName": { "type": "string" } } } } }, "receipt": { "type": "object", "properties": { "transactionHash": { "type": "string" } } }, "developerFee": { "type": "object" }, "quoteInformation": { "type": "object", "properties": { "sendGross": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "sendNet": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "railFee": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "receiveGross": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "receiveNet": { "type": "object", "properties": { "amount": { "type": "string" }, "currency": { "type": "string" } } }, "rate": { "type": "string" }, "expiresAt": { "type": "string", "format": "date-time" } } }, "depositInfo": { "$ref": "#/components/schemas/OnrampDepositInfoObject" } } } } }, "OnrampQuoteObject": { "$ref": "#/components/schemas/OnrampObject" }, "OnrampAcceptedQuoteObject": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/OnrampObject" }, { "type": "object", "properties": { "depositInfo": { "$ref": "#/components/schemas/OnrampDepositInfoObject" } } } ] }, "OnrampRecordObject": { "$ref": "#/components/schemas/OnrampObject" }, "OnrampAllRecordsObject": { "type": "object", "properties": { "count": { "type": "integer" }, "records": { "type": "array", "items": { "$ref": "#/components/schemas/OnrampRecordObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } } }, "MetricCalculationResponse": { "type": "object", "description": "Response from metric calculation endpoints. The structure of `data` array items\nvaries based on the `breakdowns` parameter in the request.\n\n**Base structure (no breakdowns):**\n- Each item has: `periodStart`, plus metric-specific fields (e.g., `grossVolume`, `transactionCount`)\n\n**With breakdowns:**\n- Each item includes breakdown dimension fields (e.g., `transactionType`, `transactionStatus`, `userId`)\n- Field names match the breakdown dimension names from the request\n\n**Example without breakdowns:**\n```json\n{\n \"status\": \"success\",\n \"data\": [\n { \"periodStart\": \"2025-01-01T00:00:00Z\", \"grossVolume\": 1000.50 },\n { \"periodStart\": \"2025-01-02T00:00:00Z\", \"grossVolume\": 2000.75 }\n ],\n \"metadata\": { ... }\n}\n```\n\n**Example with breakdowns: [\"transactionType\"]:**\n```json\n{\n \"status\": \"success\",\n \"data\": [\n { \"periodStart\": \"2025-01-01T00:00:00Z\", \"transactionType\": \"onramp\", \"grossVolume\": 500.25 },\n { \"periodStart\": \"2025-01-01T00:00:00Z\", \"transactionType\": \"offramp\", \"grossVolume\": 500.25 }\n ],\n \"metadata\": { ... }\n}\n```\n", "properties": { "status": { "type": "string", "enum": [ "success" ], "description": "Response status" }, "data": { "type": "array", "description": "Array of metric calculation results. Each object structure depends on:\n1. The metric template (determines metric value fields)\n2. The breakdowns parameter (adds dimension fields)\n", "items": { "type": "object", "description": "Metric result row. Contains:\n- `periodStart` (always present): ISO 8601 timestamp\n- Metric-specific fields (e.g., `grossVolume`, `transactionCount`, `newUserCount`)\n- Breakdown dimension fields (if breakdowns specified): field names match breakdown dimension names\n\nAdditional properties may be present based on:\n- Metric template (adds template-specific value fields)\n- Breakdown dimensions (adds dimension fields matching breakdown names)\n", "properties": { "periodStart": { "type": "string", "format": "date-time", "description": "Start of the calculation period" }, "grossVolume": { "type": "number", "description": "Gross volume amount (for GROSS_VOLUME template)" }, "grossVolumeUsd": { "type": "number", "description": "Gross volume in USD (for GROSS_VOLUME template)" }, "transactionCount": { "type": "number", "description": "Number of transactions (for TRANSACTION_COUNT template)" }, "newUserCount": { "type": "number", "description": "Number of new users (for NEW_USERS template)" }, "transactionType": { "type": "string", "enum": [ "onramp", "offramp", "transfer" ], "description": "Transaction type (present if \"transactionType\" in breakdowns)" }, "transactionStatus": { "type": "string", "enum": [ "AWAITING_FUNDS", "COMPLETED", "CRYPTO_FAILED", "CRYPTO_INITIATED", "CRYPTO_PENDING", "FAILED", "FIAT_FAILED", "FIAT_INITIATED", "FIAT_PENDING", "FIAT_PROCESSED", "FIAT_RETURNED", "INITIATED", "NOT_INITIATED", "PENDING", "QUOTE_FAILED", "REJECTED" ], "description": "Transaction status (present if \"transactionStatus\" in breakdowns)" }, "userId": { "type": "string", "format": "uuid", "description": "User ID (present if \"userId\" in breakdowns)" } }, "additionalProperties": true } }, "metadata": { "$ref": "#/components/schemas/MetricCalculationMetadata" } } }, "MetricCalculationMetadata": { "type": "object", "description": "Metadata about the metric calculation", "properties": { "template": { "type": "string", "enum": [ "GROSS_VOLUME", "TRANSACTION_COUNT", "NEW_USERS" ], "description": "The metric template used" }, "recordCount": { "type": "integer", "description": "Actual number of records returned" }, "projectedRowCount": { "type": "integer", "nullable": true, "description": "Projected total row count (null if no breakdowns)" }, "filledCount": { "type": "integer", "description": "Number of time periods filled with zero values" }, "calculationInterval": { "type": "string", "enum": [ "day", "week", "month", "quarter", "year" ], "description": "The calculation interval used" }, "dateRange": { "type": "object", "properties": { "start": { "type": "string", "format": "date", "description": "Start date (ISO 8601)" }, "end": { "type": "string", "format": "date", "description": "End date (ISO 8601)" } } }, "filters": { "type": "object", "description": "Information about filters that were applied", "additionalProperties": true }, "breakdowns": { "type": "object", "nullable": true, "description": "Breakdown metadata (null if no breakdowns specified)", "properties": { "dimensions": { "type": "array", "items": { "type": "string", "enum": [ "transactionType", "transactionStatus", "userId" ] }, "description": "List of breakdown dimensions used" }, "dimensionCounts": { "type": "object", "additionalProperties": { "type": "integer" }, "description": "Count of unique values per breakdown dimension.\nKeys match breakdown dimension names.\n" } } }, "metric": { "type": "string", "nullable": true, "description": "Metric name (only present for saved metrics, not previews)" } } }, "Metric": { "type": "object", "description": "A saved metric definition", "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique metric identifier" }, "profileId": { "type": "string", "format": "uuid", "description": "Profile ID that owns this metric" }, "template": { "type": "string", "enum": [ "GROSS_VOLUME", "TRANSACTION_COUNT", "NEW_USERS" ], "description": "Metric template name" }, "name": { "type": "string", "description": "User-defined metric name" }, "params": { "$ref": "#/components/schemas/MetricParams" }, "createdAt": { "type": "string", "format": "date-time", "description": "Creation timestamp" }, "updatedAt": { "type": "string", "format": "date-time", "description": "Last update timestamp" } }, "required": [ "id", "profileId", "template", "name", "params", "createdAt", "updatedAt" ] }, "MetricParams": { "type": "object", "description": "Metric parameters. Structure varies by template, but common fields include:\n- Date range filters\n- Calculation interval\n- Breakdown dimensions\n- Template-specific filters\n\nAdditional properties may be present based on the metric template.\nEach template may define template-specific parameters.\n", "properties": { "createdAfter": { "type": "string", "format": "date", "description": "Filter transactions created after this date (ISO 8601)" }, "createdBefore": { "type": "string", "format": "date", "description": "Filter transactions created before this date (ISO 8601)" }, "calculationInterval": { "type": "string", "enum": [ "day", "week", "month", "quarter", "year" ], "description": "Time interval for aggregation" }, "userIds": { "type": "array", "items": { "type": "string", "format": "uuid" }, "description": "Filter by specific user IDs" }, "transactionTypes": { "type": "array", "items": { "type": "string", "enum": [ "onramp", "offramp", "transfer" ] }, "description": "Filter by transaction types" }, "transactionStatuses": { "type": "array", "items": { "type": "string", "enum": [ "AWAITING_FUNDS", "COMPLETED", "CRYPTO_FAILED", "CRYPTO_INITIATED", "CRYPTO_PENDING", "FAILED", "FIAT_FAILED", "FIAT_INITIATED", "FIAT_PENDING", "FIAT_PROCESSED", "FIAT_RETURNED", "INITIATED", "NOT_INITIATED", "PENDING", "QUOTE_FAILED", "REJECTED" ], "description": "Filter by transaction statuses (for TRANSACTION_COUNT template)" } }, "breakdowns": { "type": "array", "items": { "type": "string", "enum": [ "transactionType", "transactionStatus", "userId" ] }, "maxItems": 2, "description": "Dimensions to group results by. Maximum 2 breakdowns allowed.\nField names in response data will match these dimension names.\n" }, "limit": { "type": "integer", "minimum": 1, "maximum": 500, "default": 500, "description": "Maximum number of records to return" } }, "additionalProperties": true }, "CreateMetricRequest": { "type": "object", "description": "Request to create a new saved metric", "properties": { "template": { "type": "string", "enum": [ "GROSS_VOLUME", "TRANSACTION_COUNT", "NEW_USERS" ], "description": "Metric template name" }, "name": { "type": "string", "minLength": 1, "maxLength": 100, "description": "User-defined metric name" }, "params": { "$ref": "#/components/schemas/MetricParams" } }, "required": [ "template", "name", "params" ] }, "UpdateMetricRequest": { "type": "object", "description": "Request to update an existing metric", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100, "description": "Updated metric name" }, "params": { "$ref": "#/components/schemas/MetricParams", "description": "Updated metric parameters" } } }, "PreviewMetricRequest": { "type": "object", "description": "Request to preview a metric calculation without saving", "properties": { "template": { "type": "string", "enum": [ "GROSS_VOLUME", "TRANSACTION_COUNT", "NEW_USERS" ], "description": "Metric template name" }, "params": { "$ref": "#/components/schemas/MetricParams" } }, "required": [ "template", "params" ] }, "MetricTemplate": { "type": "object", "description": "A metric template definition", "properties": { "name": { "type": "string", "description": "Template identifier" }, "displayName": { "type": "string", "description": "Human-readable template name" }, "description": { "type": "string", "description": "Template description" }, "params": { "type": "array", "items": { "$ref": "#/components/schemas/MetricParamDefinition" }, "description": "Available parameters for this template" }, "supportsBreakdowns": { "type": "boolean", "description": "Whether this template supports breakdown dimensions" }, "breakdownOptions": { "type": "array", "items": { "type": "string" }, "description": "Available breakdown dimensions for this template" } } }, "MetricParamDefinition": { "type": "object", "description": "Definition of a metric parameter", "properties": { "name": { "type": "string", "description": "Parameter name" }, "type": { "type": "string", "enum": [ "date", "string", "array", "enum", "integer" ], "description": "Parameter data type" }, "required": { "type": "boolean", "description": "Whether this parameter is required" }, "description": { "type": "string", "description": "Parameter description" }, "options": { "type": "array", "description": "Available options (for enum/array types)" }, "constraints": { "type": "object", "description": "Validation constraints (e.g., min, max, maxItems)" } } }, "ParamOptionsResponse": { "type": "object", "description": "Paginated list of parameter options", "properties": { "status": { "type": "string", "enum": [ "success" ] }, "data": { "type": "array", "items": { "type": "object", "description": "Option value and label", "properties": { "value": { "description": "Option value (type varies by parameter)" }, "label": { "type": "string", "description": "Human-readable option label" } } } }, "metadata": { "type": "object", "properties": { "count": { "type": "integer", "description": "Total number of options" }, "page": { "type": "integer", "description": "Current page number" }, "limit": { "type": "integer", "description": "Items per page" }, "totalPages": { "type": "integer", "description": "Total number of pages" } } } } }, "MetricResponse": { "type": "object", "description": "Single metric response", "properties": { "status": { "type": "string", "enum": [ "success" ] }, "data": { "$ref": "#/components/schemas/Metric" }, "metadata": { "type": "object" } } }, "MetricListResponse": { "type": "object", "description": "List of metrics response", "properties": { "status": { "type": "string", "enum": [ "success" ] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/Metric" } }, "metadata": { "type": "object", "properties": { "count": { "type": "integer" }, "profileId": { "type": "string", "format": "uuid" } } } } }, "TemplateResponse": { "type": "object", "description": "Single template response", "properties": { "status": { "type": "string", "enum": [ "success" ] }, "data": { "$ref": "#/components/schemas/MetricTemplate" }, "metadata": { "type": "object" } } }, "TemplateListResponse": { "type": "object", "description": "List of templates response", "properties": { "status": { "type": "string", "enum": [ "success" ] }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/MetricTemplate" } }, "metadata": { "type": "object", "properties": { "count": { "type": "integer" } } } } }, "FiatToFiatRecordObject": { "type": "object", "properties": { "id": { "type": "string" }, "requestId": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "recipientName": { "type": "string" }, "status": { "type": "string" }, "amount": { "type": "number" }, "currency": { "type": "string" }, "sourceAccountId": { "type": "string" } }, "example": { "id": "0b9a8c80-3ce3-weee-9d94-8a8ac43a2543", "requestId": "5d0a55aa-9a2a-486a-a57e-d5d9e576cf6d", "createdAt": "2024-06-25T20:41:57.671322+00:00", "recipientName": "John Doe", "status": "CONFIRMED", "amount": 10, "currency": "usd", "sourceAccountId": "0a472717-039b-48bb-894a-a4fc914a1fe4" } }, "FeeObject": { "type": "object", "properties": { "feeId": { "type": "string", "format": "uuid" }, "feeType": { "type": "string", "enum": [ "FIX", "PERCENTAGE" ] }, "feeAmount": { "type": "number", "format": "float" }, "feePercent": { "type": "number", "format": "float" }, "status": { "type": "string" }, "transactionHash": { "type": "string" }, "failedReason": { "type": "string", "nullable": true } }, "example": { "feeId": "15698c9b-6761-42ef-8c0c-96f5f983ba7d", "feeType": "FIX", "feeAmount": 0.01, "feePercent": 0, "status": "CONFIRMED", "transactionHash": 6.60017588418924e+76, "failedReason": null } }, "CreateFiatTransfer": { "type": "object", "properties": { "requestId": { "type": "string", "description": "unique identifier for the transfer request (recommend using uuid v4)." }, "amount": { "type": "number", "format": "float", "minimum": 0 }, "currency": { "type": "string", "enum": [ "usd" ] }, "memo": { "type": "string" }, "source": { "type": "object", "description": "create fiat source", "$ref": "#/components/schemas/CreateFiatSource" }, "destination": { "type": "object", "description": "create fiat destination", "$ref": "#/components/schemas/CreateFiatDestination" } }, "required": [ "requestId", "amount", "currency", "memo", "source", "destination" ] }, "CreateFiatSource": { "type": "object", "properties": { "userId": { "type": "string" }, "accountId": { "type": "string" } }, "required": [ "userId", "accountId" ] }, "CreateFiatDestination": { "type": "object", "properties": { "accountHolderName": { "type": "string" }, "accountType": { "type": "string", "enum": [ "CHECKING", "SAVINGS", "BUSINESS" ] }, "accountNumber": { "type": "string" }, "routingNumber": { "type": "string" } }, "required": [ "accountHolderName", "accountType", "accountNumber", "routingNumber" ] }, "ApproveTransferRequest": { "type": "object", "description": "Request body for approving a transfer", "properties": { "comment": { "type": "string", "maxLength": 1000, "description": "Optional comment explaining the approval decision", "example": "Approved after reviewing transaction details" } } }, "ApproveTransferResponse": { "type": "object", "properties": { "success": { "type": "boolean", "example": true, "description": "Whether the operation was successful" }, "message": { "type": "string", "example": "Transfer approved and initiated successfully", "description": "Human-readable message about the operation" }, "approvalId": { "type": "string", "format": "uuid", "description": "ID of the approval being processed", "example": "approval-123-e89b-12d3-a456-426614174002" }, "status": { "type": "string", "enum": [ "APPROVED" ], "example": "APPROVED", "description": "Current status after approval" }, "timestamp": { "type": "string", "format": "date-time", "description": "When the approval was processed", "example": "2024-01-15T11:00:00.000Z" } } }, "RejectTransferRequest": { "type": "object", "description": "Request body for rejecting a transfer", "properties": { "reason": { "type": "string", "maxLength": 1000, "description": "Reason for rejecting the transfer", "example": "Transfer amount exceeds daily limit" } } }, "RejectTransferResponse": { "type": "object", "properties": { "success": { "type": "boolean", "example": true, "description": "Whether the operation was successful" }, "message": { "type": "string", "example": "Transfer rejected successfully", "description": "Human-readable message about the operation" }, "approvalId": { "type": "string", "format": "uuid", "description": "ID of the approval being processed", "example": "approval-123-e89b-12d3-a456-426614174002" }, "status": { "type": "string", "enum": [ "REJECTED" ], "example": "REJECTED", "description": "Current status after rejection" }, "reason": { "type": "string", "description": "Reason for rejection", "example": "Transfer amount exceeds daily limit" }, "timestamp": { "type": "string", "format": "date-time", "description": "When the rejection was processed", "example": "2024-01-15T11:00:00.000Z" } } }, "GetTransferApprovalsResponse": { "type": "object", "properties": { "success": { "type": "boolean", "example": true, "description": "Whether the operation was successful" }, "message": { "type": "string", "example": "Pending approvals retrieved successfully", "description": "Human-readable message about the operation" }, "count": { "type": "integer", "description": "Total number of pending approvals", "example": 2 }, "approvals": { "type": "array", "items": { "$ref": "#/components/schemas/TransferApprovalSummary" }, "description": "Array of pending approval records" } } }, "GetTransferApprovalResponse": { "type": "object", "properties": { "success": { "type": "boolean", "example": true, "description": "Whether the operation was successful" }, "message": { "type": "string", "example": "Approval details retrieved successfully", "description": "Human-readable message about the operation" }, "approval": { "$ref": "#/components/schemas/TransferApprovalDetail" } } }, "TransferApprovalSummary": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "approval-123-e89b-12d3-a456-426614174002" }, "transferId": { "type": "string", "format": "uuid", "example": "transfer-456-e89b-12d3-a456-426614174003" }, "status": { "type": "string", "enum": [ "PENDING", "APPROVED", "REJECTED", "EXPIRED" ], "example": "PENDING", "description": "Current status of the approval process" }, "createdAt": { "type": "string", "format": "date-time", "example": "2024-01-15T10:30:00.000Z" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-01-15T11:00:00.000Z", "description": "When the approval was last updated" }, "transferType": { "type": "string", "enum": [ "WALLET.TRANSFER", "WALLET.TRANSFER.BATCH", "WALLET.BRIDGE" ], "example": "WALLET.TRANSFER", "description": "Type of transfer requiring approval" } } }, "TransferApprovalDetail": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "example": "approval-123-e89b-12d3-a456-426614174002" }, "transferId": { "type": "string", "format": "uuid", "example": "transfer-456-e89b-12d3-a456-426614174003" }, "status": { "type": "string", "enum": [ "PENDING", "APPROVED", "REJECTED", "EXPIRED" ], "example": "PENDING", "description": "Current status of the approval process" }, "createdAt": { "type": "string", "format": "date-time", "example": "2024-01-15T10:30:00.000Z" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2024-01-15T11:00:00.000Z", "description": "When the approval was last updated" }, "transferType": { "type": "string", "enum": [ "WALLET.TRANSFER", "WALLET.TRANSFER.BATCH", "WALLET.BRIDGE" ], "example": "WALLET.TRANSFER", "description": "Type of transfer requiring approval" }, "votes": { "type": "array", "items": { "$ref": "#/components/schemas/ApprovalVote" }, "description": "Array of votes cast on this approval" } } }, "ApprovalVote": { "type": "object", "properties": { "approverId": { "type": "string", "format": "uuid", "example": "profile-789-e89b-12d3-a456-426614174006", "description": "ID of the approver who cast the vote" }, "vote": { "type": "string", "enum": [ "APPROVE", "REJECT" ], "example": "APPROVE", "description": "The vote cast by the approver" }, "comment": { "type": "string", "nullable": true, "example": "Approved after reviewing transaction details", "description": "Optional comment explaining the vote decision" }, "createdAt": { "type": "string", "format": "date-time", "example": "2024-01-15T11:00:00.000Z", "description": "When the vote was cast" } } }, "ErrorResponse": { "type": "object", "properties": { "error": { "type": "string", "description": "Error message describing what went wrong", "example": "Invalid API key or user not found" } } }, "ToSLink": { "type": "object", "properties": { "idempotencyKey": { "type": "string", "description": "Unique identifier for the resource", "format": "uuid" }, "templateId": { "type": "string", "description": "Id of the custom terms of service template generated in the HIFI developer dashboard. If not passed, the page will use HIFI's default template." }, "redirectUrl": { "type": "string", "description": "Url to redirect after accepting the terms of service link. The signedAgreementId is the same as the passed idempotencyKey, you may attempt to call the POST /user/create endpoint, but if the user did not accept the TOS, the user creation will return an error." } }, "required": [ "idempotencyKey" ] }, "ToSLinkObject": { "type": "object", "properties": { "url": { "type": "string" }, "signedAgreementId": { "type": "string" } } }, "ToSLinkRecordStatusObject": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "signed agreement id" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the ToS link was created" }, "expiredAt": { "type": "string", "format": "date-time", "description": "Timestamp when the ToS link will expire" }, "signed": { "type": "boolean", "description": "Whether the ToS has been signed" }, "sessionToken": { "type": "string", "format": "string", "description": "Session token for the ToS signing session" } } }, "WalletBalanceObject": { "type": "object", "properties": { "balance": { "type": "string", "description": "The raw balance of the wallet expressed in the smallest denomination of the token. This format is ideal for backend calculations, automation processes, or when precise, unrounded figures are necessary for smart contract interactions. For example, use this when calculating transaction fees or performing token transfer operations that require exact values." }, "displayBalance": { "type": "string", "description": "The wallet balance formatted as a decimal string for display purposes, adjusted according to the token's decimal places to facilitate human readability. This format is best used in user interfaces where balances are displayed to end-users, such as in wallet apps or dashboards, where readability and familiarity are crucial. For instance, displaying an account balance on a user's home screen or summary page." }, "tokenInfo": { "type": "object", "description": "Detailed information about the token.", "properties": { "tokenAddress": { "type": "string", "description": "Blockchain generated unique identifier, associated with wallet (account), smart contract or other blockchain objects." }, "standard": { "type": "string", "enum": [ "ERC20", "ERC721", "ERC1155" ] }, "name": { "type": "string", "description": "Blockchain name of the specified token." }, "symbol": { "type": "string", "description": "Blockchain symbol of the specified token." }, "decimals": { "type": "integer", "description": "Number of decimal places shown in the token amount." } } } } }, "WalletAddressObject": { "type": "object", "properties": { "address": { "type": "string", "description": "Wallet address" } }, "required": [ "address" ] }, "AddExternalWallets": { "type": "object", "properties": { "address": { "type": "string", "description": "The wallet address to add" }, "chain": { "type": "string", "enum": [ "POLYGON", "SOLANA", "ETHEREUM", "BASE" ], "description": "The blockchain network for this wallet" }, "name": { "type": "string", "description": "Name for the wallet" }, "referenceId": { "type": "string", "description": "A custom reference ID for the wallet" } }, "required": [ "address", "chain", "name", "referenceId" ] }, "ExternalWalletsObject": { "type": "object", "properties": { "count": { "type": "integer" }, "externalWallets": { "type": "array", "items": { "$ref": "#/components/schemas/ExternalWalletObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } } }, "ExternalWalletObject": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "userId": { "type": "string", "format": "uuid" }, "chain": { "type": "string", "enum": [ "POLYGON", "SOLANA", "ETHEREUM", "BASE" ] }, "name": { "type": "string" }, "address": { "type": "string" }, "referenceId": { "type": "string" }, "active": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time", "nullable": true } } }, "WalletDepositObject": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "userId": { "type": "string", "format": "uuid" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "wallet": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "address": { "type": "string" }, "chain": { "type": "string", "enum": [ "POLYGON", "SOLANA", "ETHEREUM", "BASE" ] }, "walletType": { "type": "string", "enum": [ "INDIVIDUAL" ] } } }, "transaction": { "type": "object", "properties": { "transactionHash": { "type": "string" }, "chain": { "type": "string", "enum": [ "POLYGON", "SOLANA", "ETHEREUM", "BASE" ] }, "currency": { "type": "string" }, "status": { "type": "string", "enum": [ "COMPLETED", "CONFIRMED" ] }, "sourceAddress": { "type": "string" }, "destinationAddress": { "type": "string" }, "contractAddress": { "type": "string" }, "amount": { "type": "string" }, "unitAmount": { "type": "string" } } } } }, "WalletDepositsObject": { "type": "object", "properties": { "count": { "type": "integer" }, "deposits": { "type": "array", "items": { "$ref": "#/components/schemas/WalletDepositObject" } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } } }, "UserV2AddWallets": { "type": "object", "properties": { "chains": { "type": "array", "items": { "type": "string", "description": "The chains to create wallets for.", "enum": [ "POLYGON", "SOLANA", "ETHEREUM", "BASE" ] } } }, "required": [ "chains" ] }, "IndividualUserV2Create": { "type": "object", "title": "Create Individual User", "properties": { "requestId": { "type": "string", "description": "Request ID for user creation. If not provided, a random UUID will be generated. Using the same requestId will result in the same user being returned.", "format": "uuid" }, "type": { "type": "string", "enum": [ "individual" ] }, "chains": { "type": "array", "description": "The chains to create wallets for, default to POLYGON and ETHEREUM.\n", "items": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA", "BASE" ] } }, "firstName": { "type": "string" }, "lastName": { "type": "string" }, "email": { "type": "string" }, "dateOfBirth": { "type": "string", "description": "Date of birth in format yyyy-mm-dd.", "format": "date" }, "address": { "type": "object", "description": "Address of the user.\n\nEither the address or the ipAddress must be provided.\n", "$ref": "#/components/schemas/Address" }, "ipAddress": { "type": "string", "description": "IP address of the user. \n\nEither the address or the ipAddress must be provided.\n", "format": "ipv4" }, "signedAgreementId": { "type": "string", "description": "ID of the signed agreement, fetched through the HIFI's Hosted Terms of Service Link POST /tos-link" } }, "required": [ "type", "firstName", "lastName", "email", "dateOfBirth", "signedAgreementId" ] }, "BusinessUserV2Create": { "type": "object", "title": "Create Business User", "properties": { "requestId": { "type": "string", "description": "Request ID for user creation. If not provided, a random UUID will be generated. Using the same requestId will result in the same user being returned.", "format": "uuid" }, "type": { "type": "string", "enum": [ "business" ] }, "businessName": { "type": "string" }, "chains": { "type": "array", "description": "The chains to create wallets for, default to POLYGON and ETHEREUM.\n", "items": { "type": "string", "enum": [ "POLYGON", "ETHEREUM", "SOLANA", "BASE" ] } }, "email": { "type": "string" }, "address": { "type": "object", "description": "Address of the user. \n\nEither the address or the ipAddress must be provided.\n", "$ref": "#/components/schemas/Address" }, "ipAddress": { "type": "string", "description": "IP address of the user.\n\nEither the address or the ipAddress must be provided.\n", "format": "ipv4" }, "ultimateBeneficialOwners": { "type": "array", "items": { "$ref": "#/components/schemas/UltimateBeneficialOwnerV2" } }, "signedAgreementId": { "type": "string", "description": "ID of the signed agreement, fetched through the HIFI's Hosted Terms of Service Link POST /tos-link" } }, "required": [ "type", "businessName", "email", "ultimateBeneficialOwners", "signedAgreementId" ] }, "UltimateBeneficialOwnerV2": { "type": "object", "properties": { "firstName": { "type": "string" }, "lastName": { "type": "string" }, "dateOfBirth": { "type": "string", "description": "Date of birth in format yyyy-mm-dd.", "format": "date" }, "hasControl": { "type": "boolean", "description": "True if the person has a significant responsibility to control, manage, or direct the activities of the business. At least one of the ultimateBeneficialOwners needs to have this set to true." }, "isSigner": { "type": "boolean", "description": "True if the person can authorize transactions on behalf of the business. At least one of the ultimateBeneficialOwners needs to have this set to true." } }, "required": [ "firstName", "lastName", "dateOfBirth", "hasControl", "isSigner" ] }, "IndividualUserV2Update": { "type": "object", "title": "Update Individual User", "properties": { "type": { "type": "string", "enum": [ "individual" ] }, "firstName": { "type": "string" }, "lastName": { "type": "string" }, "email": { "type": "string" }, "dateOfBirth": { "type": "string", "description": "Date of birth in format yyyy-mm-dd.", "format": "date" }, "address": { "type": "object", "description": "Address of the user.", "$ref": "#/components/schemas/Address" }, "ipAddress": { "type": "string", "description": "IP address of the user." }, "signedAgreementId": { "type": "string", "description": "ID of the signed agreement, fetched through the HIFI's Hosted Terms of Service Link POST /tos-link" } } }, "BusinessUserV2Update": { "type": "object", "title": "Update Business User", "properties": { "type": { "type": "string", "enum": [ "business" ] }, "businessName": { "type": "string" }, "email": { "type": "string" }, "address": { "type": "object", "description": "Address of the user.", "$ref": "#/components/schemas/Address" }, "ipAddress": { "type": "string", "description": "IP address of the user." }, "ultimateBeneficialOwners": { "type": "array", "items": { "$ref": "#/components/schemas/UltimateBeneficialOwnerV2" } }, "signedAgreementId": { "type": "string", "description": "ID of the signed agreement, fetched through the HIFI's Hosted Terms of Service Link POST /tos-link" } } }, "IndividualUserV2Object": { "type": "object", "title": "User Object (Individual)", "properties": { "id": { "type": "string", "format": "uuid", "description": "User ID" }, "createdAt": { "type": "string", "format": "date-time", "description": "Data and time when the user was created" }, "type": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" }, "wallets": { "type": "object", "properties": { "INDIVIDUAL": { "type": "object", "properties": { "ETHEREUM": { "$ref": "#/components/schemas/WalletAddressObject" }, "POLYGON": { "$ref": "#/components/schemas/WalletAddressObject" } } } } } } }, "BusinessUserV2Object": { "type": "object", "title": "User Object (Business)", "properties": { "id": { "type": "string", "format": "uuid", "description": "User ID" }, "createdAt": { "type": "string", "format": "date-time", "description": "Data and time when the user was created" }, "type": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" }, "wallets": { "type": "object", "properties": { "INDIVIDUAL": { "type": "object", "properties": { "ETHEREUM": { "$ref": "#/components/schemas/WalletAddressObject" }, "POLYGON": { "$ref": "#/components/schemas/WalletAddressObject" } } } } } } }, "AllUserV2Objects": { "type": "object", "properties": { "count": { "type": "integer" }, "users": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/IndividualUserV2Object" }, { "$ref": "#/components/schemas/BusinessUserV2Object" } ] } }, "nextCursor": { "type": "string", "description": "The `createdAt` timestamp of the last record in the current page. Pass this as `createdBefore` in the next request to retrieve the next page of results." } } } }, "examples": { "VirtualAccountObjectCreationExample": { "summary": "Virtual Account Object (Creation)", "value": { "message": "Virtual account created successfully", "accountInfo": { "id": "cfbc005d-8640-57a4-89e1-539c974fa780", "createdAt": "2025-09-27T03:08:11.548Z", "updatedAt": "2025-09-27T03:08:11.548Z", "userId": "840c28f2-ea7d-5c3a-9271-b10fd8b6ae6d", "source": { "paymentRail": [ "ach", "wire", "rtp" ], "currency": "usd" }, "destination": { "chain": "POLYGON", "currency": "usdc", "walletAddress": "0xd102C4130985B7fcB95697616eaf5542c4f98d49", "externalWalletId": null }, "status": "activated", "depositInstructions": { "bankName": "Bank of NoWhere", "bankAddress": "123 Main St, New York, NY 10001, USA", "beneficiary": { "name": "Henry Wu", "address": "Example St 1., Apt 123, New York, NY, 10010, US" }, "ach": { "routingNumber": "028000024", "accountNumber": "123456789" }, "wire": { "routingNumber": "021000021", "accountNumber": "123456789" }, "rtp": { "routingNumber": "021000021", "accountNumber": "123456789" }, "instruction": "Please deposit usd to the bank account provided. Please ensure that the beneficiary name matches the account holder name provided, or the payment may be rejected." }, "settlementRuleId": null } } }, "VirtualAccountObjectDeactivateExample": { "summary": "Virtual Account Object (Deactivation)", "value": { "message": "Virtual account deactivated", "accountInfo": { "id": "cfbc005d-8640-57a4-89e1-539c974fa780", "createdAt": "2025-09-27T03:08:11.548Z", "updatedAt": "2025-09-27T03:08:11.548Z", "userId": "840c28f2-ea7d-5c3a-9271-b10fd8b6ae6d", "source": { "paymentRail": [ "ach", "wire", "rtp" ], "currency": "usd" }, "destination": { "chain": "POLYGON", "currency": "usdc", "walletAddress": "0xd102C4130985B7fcB95697616eaf5542c4f98d49", "externalWalletId": null }, "status": "deactivated", "depositInstructions": { "bankName": "Bank of NoWhere", "bankAddress": "123 Main St, New York, NY 10001, USA", "beneficiary": { "name": "Henry Wu", "address": "Example St 1., Apt 123, New York, NY, 10010, US" }, "ach": { "routingNumber": "028000024", "accountNumber": "123456789" }, "wire": { "routingNumber": "021000021", "accountNumber": "123456789" }, "rtp": { "routingNumber": "021000021", "accountNumber": "123456789" }, "instruction": "Please deposit usd to the bank account provided. Please ensure that the beneficiary name matches the account holder name provided, or the payment may be rejected." }, "settlementRuleId": null } } }, "VirtualAccountObjectExample": { "summary": "Virtual Account Object", "value": { "id": "cfbc005d-8640-57a4-89e1-539c974fa780", "createdAt": "2025-09-27T03:08:11.548Z", "updatedAt": "2025-09-27T03:08:11.548Z", "userId": "840c28f2-ea7d-5c3a-9271-b10fd8b6ae6d", "source": { "paymentRail": [ "ach", "wire", "rtp" ], "currency": "usd" }, "destination": { "chain": "POLYGON", "currency": "usdc", "walletAddress": "0xd102C4130985B7fcB95697616eaf5542c4f98d49", "externalWalletId": null }, "status": "activated", "depositInstructions": { "bankName": "Bank of NoWhere", "bankAddress": "123 Main St, New York, NY 10001, USA", "beneficiary": { "name": "Henry Wu", "address": "Example St 1., Apt 123, New York, NY, 10010, US" }, "ach": { "routingNumber": "028000024", "accountNumber": "123456789" }, "wire": { "routingNumber": "021000021", "accountNumber": "123456789" }, "rtp": { "routingNumber": "021000021", "accountNumber": "123456789" }, "instruction": "Please deposit usd to the bank account provided. Please ensure that the beneficiary name matches the account holder name provided, or the payment may be rejected." }, "settlementRuleId": null } }, "VirtualAccountObjectListExample": { "summary": "Virtual Account Object List", "value": { "count": 1, "data": [ { "id": "cfbc005d-8640-57a4-89e1-539c974fa780", "createdAt": "2025-09-27T03:08:11.548Z", "updatedAt": "2025-09-27T03:08:11.548Z", "userId": "840c28f2-ea7d-5c3a-9271-b10fd8b6ae6d", "source": { "paymentRail": [ "ach", "wire", "rtp" ], "currency": "usd" }, "destination": { "chain": "POLYGON", "currency": "usdc", "walletAddress": "0xd102C4130985B7fcB95697616eaf5542c4f98d49", "externalWalletId": null }, "status": "activated", "depositInstructions": { "bankName": "Bank of NoWhere", "bankAddress": "123 Main St, New York, NY 10001, USA", "beneficiary": { "name": "Henry Wu", "address": "Example St 1., Apt 123, New York, NY, 10010, US" }, "ach": { "routingNumber": "028000024", "accountNumber": "123456789" }, "wire": { "routingNumber": "021000021", "accountNumber": "123456789" }, "rtp": { "routingNumber": "021000021", "accountNumber": "123456789" }, "instruction": "Please deposit usd to the bank account provided. Please ensure that the beneficiary name matches the account holder name provided, or the payment may be rejected." }, "settlementRuleId": null } ], "nextCursor": "2025-09-27T03:08:11.548Z" } }, "AccountObjectCreationExample": { "summary": "Account Object (Creation)", "value": { "status": "ACTIVE", "message": "Account created successfully", "id": "583eb259-e78b-4f0c-a4b5-a8957876fa6f" } }, "AccountObjectDeletionExample": { "summary": "Account Object (Deletion)", "value": { "status": "INACTIVE", "message": "Account deleted successfully", "id": "583eb259-e78b-4f0c-a4b5-a8957876fa6f" } }, "AccountObjectUSExample": { "summary": "Account Object (US)", "value": { "id": "d748da4f-aeb1-4a9d-af30-62ae7e82b897", "createdAt": "2025-09-27T03:34:12.181Z", "updatedAt": "2025-09-27T03:34:12.181Z", "accountHolder": { "type": "individual", "name": "Henry Wu", "address": { "addressLine1": "Example St 1", "addressLine2": "Apt 123", "city": "New York", "stateProvinceRegion": "NY", "postalCode": "10010", "country": "USA" } }, "us": { "accountType": "Checking", "accountNumber": "123456789", "routingNumber": "021000021", "iban": null, "swiftCode": null, "bankName": "Bank of NoWhere", "bankCountry": "USA", "bankAddress": { "addressLine1": "Example St 1", "addressLine2": "Apt 123", "city": "New York", "stateProvinceRegion": "NY", "postalCode": "10010", "country": "USA" }, "currency": "usd" }, "rail": { "currency": "usd", "railType": "offramp", "paymentRail": "ach" } } }, "AccountObjectListUSExample": { "summary": "Account Object List (US)", "value": { "count": 1, "banks": [ { "id": "d748da4f-aeb1-4a9d-af30-62ae7e82b897", "createdAt": "2025-09-27T03:34:12.181Z", "updatedAt": "2025-09-27T03:34:12.181Z", "accountHolder": { "type": "individual", "name": "Henry Wu", "address": { "addressLine1": "Example St 1", "addressLine2": "Apt 123", "city": "New York", "stateProvinceRegion": "NY", "postalCode": "10010", "country": "USA" } }, "us": { "accountType": "Checking", "accountNumber": "123456789", "routingNumber": "021000021", "iban": null, "swiftCode": null, "bankName": "Bank of NoWhere", "bankCountry": "USA", "bankAddress": { "addressLine1": "Example St 1", "addressLine2": "Apt 123", "city": "New York", "stateProvinceRegion": "NY", "postalCode": "10010", "country": "USA" }, "currency": "usd" }, "rail": { "currency": "usd", "railType": "offramp", "paymentRail": "ach" } } ], "nextCursor": "2025-09-27T03:34:12.181Z" } }, "SettlementRuleObjectExample": { "summary": "Settlement Rule Object", "value": { "id": "15c786fb-de7a-520c-a4b3-f312d4a122d2", "chain": "BASE", "includeHIFIFee": false, "rules": [ { "type": "PERCENTAGE", "calculationModel": "FIXED", "value": 0.001, "tiers": null, "walletAddress": "0x15FB50680fEB2f726413416665c25f9B397b047b" }, { "type": "FIXED", "calculationModel": "FIXED", "value": 0.5, "tiers": null, "walletAddress": "0x15FB50680fEB2f726413416665c25f9B397b047b" }, { "type": "PERCENTAGE", "calculationModel": "TIERED", "value": null, "tiers": [ { "max": "1000", "min": "", "value": 0.0007 }, { "max": "2000", "min": "1000", "value": 0.0005 }, { "max": "", "min": "2000", "value": 0.0002 } ], "walletAddress": "0x15FB50680fEB2f726413416665c25f9B397b047b" } ] } }, "VirtualAccountDepositSimulationObjectExample": { "summary": "Virtual Account Deposit Simulation Object", "value": { "amount": "88.8", "paymentRail": "WIRE", "requestId": "550e8400-e29b-41d4-a716-446655440000", "source": { "routingNumber": "021000021", "accountNumber": "123456789", "name": "Henry Wu", "bankName": "Bank of NoWhere" }, "userId": "840c28f2-ea7d-5c3a-9271-b10fd8b6ae6d", "reference": "Test deposit", "description": "Simulated test deposit" } }, "KycSubmissionObjectUsdExample": { "summary": "KYC Submission Object (USD)", "value": { "USD": { "status": "CREATED", "message": "Your KYC application has been successfully created. We will review it shortly." } } }, "KycSubmissionObjectSouthAmericaStandardExample": { "summary": "KYC Submission Object (SOUTH_AMERICA_STANDARD)", "value": { "SOUTH_AMERICA_STANDARD": { "status": "PENDING", "warnings": [], "message": "", "limit": {}, "onRamp": { "brl": { "pix": { "status": "PENDING", "warnings": [], "message": "" } } }, "offRamp": { "brl": { "pix": { "status": "PENDING", "warnings": [], "message": "" } }, "mxn": { "spei": { "status": "PENDING", "warnings": [], "message": "" } }, "cop": { "achCop": { "status": "PENDING", "warnings": [], "message": "" } }, "ars": { "transfers": { "status": "PENDING", "warnings": [], "message": "" } } } } } }, "KycSubmissionObjectAfricaGeneralExample": { "summary": "KYC Submission Object (AFRICA_GENERAL)", "value": { "AFRICA_GENERAL": { "status": "PENDING", "warnings": [], "message": "", "onRamp": { "kes": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "ghs": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "tzs": { "bank": { "status": "PENDING", "warnings": [], "message": "" } }, "ugx": { "bank": { "status": "PENDING", "warnings": [], "message": "" } }, "bwp": { "bank": { "status": "PENDING", "warnings": [], "message": "" } }, "xaf": { "bank": { "status": "PENDING", "warnings": [], "message": "" }, "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "mwk": { "bank": { "status": "PENDING", "warnings": [], "message": "" }, "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "rwf": { "bank": { "status": "PENDING", "warnings": [], "message": "" } }, "zmw": { "bank": { "status": "PENDING", "warnings": [], "message": "" }, "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "xof": { "momo": { "status": "PENDING", "warnings": [], "message": "" } } }, "offRamp": { "kes": { "bank": { "status": "PENDING", "warnings": [], "message": "" }, "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "zar": { "bank": { "status": "PENDING", "warnings": [], "message": "" } }, "gns": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "tzs": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "ugx": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "bwp": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "xaf": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "mwk": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "rwf": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "zmw": { "momo": { "status": "PENDING", "warnings": [], "message": "" } }, "xof": { "momo": { "status": "PENDING", "warnings": [], "message": "" } } } } } }, "KycSubmissionObjectAfricaNigeriaExample": { "summary": "KYC Submission Object (AFRICA_NIGERIA)", "value": { "AFRICA_NIGERIA": { "status": "PENDING", "warnings": [], "message": "", "onRamp": { "ngn": { "bank": { "status": "PENDING", "warnings": [], "message": "" } } }, "offRamp": { "ngn": { "bank": { "status": "PENDING", "warnings": [], "message": "" } } } } } }, "KycSubmissionObjectGlobalNetworkExample": { "summary": "KYC Submission Object (GLOBAL_NETWORK)", "value": { "GLOBAL_NETWORK": { "status": "ACTIVE", "warnings": [], "message": "", "onRamp": {}, "offRamp": { "brl": { "pix": { "status": "ACTIVE", "warnings": [], "message": "" } }, "hkd": { "wire": { "status": "ACTIVE", "warnings": [], "message": "" } }, "mxn": { "spei": { "status": "ACTIVE", "warnings": [], "message": "" } }, "ngn": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" } } } } } }, "KycStatusObjectUSDInactiveExample": { "summary": "KYC Status Object (USD - INACTIVE)", "value": { "status": "INACTIVE", "message": "The rail is not active." } }, "KycStatusObjectUSDPendingIndividualExample": { "summary": "KYC Status Object (USD - Individual - PENDING)", "value": { "status": "PENDING", "message": "", "reviewResult": {}, "details": { "identity": { "reviewResult": {}, "details": [ { "id": "e423fa6b-6d05-4b21-8797-ba8c75effaa4", "type": "ID_CARD", "subType": "FRONT_SIDE", "reviewResult": {} }, { "id": "c819c689-7e50-4c39-bec7-76875a078495", "type": "ID_CARD", "subType": "BACK_SIDE", "reviewResult": {} } ] }, "questionnaire": { "reviewResult": {} }, "personalInfo": { "reviewResult": {} }, "proofOfAddress": { "reviewResult": {}, "details": [ { "id": "7bc43187-e7c2-496c-bd14-30b71cadadc3", "type": "PROOF_OF_ADDRESS", "subType": "SINGLE_SIDE", "reviewResult": {} } ] } } } }, "KycStatusObjectUSDIncompleteBusinessExample": { "summary": "KYC Status Object (USD - Business - INCOMPLETE)", "value": { "status": "INCOMPLETE", "message": "", "reviewResult": { "reviewAnswer": "DECLINED", "reviewRejectType": "RETRY", "rejectReasons": [ "UNFILLED_ID" ], "comment": "" }, "details": { "companyInfo": { "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } }, "questionnaire": { "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } }, "companyDocuments": { "reviewResult": { "reviewAnswer": "DECLINED", "reviewRejectType": "RETRY", "rejectReasons": [], "comment": "" }, "details": [ { "id": "04f809a1-e9fc-45d6-9c1f-b308cfb19c96", "type": "PROOF_OF_ADDRESS", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } }, { "id": "b0436bee-0e80-46d3-98a2-6d58183eb84f", "type": "INFORMATION_STATEMENT", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } }, { "id": "d9f38450-ec16-4a4b-bf69-f8c88bb73a94", "type": "SHAREHOLDER_REGISTRY", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "DECLINED", "reviewRejectType": "RETRY", "rejectReasons": [ "UNFILLED_ID" ], "comment": "This document is not accepted.\n - The document is missing key company identification details like the registration number or company name. Please upload a document that includes this information to verify its relevance." } }, { "id": "7a9dc485-3216-47fd-baa4-a7ab4085b723", "type": "INCORPORATION_CERT", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } } ] }, "ultimateBeneficialOwners": { "reviewResult": {}, "details": [ { "id": "74441b74-caab-5f74-8e24-3fcee83faac8", "status": "INCOMPLETE", "message": "", "reviewResult": { "reviewAnswer": "DECLINED", "reviewRejectType": "RETRY", "rejectReasons": [ "SCREENSHOTS", "UNSATISFACTORY_PHOTOS" ], "comment": "" }, "details": { "identity": { "reviewResult": { "reviewAnswer": "DECLINED", "reviewRejectType": "RETRY", "rejectReasons": [], "comment": "Screenshots aren’t accepted. Please upload a live photo of the document." }, "details": [ { "id": "b4534db5-b759-4a4e-ad29-8ab5a1257936", "type": "PASSPORT", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "DECLINED", "reviewRejectType": "RETRY", "rejectReasons": [ "SCREENSHOTS - UNSATISFACTORY_PHOTOS" ], "comment": "Screenshots aren’t accepted. Please upload a live photo of the document." } } ] }, "personalInfo": { "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } } } } ] } } } }, "KycStatusObjectUSDActiveBusinessExample": { "summary": "KYC Status Object (USD - Business - ACTIVE)", "value": { "status": "ACTIVE", "message": "", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" }, "details": { "companyInfo": { "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } }, "questionnaire": { "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } }, "companyDocuments": { "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" }, "details": [ { "id": "04f809a1-e9fc-45d6-9c1f-b308cfb19c96", "type": "PROOF_OF_ADDRESS", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } }, { "id": "b0436bee-0e80-46d3-98a2-6d58183eb84f", "type": "INFORMATION_STATEMENT", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } }, { "id": "d9f38450-ec16-4a4b-bf69-f8c88bb73a94", "type": "SHAREHOLDER_REGISTRY", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } }, { "id": "7a9dc485-3216-47fd-baa4-a7ab4085b723", "type": "INCORPORATION_CERT", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } } ] }, "ultimateBeneficialOwners": { "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" }, "details": [ { "id": "74441b74-caab-5f74-8e24-3fcee83faac8", "status": "ACTIVE", "message": "", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" }, "details": { "identity": { "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" }, "details": [ { "id": "b4534db5-b759-4a4e-ad29-8ab5a1257936", "type": "PASSPORT", "subType": "SINGLE_SIDE", "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } } ] }, "personalInfo": { "reviewResult": { "reviewAnswer": "APPROVED", "reviewRejectType": "", "rejectReasons": [], "comment": "" } } } } ] } } } }, "KycStatusObjectSouthAmericaPendingExample": { "summary": "KYC Status Object (SOUTH_AMERICA_STANDARD - PENDING)", "value": { "status": "PENDING", "warnings": [], "message": "", "limit": {}, "onRamp": { "brl": { "pix": { "status": "PENDING", "warnings": [], "message": "" } } }, "offRamp": { "brl": { "pix": { "status": "PENDING", "warnings": [], "message": "" } }, "mxn": { "spei": { "status": "PENDING", "warnings": [], "message": "" } }, "cop": { "achCop": { "status": "PENDING", "warnings": [], "message": "" } }, "ars": { "transfers": { "status": "PENDING", "warnings": [], "message": "" } } } } }, "KycStatusObjectSouthAmericaActiveExample": { "summary": "KYC Status Object (SOUTH_AMERICA_STANDARD - ACTIVE)", "value": { "status": "ACTIVE", "warnings": [], "message": "", "limit": { "daily": 50000, "monthly": 100000, "perTransaction": 10000 }, "onRamp": { "brl": { "pix": { "status": "ACTIVE", "warnings": [], "message": "" } } }, "offRamp": { "brl": { "pix": { "status": "ACTIVE", "warnings": [], "message": "" } }, "mxn": { "spei": { "status": "ACTIVE", "warnings": [], "message": "" } }, "cop": { "achCop": { "status": "ACTIVE", "warnings": [], "message": "" } }, "ars": { "transfers": { "status": "ACTIVE", "warnings": [], "message": "" } } } } }, "KycStatusObjectAfricaGeneralActiveExample": { "summary": "KYC Status Object (AFRICA_GENERAL - ACTIVE)", "value": { "status": "ACTIVE", "warnings": [], "message": "", "onRamp": { "kes": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "ghs": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "tzs": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" } }, "ugx": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" } }, "bwp": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" } }, "xaf": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" }, "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "mwk": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" }, "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "rwf": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" } }, "zmw": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" }, "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "xof": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } } }, "offRamp": { "kes": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" }, "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "zar": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" } }, "gns": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "tzs": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "ugx": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "bwp": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "xaf": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "mwk": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "rwf": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "zmw": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } }, "xof": { "momo": { "status": "ACTIVE", "warnings": [], "message": "" } } } } }, "KycStatusObjectAfricaNigeriaActiveExample": { "summary": "KYC Status Object (AFRICA_NIGERIA - ACTIVE)", "value": { "status": "ACTIVE", "warnings": [], "message": "", "onRamp": { "ngn": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" } } }, "offRamp": { "ngn": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" } } } } }, "KycStatusObjectGlobalNetworkActiveExample": { "summary": "KYC Status Object (GLOBAL_NETWORK - ACTIVE)", "value": { "status": "ACTIVE", "warnings": [], "message": "", "onRamp": {}, "offRamp": { "brl": { "pix": { "status": "ACTIVE", "warnings": [], "message": "" } }, "hkd": { "wire": { "status": "ACTIVE", "warnings": [], "message": "" } }, "mxn": { "spei": { "status": "ACTIVE", "warnings": [], "message": "" } }, "ngn": { "bank": { "status": "ACTIVE", "warnings": [], "message": "" } } } } }, "KycStatusObjectOnChainActiveExample": { "summary": "KYC Status Object (ON_CHAIN - ACTIVE)", "value": { "INDIVIDUAL": { "status": "ACTIVE", "warnings": [], "message": "", "addresses": { "ETHEREUM": { "address": "0xC1e00C9d1F3097bd0Acb560E1629Ae61af70fab2" }, "POLYGON": { "address": "0x17B932d00294587868797ceA27A23E3EDC5f0F7b" } } } } }, "BasicKycStatusObjectListExample": { "summary": "Basic KYC Status Object List", "value": [ { "user": { "id": "35dbc7ea-2877-4a70-add6-b5458289df23", "type": "individual", "name": "John Doe", "email": "jd@hifibridge.com" }, "rails": "USD", "createdAt": "2023-10-01T12:00:00Z", "updatedAt": "2023-10-02T12:00:00Z", "status": "ACTIVE" } ] }, "KycRequirementObjectBusinessUSDExample": { "summary": "KYC Requirement Object (USD - Business)", "value": { "userId": "35dbc7ea-2877-4a70-add6-b5458289df23", "rails": "USD", "type": "business", "required": { "businessName": "string", "businessType": "string", "businessIndustry": "string", "registrationNumber": "string", "registeredAddress": "object", "address": { "required": { "addressLine1": "string", "city": "string", "stateProvinceRegion": "string", "postalCode": "string", "country": "string" }, "optional": { "addressLine2": "string" } }, "website": "string", "incorporationDate": "date", "email": "string", "phone": "string", "taxIdentificationNumber": "string", "sofEuQuestionnaire": { "required": { "primaryPurpose": "string", "sourceOfFunds": "string", "transmitsCustomerFunds": "boolean", "conductsMoneyServices": "boolean", "highRiskActivities": "array", "estimatedAnnualRevenueUsd": "string", "expectedMonthlyPaymentsUsd": "string", "customerFundsDescription": "string" }, "optional": { "operatesInProhibitedCountries": "string", "primaryPurposeOther": "string", "sourceOfFundsDescription": "string", "transmitsCustomerFundsDescription": "string" } }, "ultimateBeneficialOwners": [ { "required": { "roles": "array", "businessTitle": "string", "firstName": "string", "lastName": "string", "nationality": "string", "email": "string", "phone": "string", "address": { "required": { "addressLine1": "string", "city": "string", "stateProvinceRegion": "string", "postalCode": "string", "country": "string" }, "optional": { "addressLine2": "string" } }, "taxIdentificationNumber": "string", "dateOfBirth": "date", "shareProportion": "string", "relationshipEstablishedAt": "date", "documents": { "identity": { "minCount": 1, "acceptedDocTypes": [ "DRIVERS", "ID_CARD", "PASSPORT", "RESIDENCE_PERMIT" ] } } }, "optional": { "middleName": "string" } } ], "documents": { "legalPresence": { "minCount": 1, "acceptedDocTypes": [ "INCORPORATION_ARTICLES", "INCORPORATION_CERT", "STATE_REGISTRY" ] }, "ownershipStructure": { "minCount": 1, "acceptedDocTypes": [ "SHAREHOLDER_REGISTRY", "TRUST_AGREEMENT", "INFORMATION_STATEMENT", "STATE_REGISTRY" ] }, "companyDetails": { "minCount": 1, "acceptedDocTypes": [ "PROOF_OF_ADDRESS" ] }, "controlStructure": { "minCount": 1, "acceptedDocTypes": [ "DIRECTORS_REGISTRY", "TRUST_AGREEMENT", "INFORMATION_STATEMENT", "STATE_REGISTRY" ] } } }, "optional": { "incorporationCountry": "string", "incorporationState": "string" }, "invalid": {} } }, "KycRequirementObjectIndividualUSDExample": { "summary": "KYC Requirement Object (USD - Individual)", "value": { "userId": "35dbc7ea-2877-4a70-add6-b5458289df23", "rails": "USD", "type": "individual", "required": { "firstName": "string", "lastName": "string", "email": "string", "phone": "string", "address": { "required": { "addressLine1": "string", "city": "string", "stateProvinceRegion": "string", "postalCode": "string", "country": "string" }, "optional": { "addressLine2": "string" } }, "nationality": "string", "dateOfBirth": "string", "taxIdentificationNumber": "string", "documents": { "identity": { "minCount": 1, "acceptedDocTypes": [ "DRIVERS", "ID_CARD", "PASSPORT", "RESIDENCE_PERMIT" ] } } }, "optional": {}, "invalid": { "message": "fields are either missing or invalid", "fields": { "phone": "missing", "nationality": "missing", "taxIdentificationNumber": "missing" }, "documents": { "message": "The following document groups are not satisfied: identity", "groups": { "identity": { "minCount": 1, "acceptedDocTypes": [ "DRIVERS", "ID_CARD", "PASSPORT", "RESIDENCE_PERMIT" ] } } } } } }, "KycLinkObjectExample": { "summary": "KYC Link Object", "value": { "kycLinkUrl": "http://dashboard.hifibridge.com/production/kyc-link?sessionToken=768fb84ad65284cb5fffda212f5e779829318acwdab5a36efbf83c4f44369c73" } }, "DocumentObjectIndividualExample": { "summary": "Document Object (Individual)", "value": { "id": "d9f38450-ec16-4a4b-bf69-f8c88bb73a94", "type": "PASSPORT", "subType": "SINGLE_SIDE", "issuedCountry": "USA", "issuedDate": null, "expiryDate": null, "number": null, "description": null, "url": "https://example.com/doc_123", "fileId": "file_zEFpbPhk71NaQfEVMR544" } }, "DocumentObjectBusinessExample": { "summary": "Document Object (Business)", "value": { "id": "7c9439f6-655b-4aeb-9b32-e17759ee9134", "type": "CERTIFICATE_OF_INCORPORATION", "subType": "SINGLE_SIDE", "issuedCountry": "USA", "issuedDate": null, "expiryDate": null, "number": null, "description": null, "url": "https://example.com/doc_123", "fileId": "file_zEFpbPhk71NaQfEVMR544", "uboId": null } }, "DocumentObjectUboExample": { "summary": "Document Object (UBO)", "value": { "id": "7a9dc485-3216-47fd-baa4-a7ab4085b723", "type": "PASSPORT", "subType": "SINGLE_SIDE", "issuedCountry": "USA", "issuedDate": null, "expiryDate": null, "number": null, "description": null, "url": "https://example.com/doc_123", "fileId": "file_zEFpbPhk71NaQfEVMR544", "uboId": "3285c3be-ef36-4f01-bf95-578d3116f0ff" } }, "DocumentObjectListExample": { "summary": "Document Object List", "value": { "count": 2, "data": [ { "id": "7c9439f6-655b-4aeb-9b32-e17759ee9134", "type": "CERTIFICATE_OF_INCORPORATION", "subType": "SINGLE_SIDE", "issuedCountry": "USA", "issuedDate": null, "expiryDate": null, "number": null, "description": null, "url": "https://example.com/doc_123", "fileId": "file_zEFpbPhk71NaQfEVMR544", "uboId": null }, { "id": "7a9dc485-3216-47fd-baa4-a7ab4085b723", "type": "PASSPORT", "subType": "SINGLE_SIDE", "issuedCountry": "USA", "issuedDate": null, "expiryDate": null, "number": null, "description": null, "url": "https://example.com/doc_123", "fileId": "file_zEFpbPhk71NaQfEVMR544", "uboId": "3285c3be-ef36-4f01-bf95-578d3116f0ff" } ] } }, "UboObjectExample": { "summary": "UBO Object", "value": { "id": "03aef9fa-0e58-4f42-a22f-46de619b42e0", "role": "OWNER_OR_OPERATOR", "roles": [ "UBO", "DIRECTOR" ], "businessTitle": "CEO", "firstName": "John", "firstNameLocal": "John", "middleName": null, "middleNameLocal": null, "lastName": "Doe", "lastNameLocal": "Doe", "nationality": "USA", "email": "example@gmail.com", "phone": "+12223334444", "address": { "addressLine1": "123 Main St", "addressLine2": null, "city": "San Francisco", "stateProvinceRegion": "CA", "postalCode": "94105", "country": "USA" }, "dateOfBirth": "1990-01-01", "countryOfBirth": "USA", "stateOfBirth": "NJ", "placeOfBirth": null, "gender": "M", "country": "USA", "taxIdentificationNumber": "123456789", "taxResidenceCountry": "USA", "ipAddress": null, "hasOwnership": true, "hasControl": true, "isSigner": true, "relationshipEstablishedAt": "2020-01-01", "govIdCountry": "USA", "govIdType": "PASSPORT", "govIdNumber": "123456789", "govIdFrontUrl": "https://example.com", "govIdBackUrl": "https://example.com", "govIdIssuanceDate": "2020-01-01", "govIdExpirationDate": "2027-01-01", "govIdIssuanceAuthority": null, "proofOfAddressType": "UTILITY_BILL", "proofOfAddressUrl": "https://example.com", "authLetterUrl": "https://example.com", "shareProportion": 25, "supplementaryInfo": null, "supplementaryUrl": null, "documents": [] } }, "UboObjectListExample": { "summary": "UBO Object List", "value": { "count": 1, "data": [ { "id": "03aef9fa-0e58-4f42-a22f-46de619b42e0", "role": "OWNER_OR_OPERATOR", "roles": [ "UBO", "DIRECTOR" ], "businessTitle": "CEO", "firstName": "John", "firstNameLocal": "John", "middleName": null, "middleNameLocal": null, "lastName": "Doe", "lastNameLocal": "Doe", "nationality": "USA", "email": "example@gmail.com", "phone": "+12223334444", "address": { "addressLine1": "123 Main St", "addressLine2": null, "city": "San Francisco", "stateProvinceRegion": "CA", "postalCode": "94105", "country": "USA" }, "dateOfBirth": "1990-01-01", "countryOfBirth": "USA", "stateOfBirth": "NJ", "placeOfBirth": null, "gender": "M", "country": "USA", "taxIdentificationNumber": "123456789", "taxResidenceCountry": "USA", "ipAddress": null, "hasOwnership": true, "hasControl": true, "isSigner": true, "relationshipEstablishedAt": "2020-01-01", "govIdCountry": "USA", "govIdType": "PASSPORT", "govIdNumber": "123456789", "govIdFrontUrl": "https://example.com", "govIdBackUrl": "https://example.com", "govIdIssuanceDate": "2020-01-01", "govIdExpirationDate": "2027-01-01", "govIdIssuanceAuthority": null, "proofOfAddressType": "UTILITY_BILL", "proofOfAddressUrl": "https://example.com", "authLetterUrl": "https://example.com", "shareProportion": 25, "supplementaryInfo": null, "supplementaryUrl": null, "documents": [] } ] } }, "KycObjectIndividualExample": { "summary": "KYC Object (Individual)", "value": { "userId": "35dbc7ea-2877-4a70-add6-b5458289df23", "kycInfo": { "type": "individual", "firstName": "John", "firstNameLocal": "Lil John", "middleName": null, "middleNameLocal": null, "lastName": "Doe", "lastNameLocal": null, "nationality": "USA", "email": "example@gmail.com", "phone": "+12223334444", "address": { "addressLine1": "123 Main St", "addressLine2": null, "city": "San Francisco", "stateProvinceRegion": "CA", "postalCode": "94105", "country": "USA" }, "dateOfBirth": "1990-01-01", "countryOfBirth": "USA", "stateOfBirth": "NY", "placeOfBirth": null, "taxIdentificationNumber": "123456789", "taxResidenceCountry": "USA", "govIdType": "PASSPORT", "govIdNumber": "123456789", "govIdFrontUrl": "https://example.com", "govIdBackUrl": "https://example.com", "govIdCountry": "USA", "govIdIssuanceDate": "2020-01-01", "govIdExpirationDate": "2027-01-01", "govIdIssuanceAuthority": null, "govIdHandHoldUrl": "https://example.com", "proofOfAddressType": "UTILITY_BILL", "proofOfAddressUrl": "https://example.com", "sofEuQuestionnaire": null, "ipAddress": "108.28.159.21", "idType": "NIN", "idNumber": "123456789", "additionalIdType": null, "additionalIdNumber": null, "purpose": null, "productServiceCategory": null, "supplementaryInfo": null, "supplementaryUrl": null, "documents": [] } } }, "KycObjectBusinessExample": { "summary": "KYC Object (Business)", "value": { "userId": "35dbc7ea-2877-4a70-add6-b5458289df23", "kycInfo": { "type": "business", "businessName": "Example Inc", "businessNameLocal": null, "businessDescription": "Example business description", "email": "example@example.com", "phone": "+12223334444", "sourceOfFunds": "income", "businessType": "s_corporation", "businessIndustry": "111110", "website": "example.com", "address": { "addressLine1": "123 Main St", "addressLine2": null, "city": "San Francisco", "stateProvinceRegion": "CA", "postalCode": "94105", "country": "USA" }, "taxIdentificationNumberType": "EIN", "taxIdentificationNumber": "123456789", "leiNumber": "null,", "daoStatus": false, "transmitsCustomerFunds": false, "formationDocUrl": "https://example.com", "proofOfOwnershipUrl": "https://example.com", "proofOfAddressType": "UTILITY_BILL", "proofOfAddressUrl": "https://example.com", "formationDate": "2020-01-01", "ipAddress": "108.28.159.21", "complianceScreeningExplanation": null, "certificateOfRegistrationDocType": "CERTIFICATE_OF_REGISTRATION", "certificateOfRegistrationDocUrl": "https://example.com", "certificateNumber": "123456789", "registrationNumber": "349182744", "registeredAddress": { "addressLine1": "123 Main St", "addressLine2": null, "city": "San Francisco", "stateProvinceRegion": "CA", "postalCode": "94105", "country": "USA" }, "postalAddress": { "addressLine1": "123 Main St", "addressLine2": null, "city": "San Francisco", "stateProvinceRegion": "CA", "postalCode": "94105", "country": "USA" }, "alternativeNames": null, "certificateIncorporationDocUrl": "https://example.com", "incorporationNumber": "123456789", "incorporationDate": "2020-01-01", "incorporationCountry": "USA", "incorporationState": "NY", "controlScheme": "", "businessRegistrationDocUrl": "https://example.com", "licenseExpirationDate": "2027-01-01", "productServiceCategory": "KC02001001", "shareStructureUrl": "https://example.com", "constitutionOrAnnualReportUrl": "https://example.com", "articlesOfAssociationUrl": "https://example.com", "uboDeclarationUrl": "https://example.com", "partnershipMinsOfMeetingUrl": null, "partnershipDeedUrl": null, "certificateOfIncumbencyUrl": null, "flowOfFundsUrl": null, "sourceOfFundsUrl": null, "purpose": "PAY_SUPPLIERS", "tradeName": null, "exportCountry": null, "tradeType": null, "supplementaryInfo": null, "supplementaryUrl": null, "dueDiligenceForm": null, "organizationStructureUrl": null, "sofEuQuestionnaire": { "primaryPurpose": "investment_purposes", "sourceOfFunds": "investment_proceeds", "highRiskActivities": [ "none_of_the_above" ], "conductsMoneyServices": false, "transmitsCustomerFunds": false, "customerFundsDescription": "na", "estimatedAnnualRevenueUsd": "10000000_49999999", "expectedMonthlyPaymentsUsd": "100000", "operatesInProhibitedCountries": false }, "documents": [ { "id": "aafddd61-ed30-48bd-b122-bdc3aed54ac2", "type": "INCORPORATION_CERT", "subType": "SINGLE_SIDE", "issuedCountry": "USA", "issuedDate": "2022-01-04T00:00:00+00:00", "expiryDate": "2030-01-04T00:00:00+00:00", "number": "837473233", "url": "https://example.com", "fileID": null, "description": null, "uboId": null } ], "ultimateBeneficialOwners": [ { "id": "03aef9fa-0e58-4f42-a22f-46de619b42e0", "role": "OWNER_OR_OPERATOR", "roles": [ "UBO", "DIRECTOR" ], "businessTitle": "CEO", "firstName": "John", "firstNameLocal": "John", "middleName": null, "middleNameLocal": null, "lastName": "Doe", "lastNameLocal": "John", "nationality": "USA", "email": "example@gmail.com", "phone": "+12223334444", "address": { "addressLine1": "123 Main St", "addressLine2": null, "city": "San Francisco", "stateProvinceRegion": "CA", "postalCode": "94105", "country": "USA" }, "dateOfBirth": "1990-01-01", "countryOfBirth": "USA", "stateOfBirth": null, "placeOfBirth": null, "gender": "M", "country": "USA", "taxIdentificationNumber": "123456789", "taxResidenceCountry": "USA", "ipAddress": null, "hasOwnership": true, "hasControl": true, "isSigner": true, "relationshipEstablishedAt": "2020-01-01", "govIdCountry": "USA", "govIdType": "PASSPORT", "govIdNumber": "123456789", "govIdFrontUrl": "https://example.com", "govIdBackUrl": "https://example.com", "govIdIssuanceDate": "2020-01-01", "govIdExpirationDate": "2027-01-01", "govIdIssuanceAuthority": null, "proofOfAddressType": "UTILITY_BILL", "proofOfAddressUrl": "https://example.com", "authLetterUrl": "https://example.com", "shareProportion": 25, "supplementaryInfo": null, "supplementaryUrl": null, "documents": [] } ] } } }, "OfframpObjectUsdOpenQuoteExample": { "summary": "Offramp Object (USD - OPEN_QUOTE)", "value": { "transferType": "OFFRAMP", "transferDetails": { "id": "173c1e89-7bbd-4352-9e5d-73807681510d", "requestId": "201ca31d-700f-4c76-ac4b-961623acbb79", "createdAt": "2025-02-03T16:12:04.331652+00:00", "updatedAt": "2025-02-03T16:12:08.732+00:00", "status": "OPEN_QUOTE", "failedReason": null, "source": { "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee", "chain": "POLYGON", "currency": "usdc", "amount": 10, "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D6", "user": { "email": "john.doe@hifibridge.com", "firstName": "John", "lastName": "Doe", "businessName": null } }, "destination": { "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee", "amount": 0, "currency": "usd", "wireMessage": "Wire message", "achReference": "ACH reference", "paymentReference": "Payment reference", "user": { "email": "john.doe@hifibridge.com", "firstName": "John", "lastName": "Doe", "businessName": null }, "accountId": "12c1c496-8f57-41a1-8292-dbe6547791ce" }, "receipt": { "transactionHash": null, "paymentTracking": null }, "developerFee": { "id": "1c3d24c1-6136-574c-a647-e7eb6a9fb6ed", "transactionHash": null, "fees": [ { "type": "PERCENTAGE", "value": "0.0005", "amount": "0.000515", "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7" }, { "type": "FLAT", "value": "0.01", "amount": "0.010000", "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7" } ] }, "quoteInformation": { "sendGross": { "amount": "10", "currency": "usdc" }, "sendNet": { "amount": "10", "currency": "usdc" }, "receiveGross": { "amount": "10", "currency": "usd" }, "receiveNet": { "amount": "10", "currency": "usd" }, "rate": "1" }, "depositInformation": [] } } }, "OfframpObjectUsdCryptoInitiatedExample": { "summary": "Offramp Object (USD - CRYPTO_INITIATED)", "value": { "transferType": "OFFRAMP", "transferDetails": { "id": "173c1e89-7bbd-4352-9e5d-73807681510d", "requestId": "201ca31d-700f-4c76-ac4b-961623acbb79", "createdAt": "2025-02-03T16:12:04.331652+00:00", "updatedAt": "2025-02-03T16:12:08.732+00:00", "status": "CRYPTO_INITIATED", "failedReason": null, "source": { "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee", "chain": "POLYGON", "currency": "usdc", "amount": 10, "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D6", "user": { "email": "john.doe@hifibridge.com", "firstName": "John", "lastName": "Doe", "businessName": null } }, "destination": { "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee", "amount": 0, "currency": "usd", "user": { "email": "john.doe@hifibridge.com", "firstName": "John", "lastName": "Doe", "businessName": null }, "accountId": "12c1c496-8f57-41a1-8292-dbe6547791ce" }, "receipt": { "transactionHash": null, "paymentTracking": null }, "developerFee": { "id": "1c3d24c1-6136-574c-a647-e7eb6a9fb6ed", "transactionHash": null, "fees": [ { "type": "PERCENTAGE", "value": "0.0005", "amount": "0.000515", "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7" }, { "type": "FLAT", "value": "0.01", "amount": "0.010000", "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7" } ] }, "quoteInformation": { "sendGross": { "amount": "10", "currency": "usdc" }, "sendNet": { "amount": "10", "currency": "usdc" }, "receiveGross": { "amount": "10", "currency": "usd" }, "receiveNet": { "amount": "10", "currency": "usd" }, "rate": "1" }, "depositInformation": [] } } }, "OfframpObjectUsdCompleteExample": { "summary": "Offramp Object (USD - COMPLETED)", "value": { "transferType": "OFFRAMP", "transferDetails": { "id": "173c1e89-7bbd-4352-9e5d-73807681510d", "requestId": "201ca31d-700f-4c76-ac4b-961623acbb79", "createdAt": "2025-02-03T16:12:04.331652+00:00", "updatedAt": "2025-02-03T16:12:08.732+00:00", "status": "COMPLETED", "failedReason": null, "source": { "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee", "chain": "POLYGON", "currency": "usdc", "amount": 10, "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D6", "user": { "email": "john.doe@hifibridge.com", "firstName": "John", "lastName": "Doe", "businessName": null } }, "destination": { "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee", "amount": 0, "currency": "usd", "wireMessage": "Wire message", "achReference": "ACH reference", "paymentReference": "Payment reference", "user": { "email": "john.doe@hifibridge.com", "firstName": "John", "lastName": "Doe", "businessName": null }, "accountId": "12c1c496-8f57-41a1-8292-dbe6547791ce" }, "receipt": { "transactionHash": null, "paymentTracking": { "imad": "20250827SIM14AE0135526", "omad": "20250827SIM22390135526", "paymentRail": "wire" } }, "developerFee": { "id": "1c3d24c1-6136-574c-a647-e7eb6a9fb6ed", "transactionHash": null, "fees": [ { "type": "PERCENTAGE", "value": "0.0005", "amount": "0.000515", "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7" }, { "type": "FLAT", "value": "0.01", "amount": "0.010000", "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7" } ] }, "quoteInformation": { "sendGross": { "amount": "10", "currency": "usdc" }, "sendNet": { "amount": "10", "currency": "usdc" }, "receiveGross": { "amount": "10", "currency": "usd" }, "receiveNet": { "amount": "10", "currency": "usd" }, "rate": "1" }, "depositInformation": [] } } }, "OfframpObjectListExample": { "summary": "Offramp Object List", "value": { "count": 1, "records": [ { "transferType": "OFFRAMP", "transferDetails": { "id": "173c1e89-7bbd-4352-9e5d-73807681510d", "requestId": "201ca31d-700f-4c76-ac4b-961623acbb79", "createdAt": "2025-02-03T16:12:04.331652+00:00", "updatedAt": "2025-02-03T16:12:08.732+00:00", "status": "COMPLETED", "failedReason": null, "source": { "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee", "chain": "POLYGON", "currency": "usdc", "amount": 10, "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D6", "user": { "email": "john.doe@hifibridge.com", "firstName": "John", "lastName": "Doe", "businessName": null } }, "destination": { "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee", "amount": 0, "currency": "usd", "wireMessage": "Wire message", "achReference": "ACH reference", "paymentReference": "Payment reference", "user": { "email": "john.doe@hifibridge.com", "firstName": "John", "lastName": "Doe", "businessName": null }, "accountId": "12c1c496-8f57-41a1-8292-dbe6547791ce" }, "receipt": { "transactionHash": null, "paymentTracking": { "imad": "20250827SIM14AE0135526", "omad": "20250827SIM22390135526", "paymentRail": "wire" } }, "developerFee": { "id": "1c3d24c1-6136-574c-a647-e7eb6a9fb6ed", "transactionHash": null, "fees": [ { "type": "PERCENTAGE", "value": "0.0005", "amount": "0.000515", "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7" }, { "type": "FLAT", "value": "0.01", "amount": "0.010000", "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7" } ] }, "quoteInformation": { "sendGross": { "amount": "10", "currency": "usdc" }, "sendNet": { "amount": "10", "currency": "usdc" }, "receiveGross": { "amount": "10", "currency": "usd" }, "receiveNet": { "amount": "10", "currency": "usd" }, "rate": "1" }, "depositInformation": [] } } ] } }, "OnrampObjectUsdOpenQuoteExample": { "summary": "Onramp Object (USD - OPEN_QUOTE)", "value": { "transferType": "ONRAMP", "transferDetails": { "id": "b26927e6-2771-423c-af44-a3c7a3e815c5", "requestId": "e1047def-6942-4fd7-be04-e62eb41813b6", "createdAt": "2025-02-03T17:15:31.927121+00:00", "updatedAt": "2025-02-03T17:15:35.882+00:00", "status": "OPEN_QUOTE", "failedReason": null, "source": { "userId": "c15c0adf-3e45-4a62-b334-73aeec127649", "currency": "usd", "amount": 10, "accountId": null, "user": { "email": "example@hifibridge.com", "lastName": "Wu", "firstName": "Henry", "businessName": null }, "bankInfo": null }, "destination": { "userId": "c15c0adf-3e45-4a62-b334-73aeec127649", "currency": "usdc", "chain": "POLYGON", "walletAddress": "0x848732f6c834E05b17C56fa01E83EE095f72C3c3", "externalWalletId": null, "amount": null, "user": { "email": "example@hifibridge.com", "lastName": "Wu", "firstName": "Henry", "businessName": null } }, "receipt": { "transactionHash": null }, "developerFee": null, "virtualAccountId": null, "quoteInformation": { "sendGross": { "amount": "10.00", "currency": "usd" }, "sendNet": { "amount": "10.00", "currency": "usd" }, "railFee": { "amount": "0.00", "currency": "usdc" }, "receiveGross": { "amount": "10.00", "currency": "usdc" }, "receiveNet": { "amount": "10.00", "currency": "usdc" }, "rate": "1.00", "expiresAt": "N/A" }, "depositInfo": null } } }, "OnrampObjectUsdAwaitingFundsExample": { "summary": "Onramp Object (USD - AWAITING_FUNDS)", "value": { "transferType": "ONRAMP", "transferDetails": { "id": "b26927e6-2771-423c-af44-a3c7a3e815c5", "requestId": "e1047def-6942-4fd7-be04-e62eb41813b6", "createdAt": "2025-02-03T17:15:31.927121+00:00", "updatedAt": "2025-02-03T17:15:35.882+00:00", "status": "AWAITING_FUNDS", "failedReason": null, "source": { "userId": "c15c0adf-3e45-4a62-b334-73aeec127649", "currency": "usd", "amount": 10, "accountId": null, "user": { "email": "example@hifibridge.com", "lastName": "Wu", "firstName": "Henry", "businessName": null }, "bankInfo": null }, "destination": { "userId": "c15c0adf-3e45-4a62-b334-73aeec127649", "currency": "usdc", "chain": "POLYGON", "walletAddress": "0x848732f6c834E05b17C56fa01E83EE095f72C3c3", "externalWalletId": null, "amount": null, "user": { "email": "example@hifibridge.com", "lastName": "Wu", "firstName": "Henry", "businessName": null } }, "receipt": { "transactionHash": null }, "developerFee": null, "virtualAccountId": null, "quoteInformation": { "sendGross": { "amount": "10.00", "currency": "usd" }, "sendNet": { "amount": "10.00", "currency": "usd" }, "railFee": { "amount": "0.00", "currency": "usdc" }, "receiveGross": { "amount": "10.00", "currency": "usdc" }, "receiveNet": { "amount": "10.00", "currency": "usdc" }, "rate": "1.00", "expiresAt": "N/A" }, "depositInfo": { "bankName": "Bank of NoWhere", "bankAddress": "123 Main St, New York, NY 10001, USA", "beneficiary": { "name": "Henry Wu", "address": "Example St 1., Apt 123, New York, NY, 10010, US" }, "ach": { "routingNumber": "028000024", "accountNumber": "123456789" }, "wire": { "routingNumber": "021000021", "accountNumber": "123456789" }, "rtp": { "routingNumber": "021000021", "accountNumber": "123456789" }, "reference": "HFD70579F", "depositBy": "2025-10-04T04:23:40.229Z", "instruction": "Please deposit only one payment with the exact amount of usd and the reference code HFD70579F to the designated bank account by 2025-10-04T04:23:40.229Z. Missing or incorrect reference codes, discrepancies in the amount, or additional payments may result in the funds being lost. Ensure that the beneficiary name matches the provided account holder name, otherwise the payment may be rejected." } } } }, "OnrampObjectUsdFiatPendingExample": { "summary": "Onramp Object (USD - FIAT_PENDING)", "value": { "transferType": "ONRAMP", "transferDetails": { "id": "b26927e6-2771-423c-af44-a3c7a3e815c5", "requestId": "e1047def-6942-4fd7-be04-e62eb41813b6", "createdAt": "2025-02-03T17:15:31.927121+00:00", "updatedAt": "2025-02-03T17:15:35.882+00:00", "status": "FIAT_PENDING", "failedReason": null, "source": { "userId": "c15c0adf-3e45-4a62-b334-73aeec127649", "currency": "usd", "amount": 10, "accountId": null, "user": { "email": "example@hifibridge.com", "lastName": "Wu", "firstName": "Henry", "businessName": null }, "bankInfo": { "bankName": "Bank of America", "beneficiaryName": "Henry Wu", "description": "", "routingNumber": "026009593", "referenceNumber": "HFD70579F", "imad": "", "omad": "", "bankAddress": "100 N Tryon St, Charlotte, NC 28202, USA" } }, "destination": { "userId": "c15c0adf-3e45-4a62-b334-73aeec127649", "currency": "usdc", "chain": "POLYGON", "walletAddress": "0x848732f6c834E05b17C56fa01E83EE095f72C3c3", "externalWalletId": null, "amount": null, "user": { "email": "example@hifibridge.com", "lastName": "Wu", "firstName": "Henry", "businessName": null } }, "receipt": { "transactionHash": null }, "developerFee": null, "virtualAccountId": null, "quoteInformation": { "sendGross": { "amount": "10.00", "currency": "usd" }, "sendNet": { "amount": "10.00", "currency": "usd" }, "railFee": { "amount": "0.00", "currency": "usdc" }, "receiveGross": { "amount": "10.00", "currency": "usdc" }, "receiveNet": { "amount": "10.00", "currency": "usdc" }, "rate": "1.00", "expiresAt": "N/A" }, "depositInfo": { "bankName": "Bank of NoWhere", "bankAddress": "123 Main St, New York, NY 10001, USA", "beneficiary": { "name": "Henry Wu", "address": "Example St 1., Apt 123, New York, NY, 10010, US" }, "ach": { "routingNumber": "028000024", "accountNumber": "123456789" }, "wire": { "routingNumber": "021000021", "accountNumber": "123456789" }, "rtp": { "routingNumber": "021000021", "accountNumber": "123456789" }, "reference": "HFD70579F", "depositBy": "2025-10-04T04:23:40.229Z", "instruction": "Please deposit only one payment with the exact amount of usd and the reference code HFD70579F to the designated bank account by 2025-10-04T04:23:40.229Z. Missing or incorrect reference codes, discrepancies in the amount, or additional payments may result in the funds being lost. Ensure that the beneficiary name matches the provided account holder name, otherwise the payment may be rejected." } } } }, "OnrampObjectListExample": { "summary": "Onramp Object List", "value": { "count": 1, "records": [ { "transferType": "ONRAMP", "transferDetails": { "id": "b26927e6-2771-423c-af44-a3c7a3e815c5", "requestId": "e1047def-6942-4fd7-be04-e62eb41813b6", "createdAt": "2025-02-03T17:15:31.927121+00:00", "updatedAt": "2025-02-03T17:15:35.882+00:00", "status": "FIAT_PENDING", "failedReason": null, "source": { "userId": "c15c0adf-3e45-4a62-b334-73aeec127649", "currency": "usd", "amount": 10, "accountId": null, "user": { "email": "example@hifibridge.com", "lastName": "Wu", "firstName": "Henry", "businessName": null }, "bankInfo": { "bankName": "Bank of America", "beneficiaryName": "Henry Wu", "description": "", "routingNumber": "026009593", "referenceNumber": "HFD70579F", "imad": "", "omad": "", "bankAddress": "100 N Tryon St, Charlotte, NC 28202, USA" } }, "destination": { "userId": "c15c0adf-3e45-4a62-b334-73aeec127649", "currency": "usdc", "chain": "POLYGON", "walletAddress": "0x848732f6c834E05b17C56fa01E83EE095f72C3c3", "externalWalletId": null, "amount": null, "user": { "email": "example@hifibridge.com", "lastName": "Wu", "firstName": "Henry", "businessName": null } }, "receipt": { "transactionHash": null }, "developerFee": null, "virtualAccountId": null, "quoteInformation": { "sendGross": { "amount": "10.00", "currency": "usd" }, "sendNet": { "amount": "10.00", "currency": "usd" }, "railFee": { "amount": "0.00", "currency": "usdc" }, "receiveGross": { "amount": "10.00", "currency": "usdc" }, "receiveNet": { "amount": "10.00", "currency": "usdc" }, "rate": "1.00", "expiresAt": "N/A" }, "depositInfo": { "bankName": "Bank of NoWhere", "bankAddress": "123 Main St, New York, NY 10001, USA", "beneficiary": { "name": "Henry Wu", "address": "Example St 1., Apt 123, New York, NY, 10010, US" }, "ach": { "routingNumber": "028000024", "accountNumber": "123456789" }, "wire": { "routingNumber": "021000021", "accountNumber": "123456789" }, "rtp": { "routingNumber": "021000021", "accountNumber": "123456789" }, "reference": "HFD70579F", "depositBy": "2025-10-04T04:23:40.229Z", "instruction": "Please deposit only one payment with the exact amount of usd and the reference code HFD70579F to the designated bank account by 2025-10-04T04:23:40.229Z. Missing or incorrect reference codes, discrepancies in the amount, or additional payments may result in the funds being lost. Ensure that the beneficiary name matches the provided account holder name, otherwise the payment may be rejected." } } } ], "nextCursor": "2025-02-03T17:15:31.927121+00:00" } }, "TemplateListExample": { "summary": "List of all metric templates", "value": { "status": "success", "data": [ { "template": "GROSS_VOLUME", "displayName": "Gross Volume", "description": "Total combined USD-equivalent value of completed Onramp and Offramp transactions.", "supportedParams": [ { "name": "createdAfter", "type": "date", "required": true, "multiple": false, "constraints": { "minDate": "2024-07-01", "maxDate": "2025-12-08" } }, { "name": "createdBefore", "type": "date", "required": true, "multiple": false, "constraints": { "maxDate": "2025-12-08" } }, { "name": "calculationInterval", "type": "enum", "required": true, "multiple": false, "options": [ "day", "week", "month" ] }, { "name": "transactionTypes", "type": "enum", "required": false, "multiple": true, "options": [ "onramp", "offramp", "transfer" ] }, { "name": "userIds", "type": "uuid", "required": false, "multiple": true, "optionsCount": 1000, "optionsTruncated": true, "optionsEndpoint": "/reporting/params/userIds/options" }, { "name": "breakdowns", "type": "enum", "required": false, "multiple": true, "constraints": { "maxCount": 2 } }, { "name": "limit", "type": "number", "required": false, "multiple": false, "constraints": { "min": 1, "max": 10000 } } ], "rules": [ "createdBefore must be after createdAfter" ], "breakdownOptions": [ "transactionType", "userId" ] }, { "template": "TRANSACTION_COUNT", "displayName": "Transaction Count", "description": "Aggregated count of transactions grouped by status and type over time.", "supportedParams": [ { "name": "createdAfter", "type": "date", "required": true, "multiple": false, "constraints": { "minDate": "2024-07-01", "maxDate": "2025-12-08" } }, { "name": "createdBefore", "type": "date", "required": true, "multiple": false, "constraints": { "maxDate": "2025-12-08" } }, { "name": "calculationInterval", "type": "enum", "required": true, "multiple": false, "options": [ "day", "week", "month" ] }, { "name": "transactionTypes", "type": "enum", "required": false, "multiple": true, "options": [ "onramp", "offramp", "transfer" ] }, { "name": "transactionStatuses", "type": "enum", "required": false, "multiple": true, "options": [ "AWAITING_FUNDS", "FIAT_INITIATED", "FIAT_PENDING", "FIAT_PROCESSED", "CRYPTO_INITIATED", "CRYPTO_PENDING", "FIAT_FAILED", "CRYPTO_FAILED", "QUOTE_FAILED", "NOT_INITIATED", "FIAT_RETURNED", "COMPLETED", "PENDING_APPROVAL", "INITIATED", "PENDING", "FAILED", "REJECTED" ] }, { "name": "userIds", "type": "uuid", "required": false, "multiple": true, "optionsCount": 1000, "optionsTruncated": true, "optionsEndpoint": "/reporting/params/userIds/options" }, { "name": "breakdowns", "type": "enum", "required": false, "multiple": true, "constraints": { "maxCount": 2 } }, { "name": "limit", "type": "number", "required": false, "multiple": false, "constraints": { "min": 1, "max": 10000 } } ], "rules": [ "createdBefore must be after createdAfter" ], "breakdownOptions": [ "transactionType", "transactionStatus", "userId" ] }, { "template": "NEW_USERS", "displayName": "New Users", "description": "Count of new unique end-users onboarded within the time period.", "supportedParams": [ { "name": "createdAfter", "type": "date", "required": true, "multiple": false, "constraints": { "minDate": "2024-07-01", "maxDate": "2025-12-08" } }, { "name": "createdBefore", "type": "date", "required": true, "multiple": false, "constraints": { "maxDate": "2025-12-08" } }, { "name": "calculationInterval", "type": "enum", "required": true, "multiple": false, "options": [ "day", "week", "month" ] }, { "name": "limit", "type": "number", "required": false, "multiple": false, "constraints": { "min": 1, "max": 10000 } } ], "rules": [ "createdBefore must be after createdAfter" ], "breakdownOptions": null } ], "metadata": { "count": 3 } } }, "TemplateExample": { "summary": "Single metric template (GROSS_VOLUME)", "value": { "status": "success", "data": { "template": "GROSS_VOLUME", "displayName": "Gross Volume", "description": "Total combined USD-equivalent value of completed Onramp and Offramp transactions.", "supportedParams": [ { "name": "createdAfter", "type": "date", "required": true, "multiple": false, "constraints": { "minDate": "2024-07-01", "maxDate": "2025-12-08" } }, { "name": "createdBefore", "type": "date", "required": true, "multiple": false, "constraints": { "maxDate": "2025-12-08" } }, { "name": "calculationInterval", "type": "enum", "required": true, "multiple": false, "options": [ "day", "week", "month" ] }, { "name": "transactionTypes", "type": "enum", "required": false, "multiple": true, "options": [ "onramp", "offramp", "transfer" ] }, { "name": "userIds", "type": "uuid", "required": false, "multiple": true, "optionsCount": 1000, "optionsTruncated": true, "optionsEndpoint": "/reporting/params/userIds/options" }, { "name": "breakdowns", "type": "enum", "required": false, "multiple": true, "constraints": { "maxCount": 2 } }, { "name": "limit", "type": "number", "required": false, "multiple": false, "constraints": { "min": 1, "max": 10000 } } ], "rules": [ "createdBefore must be after createdAfter" ], "breakdownOptions": [ "transactionType", "userId" ] }, "metadata": {} } }, "ParamOptionsUserIdsExample": { "summary": "User IDs parameter options (paginated)", "value": { "status": "success", "data": [ "f6a78498-0994-5bea-b5ab-7d40a231217a", "c92f87e6-eaac-59a3-898f-d8c847553f5f", "fb0b02ed-6bcc-5724-8269-dcaeb6474be2", "b56ac719-efc3-5e40-b99f-2daf85d519dc", "2bbbda5d-0464-5748-801a-dae6ae3dbad9" ], "metadata": { "count": 5, "page": 1, "limit": 5, "total": 1000, "totalPages": 200, "hasMore": true } } }, "ParamOptionsTransactionTypesExample": { "summary": "Transaction types parameter options", "value": { "status": "success", "data": [ "onramp", "offramp", "transfer" ], "metadata": { "count": 3, "page": 1, "limit": 10, "total": 3, "totalPages": 1, "hasMore": false } } }, "MetricResponseExample": { "summary": "Single saved metric", "value": { "status": "success", "data": { "id": "1154d700-bd7d-41d5-8676-87b541baa86e", "profileId": "e4c758d7-5475-4505-ba15-e129db0a441f", "template": "TRANSACTION_COUNT", "name": "Monthly Transfer Analysis", "params": { "createdAfter": "2025-01-01", "createdBefore": "2025-12-01", "calculationInterval": "month" }, "createdAt": "2025-12-08T22:28:03.922Z", "updatedAt": "2025-12-08T22:28:03.922Z" }, "metadata": {} } }, "MetricListExample": { "summary": "List of saved metrics", "value": { "status": "success", "data": [ { "id": "1154d700-bd7d-41d5-8676-87b541baa86e", "profileId": "e4c758d7-5475-4505-ba15-e129db0a441f", "template": "TRANSACTION_COUNT", "name": "Monthly Transfer Analysis", "params": { "createdAfter": "2025-01-01", "createdBefore": "2025-12-01", "calculationInterval": "month" }, "createdAt": "2025-12-08T22:28:03.922Z", "updatedAt": "2025-12-08T22:28:03.922Z" }, { "id": "d2872dce-d2d1-41ae-87a9-f773adbf97ca", "profileId": "e4c758d7-5475-4505-ba15-e129db0a441f", "template": "TRANSACTION_COUNT", "name": "Monthly Transfer Analysis", "params": { "breakdowns": [ "transactionType" ], "createdAfter": "2025-01-01", "createdBefore": "2025-12-01", "transactionStatuses": [ "COMPLETED" ], "calculationInterval": "month", "transactionTypes": [ "onramp", "offramp" ] }, "createdAt": "2025-12-08T22:26:45.765Z", "updatedAt": "2025-12-08T22:26:45.765Z" }, { "id": "9106f8e2-188f-4854-99fc-cb21ef6b998d", "profileId": "e4c758d7-5475-4505-ba15-e129db0a441f", "template": "GROSS_VOLUME", "name": "Daily Revenue Report", "params": { "createdAfter": "2025-11-01", "createdBefore": "2025-11-07", "calculationInterval": "day", "transactionTypes": [ "onramp", "offramp" ] }, "createdAt": "2025-12-08T22:26:13.659Z", "updatedAt": "2025-12-08T22:26:13.659Z" } ], "metadata": { "count": 12, "profileId": "e4c758d7-5475-4505-ba15-e129db0a441f" } } }, "CreateMetricRequestExample": { "summary": "Create metric request (GROSS_VOLUME)", "value": { "template": "GROSS_VOLUME", "name": "Daily Revenue Report", "params": { "createdAfter": "2025-11-01", "createdBefore": "2025-11-07", "calculationInterval": "day", "transactionTypes": [ "onramp", "offramp" ] } } }, "CreateMetricRequestWithBreakdownsExample": { "summary": "Create metric request (TRANSACTION_COUNT with breakdowns)", "value": { "template": "TRANSACTION_COUNT", "name": "Monthly Transfer Analysis", "params": { "createdAfter": "2025-01-01", "createdBefore": "2025-12-01", "calculationInterval": "month", "transactionTypes": [ "onramp", "offramp" ], "transactionStatuses": [ "COMPLETED" ], "breakdowns": [ "transactionType" ] } } }, "CreateMetricResponseExample": { "summary": "Created metric response", "value": { "status": "success", "data": { "id": "9106f8e2-188f-4854-99fc-cb21ef6b998d", "profileId": "e4c758d7-5475-4505-ba15-e129db0a441f", "template": "GROSS_VOLUME", "name": "Daily Revenue Report", "params": { "createdAfter": "2025-11-01", "createdBefore": "2025-11-07", "calculationInterval": "day", "transactionTypes": [ "onramp", "offramp" ] }, "createdAt": "2025-12-08T22:26:13.659Z", "updatedAt": "2025-12-08T22:26:13.659Z" }, "metadata": {} } }, "UpdateMetricRequestNameExample": { "summary": "Update metric name", "value": { "name": "An Updated Report Title" } }, "UpdateMetricRequestParamsExample": { "summary": "Update metric parameters", "value": { "params": { "calculationInterval": "week" } } }, "UpdateMetricResponseExample": { "summary": "Updated metric response", "value": { "status": "success", "data": { "id": "1154d700-bd7d-41d5-8676-87b541baa86e", "profileId": "e4c758d7-5475-4505-ba15-e129db0a441f", "template": "TRANSACTION_COUNT", "name": "An Updated Report Title", "params": { "createdAfter": "2025-01-01", "createdBefore": "2025-12-01", "calculationInterval": "week" }, "createdAt": "2025-12-08T22:28:03.922Z", "updatedAt": "2025-12-08T22:33:04.112Z" }, "metadata": {} } }, "DeleteMetricResponseExample": { "summary": "Deleted metric response", "value": { "status": "success", "data": { "id": "1154d700-bd7d-41d5-8676-87b541baa86e", "profileId": "e4c758d7-5475-4505-ba15-e129db0a441f", "template": "TRANSACTION_COUNT", "name": "An Updated Report Title", "params": { "createdAfter": "2025-01-01", "createdBefore": "2025-12-01", "calculationInterval": "week" }, "createdAt": "2025-12-08T22:28:03.922Z", "updatedAt": "2025-12-08T22:33:04.112Z" }, "metadata": {} } }, "PreviewMetricRequestGrossVolumeExample": { "summary": "Preview GROSS_VOLUME metric (no breakdowns)", "value": { "template": "GROSS_VOLUME", "params": { "createdAfter": "2025-11-01", "createdBefore": "2025-11-07", "calculationInterval": "day", "transactionTypes": [ "onramp", "offramp" ] } } }, "PreviewMetricResponseGrossVolumeNoBreakdownsExample": { "summary": "GROSS_VOLUME calculation result (no breakdowns)", "value": { "status": "success", "data": [ { "periodStart": "2025-11-06", "grossVolume": 0 }, { "periodStart": "2025-11-05", "grossVolume": 0 }, { "periodStart": "2025-11-04", "grossVolume": 0 }, { "periodStart": "2025-11-03", "grossVolume": 0 }, { "periodStart": "2025-11-02", "grossVolume": 0 }, { "periodStart": "2025-11-01", "grossVolume": 0 } ], "metadata": { "template": "GROSS_VOLUME", "recordCount": 6, "projectedRowCount": null, "filledCount": 6, "calculationInterval": "day", "dateRange": { "start": "2025-11-01", "end": "2025-11-07" }, "filters": { "createdAfter": { "applied": "subset", "specified": true, "values": "2025-11-01" }, "createdBefore": { "applied": "subset", "specified": true, "values": "2025-11-07" }, "calculationInterval": { "applied": "subset", "specified": true, "values": "day" }, "transactionTypes": { "applied": "subset", "specified": true, "count": 2, "values": [ "onramp", "offramp" ] }, "userIds": { "applied": "all", "specified": false, "count": 1000, "note": "1000 total (list omitted for brevity)" } }, "breakdowns": null } } }, "PreviewMetricRequestGrossVolumeMonthlyExample": { "summary": "Preview GROSS_VOLUME metric (monthly interval)", "value": { "template": "GROSS_VOLUME", "params": { "createdAfter": "2025-01-01", "createdBefore": "2025-12-01", "calculationInterval": "month", "transactionTypes": [ "onramp", "offramp" ] } } }, "PreviewMetricResponseGrossVolumeMonthlyExample": { "summary": "GROSS_VOLUME calculation result (monthly, with data)", "value": { "status": "success", "data": [ { "periodStart": "2025-11-01", "grossVolume": 191 }, { "periodStart": "2025-10-01", "grossVolume": 124.05 }, { "periodStart": "2025-09-01", "grossVolume": 6707.86 }, { "periodStart": "2025-08-01", "grossVolume": 3066672.14 }, { "periodStart": "2025-07-01", "grossVolume": 199916.7 }, { "periodStart": "2025-06-01", "grossVolume": 24791 }, { "periodStart": "2025-05-01", "grossVolume": 57653 }, { "periodStart": "2025-04-01", "grossVolume": 54354.2 }, { "periodStart": "2025-03-01", "grossVolume": 0 }, { "periodStart": "2025-02-01", "grossVolume": 0 }, { "periodStart": "2025-01-01", "grossVolume": 0 }, { "periodStart": "2024-12-01", "grossVolume": 0 } ], "metadata": { "template": "GROSS_VOLUME", "recordCount": 12, "projectedRowCount": null, "filledCount": 4, "calculationInterval": "month", "dateRange": { "start": "2025-01-01", "end": "2025-12-01" }, "filters": { "createdAfter": { "applied": "subset", "specified": true, "values": "2025-01-01" }, "createdBefore": { "applied": "subset", "specified": true, "values": "2025-12-01" }, "calculationInterval": { "applied": "subset", "specified": true, "values": "month" }, "transactionTypes": { "applied": "subset", "specified": true, "count": 2, "values": [ "onramp", "offramp" ] }, "userIds": { "applied": "all", "specified": false, "count": 1000, "note": "1000 total (list omitted for brevity)" } }, "breakdowns": null } } }, "PreviewMetricRequestTransfersWithBreakdownsExample": { "summary": "Preview TRANSACTION_COUNT metric (with multiple breakdowns)", "value": { "template": "TRANSACTION_COUNT", "params": { "createdAfter": "2025-11-01", "createdBefore": "2025-11-07", "calculationInterval": "day", "transactionTypes": [ "onramp", "offramp" ], "transactionStatuses": [ "COMPLETED", "FAILED" ], "breakdowns": [ "transactionType", "transactionStatus" ] } } }, "PreviewMetricResponseTransfersWithBreakdownsExample": { "summary": "TRANSACTION_COUNT calculation result (with breakdowns)", "value": { "status": "success", "data": [ { "periodStart": "2025-11-06", "transactionType": "offramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-06", "transactionType": "offramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-06", "transactionType": "onramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-06", "transactionType": "onramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-05", "transactionType": "offramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-05", "transactionType": "offramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-05", "transactionType": "onramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-05", "transactionType": "onramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-04", "transactionType": "offramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-04", "transactionType": "offramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-04", "transactionType": "onramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-04", "transactionType": "onramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-03", "transactionType": "offramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-03", "transactionType": "offramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-03", "transactionType": "onramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-03", "transactionType": "onramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-02", "transactionType": "offramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-02", "transactionType": "offramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-02", "transactionType": "onramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-02", "transactionType": "onramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-01", "transactionType": "offramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-01", "transactionType": "offramp", "transactionStatus": "COMPLETED", "transactionCount": 0 }, { "periodStart": "2025-11-01", "transactionType": "onramp", "transactionStatus": "FAILED", "transactionCount": 0 }, { "periodStart": "2025-11-01", "transactionType": "onramp", "transactionStatus": "COMPLETED", "transactionCount": 0 } ], "metadata": { "template": "TRANSACTION_COUNT", "recordCount": 24, "projectedRowCount": 180, "filledCount": 24, "calculationInterval": "day", "dateRange": { "start": "2025-11-01", "end": "2025-11-07" }, "filters": { "createdAfter": { "applied": "subset", "specified": true, "values": "2025-11-01" }, "createdBefore": { "applied": "subset", "specified": true, "values": "2025-11-07" }, "calculationInterval": { "applied": "subset", "specified": true, "values": "day" }, "transactionTypes": { "applied": "subset", "specified": true, "count": 2, "values": [ "onramp", "offramp" ] }, "transactionStatuses": { "applied": "subset", "specified": true, "count": 2, "values": [ "COMPLETED", "FAILED" ] }, "userIds": { "applied": "all", "specified": false, "count": 1000, "note": "1000 total (list omitted for brevity)" }, "breakdowns": { "applied": "subset", "specified": true, "count": 2, "values": [ "transactionType", "transactionStatus" ] } }, "breakdowns": { "dimensions": [ "transactionType", "transactionStatus" ], "dimensionCounts": { "transactionType": 3, "transactionStatus": 10 } } } } }, "MetricResultsNewUsersExample": { "summary": "NEW_USERS metric results (no breakdowns)", "value": { "status": "success", "data": [ { "periodStart": "2025-12-01", "newUserCount": 0 }, { "periodStart": "2025-11-30", "newUserCount": 4 }, { "periodStart": "2025-11-29", "newUserCount": 4 }, { "periodStart": "2025-11-28", "newUserCount": 0 }, { "periodStart": "2025-11-27", "newUserCount": 0 }, { "periodStart": "2025-11-26", "newUserCount": 0 }, { "periodStart": "2025-11-25", "newUserCount": 0 }, { "periodStart": "2025-11-24", "newUserCount": 0 }, { "periodStart": "2025-11-23", "newUserCount": 0 }, { "periodStart": "2025-11-22", "newUserCount": 0 }, { "periodStart": "2025-11-21", "newUserCount": 25 }, { "periodStart": "2025-11-20", "newUserCount": 0 }, { "periodStart": "2025-11-19", "newUserCount": 0 }, { "periodStart": "2025-11-18", "newUserCount": 0 }, { "periodStart": "2025-11-17", "newUserCount": 0 }, { "periodStart": "2025-11-16", "newUserCount": 0 }, { "periodStart": "2025-11-15", "newUserCount": 0 }, { "periodStart": "2025-11-14", "newUserCount": 0 }, { "periodStart": "2025-11-13", "newUserCount": 3 }, { "periodStart": "2025-11-12", "newUserCount": 14 }, { "periodStart": "2025-11-11", "newUserCount": 4 }, { "periodStart": "2025-11-10", "newUserCount": 49 }, { "periodStart": "2025-11-09", "newUserCount": 4 }, { "periodStart": "2025-11-08", "newUserCount": 1 }, { "periodStart": "2025-11-07", "newUserCount": 6 }, { "periodStart": "2025-11-06", "newUserCount": 0 }, { "periodStart": "2025-11-05", "newUserCount": 4 }, { "periodStart": "2025-11-04", "newUserCount": 3 }, { "periodStart": "2025-11-03", "newUserCount": 0 }, { "periodStart": "2025-11-01", "newUserCount": 0 } ], "metadata": { "template": "NEW_USERS", "recordCount": 335, "projectedRowCount": null, "filledCount": 135, "calculationInterval": "day", "dateRange": { "start": "2025-01-01", "end": "2025-12-01" }, "filters": { "createdAfter": { "applied": "subset", "specified": true, "values": "2025-01-01" }, "createdBefore": { "applied": "subset", "specified": true, "values": "2025-12-01" }, "calculationInterval": { "applied": "subset", "specified": true, "values": "day" } }, "breakdowns": null, "metric": "testname123" } } }, "MetricResultsGrossVolumeExample": { "summary": "GROSS_VOLUME metric results (no breakdowns, with metric name)", "value": { "status": "success", "data": [ { "periodStart": "2025-11-06", "grossVolume": 0 }, { "periodStart": "2025-11-05", "grossVolume": 0 }, { "periodStart": "2025-11-04", "grossVolume": 0 }, { "periodStart": "2025-11-03", "grossVolume": 0 }, { "periodStart": "2025-11-02", "grossVolume": 0 }, { "periodStart": "2025-11-01", "grossVolume": 0 } ], "metadata": { "template": "GROSS_VOLUME", "recordCount": 6, "projectedRowCount": null, "filledCount": 6, "calculationInterval": "day", "dateRange": { "start": "2025-11-01", "end": "2025-11-07" }, "filters": { "createdAfter": { "applied": "subset", "specified": true, "values": "2025-11-01" }, "createdBefore": { "applied": "subset", "specified": true, "values": "2025-11-07" }, "calculationInterval": { "applied": "subset", "specified": true, "values": "day" }, "transactionTypes": { "applied": "subset", "specified": true, "count": 2, "values": [ "onramp", "offramp" ] }, "userIds": { "applied": "all", "specified": false, "count": 1000, "note": "1000 total (list omitted for brevity)" } }, "breakdowns": null, "metric": "Daily Revenue Report" } } }, "ToSLinkObjectExample": { "summary": "ToS Link Object", "value": { "url": "https://dashboard.hifibridge.com/accept-terms-of-service?sessionToken=e12d9c3f-75a8-4bd1-aa3d-97a2cfaf2c40&redirectUrl=undefined&templateId=2fb2da24-472a-4e5b-b160-038d9dc82a40", "signedAgreementId": "e12d9c3f-75a8-4bd1-aa3d-97a2cfaf2c40" } }, "TosLinkStatusObjectExample": { "summary": "ToS Link Status Object", "value": { "id": "e6e0de1d-7d0b-4935-ba1a-71906064067e", "createdAt": "2025-04-17T18:27:51.169Z", "expiredAt": "2025-04-22T18:27:51.091Z", "signed": true, "sessionToken": "e3a92e74-19e0-4137-ab75-ae537832f342" } }, "WalletBalanceObjectExample": { "summary": "Wallet Balance Object", "value": { "balance": "0", "displayBalance": "0", "tokenInfo": { "tokenAddress": "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582", "standard": "ERC20", "name": "USDC", "symbol": "USDC", "decimals": 6 } } }, "ExternalWalletObjectExample": { "summary": "External Wallet Object", "value": { "address": "0xFE5ea74612ba174BaF7FC4C45f05dB7fF73aBA21", "chain": "POLYGON", "name": "my-wallet", "referenceId": "my-wallet-reference-id", "createdAt": "2025-09-24T19:03:41.107Z" } }, "ExternalWalletObjectListExample": { "summary": "External Wallet Object List", "value": { "count": 1, "externalWallets": [ { "address": "0xFE5ea74612ba174BaF7FC4C45f05dB7fF73aBA21", "chain": "POLYGON", "name": "my-wallet", "referenceId": "my-wallet-reference-id", "createdAt": "2025-09-24T19:03:41.107Z" } ], "nextCursor": "2025-09-24T19:03:41.107Z" } }, "WalletDepositObjectExample": { "summary": "Wallet Deposit Object", "value": { "userId": "f4c99c2f-ce05-4f61-8ed6-9064a5689197", "id": "2e084846-00d6-5e4c-806f-eac45e197108", "createdAt": "2025-06-25T15:47:16.983978+00:00", "updatedAt": "2025-06-25T15:47:16.983978+00:00", "wallet": { "id": "24b4917d-694e-4d81-ace8-9ba5261b6f4e", "address": "0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef", "chain": "POLYGON", "walletType": "INDIVIDUAL" }, "transaction": { "transactionHash": "0xe5284c4cb35ae9b5eb0ae23b840032f320b87b63f8967ee9b67ee09dfe6a194a", "chain": "POLYGON", "currency": "usdc", "status": "COMPLETED", "sourceAddress": "0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef", "destinationAddress": "0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef", "contractAddress": "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582", "amount": "19", "unitAmount": "19000000" } } }, "WalletDepositObjectListExample": { "summary": "Wallet Deposit Object List", "value": { "count": 1, "records": [ { "userId": "f4c99c2f-ce05-4f61-8ed6-9064a5689197", "id": "2e084846-00d6-5e4c-806f-eac45e197108", "createdAt": "2025-06-25T15:47:16.983978+00:00", "updatedAt": "2025-06-25T15:47:16.983978+00:00", "wallet": { "id": "24b4917d-694e-4d81-ace8-9ba5261b6f4e", "address": "0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef", "chain": "POLYGON", "walletType": "INDIVIDUAL" }, "transaction": { "transactionHash": "0xe5284c4cb35ae9b5eb0ae23b840032f320b87b63f8967ee9b67ee09dfe6a194a", "chain": "POLYGON", "currency": "usdc", "status": "COMPLETED", "sourceAddress": "0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef", "destinationAddress": "0x0B95D270400BE4319EAFbfDD82F6C38B59ab54Ef", "contractAddress": "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582", "amount": "19", "unitAmount": "19000000" } } ], "nextCursor": "2025-06-25T15:47:16.983978+00:00" } }, "UserObjectIndividualExample": { "summary": "User Object (Individual)", "value": { "id": "4d93ab4f-3983-4ac0-8c97-54bbc0f287fa", "createdAt": "2025-09-24T19:12:20.541Z", "type": "individual", "email": "john.doe@hifibridge.com", "name": "John Doe", "wallets": { "INDIVIDUAL": { "ETHEREUM": { "address": "0x43B343Bb48E23F58406271131B71448fF95787AD" }, "POLYGON": { "address": "0x43B343Bb48E23F58406271131B71448fF95787AD" } } } } }, "UserObjectBusinessExample": { "summary": "User Object (Business)", "value": { "id": "264484e0-979a-5fa3-9335-947f55e5999a", "createdAt": "2025-09-24T19:03:41.107Z", "type": "business", "email": "admin@randombizz.com", "name": "Random Bizz", "wallets": { "INDIVIDUAL": { "ETHEREUM": { "address": "0x2f78AEFA879819D7a5C9a87fE8BF5e7B961f5500" }, "POLYGON": { "address": "0x2f78AEFA879819D7a5C9a87fE8BF5e7B961f5500" } } } } }, "UserObjectListExample": { "summary": "User Object List", "value": { "count": 2, "users": [ { "id": "4d93ab4f-3983-4ac0-8c97-54bbc0f287fa", "createdAt": "2025-09-24T19:12:20.541Z", "type": "individual", "email": "john.doe@hifibridge.com", "name": "John Doe", "wallets": { "INDIVIDUAL": { "ETHEREUM": { "address": "0x43B343Bb48E23F58406271131B71448fF95787AD" }, "POLYGON": { "address": "0x43B343Bb48E23F58406271131B71448fF95787AD" } } } }, { "id": "264484e0-979a-5fa3-9335-947f55e5999a", "createdAt": "2025-09-24T19:03:41.107Z", "type": "business", "email": "admin@randombizz.com", "name": "Random Bizz", "wallets": { "INDIVIDUAL": { "ETHEREUM": { "address": "0x2f78AEFA879819D7a5C9a87fE8BF5e7B961f5500" }, "POLYGON": { "address": "0x2f78AEFA879819D7a5C9a87fE8BF5e7B961f5500" } } } } ], "nextCursor": "2025-09-24T19:03:41.107Z" } } } }, "security": [ { "bearerAuth": [] } ], "paths": { "/v2/users/{userId}/accounts": { "post": { "summary": "Create an account", "description": "Create an onramp or offramp account for different account types by providing your bank account information.\n", "tags": [ "Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/CreateAccountBody" }, "responses": { "200": { "$ref": "#/components/responses/CreateAccountResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all accounts", "description": "List all accounts associated with a user under your organization.", "tags": [ "Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/AccountRailOptionalParameter" }, { "$ref": "#/components/parameters/AccountTypeOptionalParameter" }, { "$ref": "#/components/parameters/CurrencyAnyOptionalParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/GetAllAccountsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/accounts/{accountId}": { "get": { "summary": "Retrieve an account", "description": "Get an existing onramp or offramp account detail.", "tags": [ "Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/AccountIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/GetAccountResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "delete": { "summary": "Delete an account", "description": "Delete an existing onramp or offramp account.", "tags": [ "Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/AccountIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/DeleteAccountResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/virtual-accounts": { "post": { "summary": "Create a virtual account", "description": "Generate a virtual bank account to onramp from `sourceCurrency` to `destinationCurrency` on chain `destinationChain`. (note: virtual accounts are billable)\n", "tags": [ "Virtual Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/CreateVirtualAccountBody" }, "responses": { "200": { "$ref": "#/components/responses/CreateVirtualAccountResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all virtual accounts", "description": "List all virtual accounts associated with a user under your organization.", "tags": [ "Virtual Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/VASourceCurrencyParameter" }, { "$ref": "#/components/parameters/VADestinationCurrencyParameter" }, { "$ref": "#/components/parameters/VADestinationChainParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/GetAllVirtualAccountsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/virtual-accounts/{accountId}": { "get": { "summary": "Retrieve a virtual account", "description": "Get an existing virtual bank account detail.", "tags": [ "Virtual Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/VirtualAccountIdPathParameter" }, { "$ref": "#/components/parameters/VALimitParameter" }, { "$ref": "#/components/parameters/VACreatedBeforeParameter" }, { "$ref": "#/components/parameters/VACreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/GetVirtualAccountResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/virtual-accounts/{accountId}/update": { "post": { "summary": "Update a virtual account", "description": "Update an existing virtual account.\n", "tags": [ "Virtual Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/VirtualAccountIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/UpdateVirtualAccountBody" }, "responses": { "200": { "$ref": "#/components/responses/UpdateVirtualAccountResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/virtual-accounts/{accountId}/deactivate": { "post": { "summary": "Deactivate a virtual account", "description": "Deactivate an existing virtual account.", "tags": [ "Virtual Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/VirtualAccountIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/DeactivateVirtualAccountResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/virtual-accounts/{accountId}/reactivate": { "post": { "summary": "Reactivate a virtual account", "description": "Reactivate an existing virtual account.", "tags": [ "Virtual Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/VirtualAccountIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/ReactivateVirtualAccountResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/virtual-accounts/{accountId}/simulate-deposit": { "post": { "summary": "Simulate a deposit to a virtual account", "description": "Simulate a deposit to a virtual account in sandbox environment. This endpoint is only available in sandbox and allows testing deposit flows.\n\n**Note:** This endpoint is only available in sandbox environment.\n", "tags": [ "Virtual Account" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/VirtualAccountIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/SimulateVirtualAccountDepositBody" }, "responses": { "200": { "$ref": "#/components/responses/SimulateVirtualAccountDepositResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/virtual-accounts/settlement-rules/{ruleId}": { "get": { "summary": "Retrieve a settlement rule", "description": "Get an existing settlement rule detail.", "tags": [ "Settlement Rules" ], "parameters": [ { "$ref": "#/components/parameters/RuleIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/GetSettlementRuleResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "delete": { "summary": "Delete a settlement rule", "description": "Delete an existing settlement rule.", "tags": [ "Settlement Rules" ], "parameters": [ { "$ref": "#/components/parameters/RuleIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/DeleteSettlementRuleResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/virtual-accounts/settlement-rules": { "post": { "summary": "Create a settlement rule", "description": "Create a new settlement rule for virtual accounts. Settlement rules define how fees are calculated and distributed when processing an onramp transaction.\n", "tags": [ "Settlement Rules" ], "requestBody": { "$ref": "#/components/requestBodies/CreateSettlementRuleBody" }, "responses": { "200": { "$ref": "#/components/responses/CreateSettlementRuleResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all settlement rules", "description": "List all settlement rules available for virtual accounts.", "tags": [ "Settlement Rules" ], "parameters": [ { "$ref": "#/components/parameters/SettlementRuleLimitParameter" }, { "$ref": "#/components/parameters/SettlementRuleCreatedBeforeParameter" }, { "$ref": "#/components/parameters/SettlementRuleCreatedAfterParameter" }, { "$ref": "#/components/parameters/SettlementRuleChainParameter" } ], "responses": { "200": { "$ref": "#/components/responses/GetAllSettlementRulesResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/virtual-accounts/settlement-rules/{ruleId}/update": { "post": { "summary": "Update a settlement rule", "description": "Update an existing settlement rule. This will replace all existing rules with the new configuration.\n", "tags": [ "Settlement Rules" ], "parameters": [ { "$ref": "#/components/parameters/RuleIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/UpdateSettlementRuleBody" }, "responses": { "200": { "$ref": "#/components/responses/UpdateSettlementRuleResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/virtual-accounts/{accountId}/settlement-rules/{ruleId}": { "post": { "summary": "Apply settlement rule to virtual account", "description": "Apply a settlement rule to a specific virtual account. This will enable the fee structure defined in the rule for transactions on that account.\n", "tags": [ "Settlement Rules" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/VirtualAccountIdPathParameter" }, { "$ref": "#/components/parameters/RuleIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/ApplySettlementRuleResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/virtual-accounts/{accountId}/settlement-rules": { "delete": { "summary": "Remove settlement rule from virtual account", "description": "Remove a settlement rule from a specific virtual account. This will disable the fee structure for that account.\n", "tags": [ "Settlement Rules" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/VirtualAccountIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/RemoveSettlementRuleResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/ping": { "get": { "summary": "Ping", "tags": [ "Common" ], "responses": { "200": { "$ref": "#/components/responses/PingResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/files": { "post": { "summary": "Upload a file", "description": "Upload a file.\n", "tags": [ "File" ], "requestBody": { "$ref": "#/components/requestBodies/FileUploadBody" }, "responses": { "200": { "$ref": "#/components/responses/FileUploadResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/kyc": { "post": { "summary": "Update KYC information", "description": "Update the user's KYC information.\n\nThe Update KYC endpoint allows you to add or modify the user's existing KYC data. This is the only endpoint available for making changes to the user's KYC information.\n\nHIFI does not provide services to users or businesses from sanctioned and high-risk regions or unsupported US states. See [here](https://docs.hifibridge.com/docs/compliance/regions) for supported regions.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/KycUpdateBody" }, "responses": { "200": { "$ref": "#/components/responses/KycObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "Retrieve KYC information", "description": "Get the KYC information the user currently holds.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/KycObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/kyc/requirements": { "get": { "summary": "Retrieve KYC requirements", "description": "Get the required and optional KYC fields for a specific rail, along with any invalid KYC fields currently held by the user for unlocking the rail.\n\nThe Get KYC Requirements endpoint provides a comprehensive list of required and optional KYC fields needed to initiate a KYC submission (the same set of info available in our [Compliance Guide](https://docs.hifibridge.com/docs/rails/overview)). \nAdditionally, it identifies any invalid fields in the user's current KYC data that need to be updated before submission. This is particularly useful for pre-filling KYC forms and addressing issues proactively.\n\nThis endpoint is intended **only** for use **before** KYC submission. After submitting KYC data, use the [Retrieve KYC status](https://docs.hifibridge.com/api-reference/kyc/retrieve-kyc-status) endpoint to check the submission status and further identify any fields that may still require updates.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/RailsTypeParameter" } ], "responses": { "200": { "$ref": "#/components/responses/KycRequirementResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/kyc/submissions": { "post": { "summary": "Submit KYC", "description": "Submit the user's current KYC data to unlock a specific rail. Any updates to the user's KYC data prior to submission should be made using the [Update KYC](https://docs.hifibridge.com/api-reference/kyc/update-kyc-information) endpoint.) \n\nThe KYC data will only be submitted if all the required KYC fields for the rail are provided. If any required fields are missing, no submission will occur, and the user must supply the missing information using the [Update KYC](https://docs.hifibridge.com/api-reference/kyc/update-kyc-information) endpoint.\n\nA successful submission is confirmed when the response includes a KYC status object. If no such object is returned, the submission did not occur.\n\nFor more details on required and optional KYC fields for unlocking each rail, visit our [KYC Rails Requirement page](https://docs.hifibridge.com/docs/rails/overview).\nTo learn more about KYC, our KYC endpoints, and an example flow for unlocking a rail, see our [KYC Overview page](https://docs.hifibridge.com/guides/usd-rail/submit-kyb).\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/RailsBody" }, "responses": { "200": { "$ref": "#/components/responses/KycStatusSubmitResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/kyc/status": { "get": { "summary": "Retrieve KYC status", "description": "Get the user's latest KYC status for a specific rail after a KYC submission. If no KYC submission has been made for the rail, it will have an `INACTIVE` status.\n\nThe Get KYC Status endpoint provides the current KYC status of a rail, including details on any invalid or incomplete fields that may require updates. \nTo address any invalid or incomplete fields, use the [Update KYC endpoint](https://docs.hifibridge.com/api-reference/kyc/update-kyc-information), and then resubmit the data using the [Submit KYC endpoint](https://docs.hifibridge.com/api-reference/kyc/submit-kyc).\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/RailsTypeOptionalParameter" } ], "responses": { "200": { "$ref": "#/components/responses/KycStatusResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/kyc/status": { "get": { "summary": "List all KYC statuses", "description": "List all KYC statuses based on the provided filters.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdOptionalParameter" }, { "$ref": "#/components/parameters/UserNameParameter" }, { "$ref": "#/components/parameters/UserEmailV2Parameter" }, { "$ref": "#/components/parameters/RailsTypeOptionalParameter" }, { "$ref": "#/components/parameters/KycStatusArrayOptionalParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/AllKycStatusesResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/kyc-link": { "post": { "summary": "Generate a KYC link", "description": "Generate a KYC link to create a user, unlock rails for a user, or submit KYC for a user.\n\nThis endpoint allows you to generate a HIFI-hosted KYC link that can be shared with users to collect their KYC information. The collected data can be used for User Creation, KYC Submission, or unlocking KYC rails for the user.\n", "tags": [ "Kyc" ], "requestBody": { "$ref": "#/components/requestBodies/KycLinkBody" }, "responses": { "200": { "$ref": "#/components/responses/KycLinkResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/kyc/ubos": { "post": { "summary": "Add a UBO", "description": "Add a UBO to the user.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/AddUboBody" }, "responses": { "200": { "$ref": "#/components/responses/UboObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all UBOs", "description": "Get all UBOs associated with the user.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/UboObjectAllRecordsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/kyc/ubos/{uboId}": { "post": { "summary": "Update a UBO", "description": "Update a UBO for the user.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/UboIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/UpdateUboBody" }, "responses": { "200": { "$ref": "#/components/responses/UboObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "Retrieve a UBO", "description": "Get a specific UBO associated with the user.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/UboIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/UboObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/kyc/documents": { "post": { "summary": "Add documents", "description": "Add documents to the user's KYC.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/AddDocumentBody" }, "responses": { "200": { "$ref": "#/components/responses/DocumentObjectAllRecordsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all documents", "description": "Get all documents associated with the user.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/DocumentObjectAllRecordsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/kyc/documents/{documentId}": { "post": { "summary": "Update a document", "description": "Update a document for the user.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/DocumentIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/UpdateDocumentBody" }, "responses": { "200": { "$ref": "#/components/responses/DocumentObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "Retrieve a document", "description": "Get a specific document associated with the user or ubo.\n", "tags": [ "Kyc" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/DocumentIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/DocumentObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/offramps": { "post": { "summary": "Create an offramp", "description": "\nAn offramp facilitates the conversion of crypto to fiat. Once the crypto transfer is confirmed, HIFI will deposit the converted fiat into the receiving user’s bank account. \n\nThere are two types of offramp:\n\n* **Quote-based offramp**: This type of offramp first returns the conversion rate quote based on the best market rate, which you can accept through the [Accept an offramp quote](https://docs.hifibridge.com/api-reference/offramp/accept-an-offramp-quote) endpoint to initiate the offramp. \n To learn more about quote-based offramps, click [here](https://docs.hifibridge.com/guides/transfers/onramps/usd-usdc).\n\n* **Non-quote-based offramp**: This type of offramp will be initiated immediately upon creating an offramp.\n", "tags": [ "Offramp" ], "requestBody": { "$ref": "#/components/requestBodies/CreateOfframpBody" }, "responses": { "200": { "$ref": "#/components/responses/CryptoToFiatTransferResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all offramps", "description": "Returns a list of offramps associated with a user under your organization. The offramps are returned sorted by creation date, with the most recent offramps appearing first.\n", "tags": [ "Offramp" ], "parameters": [ { "$ref": "#/components/parameters/UserIdOptionalParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/CryptoToFiatAllRecordsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/offramps/{transferId}": { "get": { "summary": "Retrieve an offramp", "description": "Retrieves an offramp.", "tags": [ "Offramp" ], "parameters": [ { "$ref": "#/components/parameters/OfframpRecordIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/CryptoToFiatRecordResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/offramps/{transferId}/quote/accept": { "post": { "summary": "Accept an offramp quote", "description": "Accept and initiate a quote-based offramp.\n\nFor example, an offramp from crypto currency `usdc` to fiat currency `brl` is quote-based so its initial status will be `OPEN_QUOTE`. After reviewing the offramp conversion rate quote information, you can accept it to initialize the offramp.\n", "tags": [ "Offramp" ], "parameters": [ { "$ref": "#/components/parameters/OfframpRecordIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/CryptoToFiatAcceptQuoteResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/offramps/rates": { "get": { "summary": "Retrieve an offramp rate", "description": "Offramp rates are estimated rates for offramp conversions from different cryptocurrencies on different networks into all the different fiat currencies.\n", "tags": [ "Offramp" ], "parameters": [ { "$ref": "#/components/parameters/FromCryptoCurrencyParameter" }, { "$ref": "#/components/parameters/ToFiatCurrencyParameter" } ], "responses": { "200": { "$ref": "#/components/responses/CryptoToFiatConversionRateResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/transfers": { "post": { "summary": "Create a crypto transfer", "description": "Create a crypto transfer between two wallet addresses among users.\n", "tags": [ "Crypto Transfer" ], "requestBody": { "$ref": "#/components/requestBodies/CreateCryptoTransferBody" }, "responses": { "200": { "$ref": "#/components/responses/CryptoToCryptoTransferResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all crypto transfers", "description": "Returns a list of crypto transfers associated with a user under your organization. The crypto transfers are returned sorted by creation date, with the most recent crypto transfers appearing first.\n", "tags": [ "Crypto Transfer" ], "parameters": [ { "$ref": "#/components/parameters/UserIdOptionalParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/CryptoToCryptoAllRecordsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/transfers/{transferId}": { "get": { "summary": "Retrieve a crypto transfer", "tags": [ "Crypto Transfer" ], "parameters": [ { "$ref": "#/components/parameters/CryptoTransferRecordIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/CryptoToCryptoRecordResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/bridges": { "post": { "summary": "Create a bridging request", "description": "Create a bridging request to bridge crypto assets across chains.", "tags": [ "Cross-Chain Bridge" ], "requestBody": { "$ref": "#/components/requestBodies/CreateBridgingRequestBody" }, "responses": { "200": { "$ref": "#/components/responses/BridgeAssetTransferResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all bridging requests", "description": "Returns a list of bridging requests associated with a user under your organization.\n", "tags": [ "Cross-Chain Bridge" ], "parameters": [ { "$ref": "#/components/parameters/UserIdOptionalParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/BridgeAssetAllRecordsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/bridges/{transferId}/accept": { "post": { "summary": "Accept a bridging request", "description": "Accept a bridging request to initialize the bridging of crypto assets across chains.\n", "tags": [ "Cross-Chain Bridge" ], "parameters": [ { "$ref": "#/components/parameters/BridgingRequestIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/BridgeAssetTransferResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/bridges/{transferId}": { "get": { "summary": "Retrieve a bridging request", "tags": [ "Cross-Chain Bridge" ], "parameters": [ { "$ref": "#/components/parameters/BridgingRequestIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/BridgeAssetRecordResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/transfers/batches": { "post": { "summary": "Create a batch crypto transfer", "description": "Create a batch crypto transfer from a single wallet address to multiple wallet addresses among users.\n", "tags": [ "Crypto Transfer" ], "requestBody": { "$ref": "#/components/requestBodies/CreateBatchCryptoTransferBody" }, "responses": { "200": { "$ref": "#/components/responses/BatchCryptoTransferResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all batch crypto transfers", "description": "Returns a list of batch crypto transfers associated with a user under your organization. The batch crypto transfers are returned sorted by creation date, with the most recent batch crypto transfers appearing first.\n", "tags": [ "Crypto Transfer" ], "parameters": [ { "$ref": "#/components/parameters/UserIdOptionalParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/BatchCryptoTransferAllRecordsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/transfers/batches/{transferId}": { "get": { "summary": "Retrieve a batch crypto transfer", "tags": [ "Crypto Transfer" ], "parameters": [ { "$ref": "#/components/parameters/BatchCryptoTransferRecordIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/BatchCryptoTransferResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/swaps": { "post": { "summary": "Create a swap", "description": "Create a swap request to exchange one cryptocurrency for another within the same chain.\n", "tags": [ "Token Swap" ], "requestBody": { "$ref": "#/components/requestBodies/CreateWalletSwapBody" }, "responses": { "200": { "$ref": "#/components/responses/WalletSwapResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all swaps", "description": "Returns a list of swaps associated with a user under your organization. The swaps are returned sorted by creation date, with the most recent swaps appearing first.\n", "tags": [ "Token Swap" ], "parameters": [ { "$ref": "#/components/parameters/UserIdOptionalParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/WalletSwapAllRecordsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/swaps/{swapId}": { "get": { "summary": "Retrieve a swap", "description": "Retrieve details of a specific swap by its ID.\n", "tags": [ "Token Swap" ], "parameters": [ { "$ref": "#/components/parameters/SwapTransferIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/WalletSwapResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/wallets/swaps/{swapId}/accept": { "post": { "summary": "Accept a swap", "description": "Accept a swap request to execute the cryptocurrency exchange.\n", "tags": [ "Token Swap" ], "parameters": [ { "$ref": "#/components/parameters/SwapTransferIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/WalletSwapResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/onramps": { "post": { "summary": "Create an onramp", "description": "\nAn onramp facilitates the conversion of fiat to crypto. Once the fiat payment is received, HIFI will deliver the converted crypto to the receiving user’s wallet.\n\nThere are two types of onramp:\n\n* **Quote-based onramp**: This type of onramp first returns the conversion rate quote based on the best market rate, which you can accept through the [Accept an onramp quote](https://docs.hifibridge.com/api-reference/onramp/accept-an-onramp-quote) endpoint to initiate the onramp. \n Additionally, you can also refresh the onramp quote using the [Refresh an onramp quote](https://docs.hifibridge.com/api-reference/onramp/refresh-an-onramp-quote) endpoint to refresh the conversion rate associated with the onramp. To learn more about quote-based onramps, click [here](https://docs.hifibridge.com/guides/transfers/onramps/usd-usdc).\n\n* **Non-quote-based onramp**: This type of onramp will be initiated immediately upon creating an onramp.\n", "tags": [ "Onramp" ], "requestBody": { "$ref": "#/components/requestBodies/CreateOnrampBody" }, "responses": { "200": { "$ref": "#/components/responses/FiatToCryptoTransferResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all onramps", "description": "Returns a list of onramps associated with a user under your organization. The onramps are returned sorted by creation date, with the most recent onramps appearing first.\n", "tags": [ "Onramp" ], "parameters": [ { "$ref": "#/components/parameters/UserIdOptionalParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/FiatToCryptoAllRecordsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/onramps/{transferId}": { "get": { "summary": "Retrieve an onramp", "description": "Retrieves an onramp.", "tags": [ "Onramp" ], "parameters": [ { "$ref": "#/components/parameters/OnrampRecordIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/FiatToCryptoRecordResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/onramps/{transferId}/quote/accept": { "post": { "summary": "Accept an onramp quote", "description": "Accept a quote-based onramp.\n\nFor example, an onramp from fiat currency `brl` to crypto currency `usdc` is quote-based so its initial status will be `OPEN_QUOTE`. After reviewing the onramp conversion rate quote information, you can accept it to initialize the onramp.\n", "tags": [ "Onramp" ], "parameters": [ { "$ref": "#/components/parameters/OnrampRecordIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/FiatToCryptoAcceptQuoteResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/onramps/{transferId}/quote/refresh": { "post": { "summary": "Refresh an onramp quote", "description": "Refresh the conversion rate quote that is associated with a quote-based onramp. You can only refresh an onramp quote with the status `OPEN_QUOTE`.\n", "tags": [ "Onramp" ], "parameters": [ { "$ref": "#/components/parameters/OnrampRecordIDPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/FiatToCryptoRefreshQuoteResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/onramps/rates": { "get": { "summary": "Retrieve an onramp rate", "description": "Onramp rates are estimated rates for onramp conversions from different fiat currencies into different cryptocurrencies.\n", "tags": [ "Onramp" ], "parameters": [ { "$ref": "#/components/parameters/FromFiatCurrencyParameter" }, { "$ref": "#/components/parameters/ToCryptoCurrencyParameter" } ], "responses": { "200": { "$ref": "#/components/responses/FiatToCryptoConversionRateResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/reporting/templates": { "get": { "summary": "Get Available Metric Templates", "description": "Retrieves a list of all available metric templates (e.g., GROSS_VOLUME, TRANSACTION_COUNT). Templates define the logic, supported parameters, and breakdown options available for building reports.", "tags": [ "Reporting" ], "responses": { "200": { "$ref": "#/components/responses/TemplateListResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/reporting/templates/{name}": { "get": { "summary": "Get Template Details", "description": "Returns the specific definition for a template, including its description, the list of fields you can pass as parameters, and the dimensions available for breakdowns.", "tags": [ "Reporting" ], "responses": { "200": { "$ref": "#/components/responses/TemplateResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } }, "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string" }, "description": "The name of the metric template (e.g., GROSS_VOLUME, TRANSACTION_COUNT, NEW_USERS)" } ] } }, "/v2/reporting/params/{name}/options": { "get": { "summary": "Get Parameter Options", "description": "Fetches valid options for specific parameters (e.g., transactionTypes, transactionStatuses) to help validate input or populate UI dropdowns. Supports pagination via query parameters.", "tags": [ "Reporting" ], "responses": { "200": { "$ref": "#/components/responses/ParamOptionsResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } }, "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string" }, "description": "The name of the parameter (e.g., transactionTypes, transactionStatuses, userIds)" }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1 }, "description": "Page number for pagination (defaults to 1)" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 1000 }, "description": "Number of items per page (defaults to 100, max 1000)" } ] } }, "/v2/reporting/metrics": { "post": { "summary": "Create Saved Metric", "description": "Creates and saves a new metric configuration to the database. This does not execute the report, but stores the parameters for future use.", "tags": [ "Reporting" ], "responses": { "201": { "$ref": "#/components/responses/CreateMetricResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } }, "requestBody": { "$ref": "#/components/requestBodies/CreateMetricBody" } }, "get": { "summary": "List Saved Metrics", "description": "Retrieves all saved metric configurations associated with the authenticated profile.", "tags": [ "Reporting" ], "responses": { "200": { "$ref": "#/components/responses/MetricListResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/reporting/metrics/{id}": { "get": { "summary": "Get Metric Details", "description": "Retrieves the configuration details of a specific saved metric by its UUID.", "tags": [ "Reporting" ], "responses": { "200": { "$ref": "#/components/responses/MetricResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } }, "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The UUID of the saved metric" } ] }, "post": { "summary": "Update Saved Metric", "description": "Updates the name, description, or parameters of an existing metric configuration. Supports partial updates.", "tags": [ "Reporting" ], "responses": { "200": { "$ref": "#/components/responses/UpdateMetricResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } }, "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The UUID of the saved metric to update" } ], "requestBody": { "$ref": "#/components/requestBodies/UpdateMetricBody" } }, "delete": { "summary": "Delete Saved Metric", "description": "Permanently removes a saved metric configuration from the profile.", "tags": [ "Reporting" ], "responses": { "200": { "$ref": "#/components/responses/DeleteMetricResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } }, "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The UUID of the saved metric to delete" } ] } }, "/v2/reporting/metrics/preview": { "post": { "summary": "Preview Metric Results", "description": "Executes a metric calculation on the fly without saving it to the database. Useful for testing parameters or ad-hoc analysis.", "tags": [ "Reporting" ], "responses": { "200": { "$ref": "#/components/responses/MetricCalculationResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } }, "requestBody": { "$ref": "#/components/requestBodies/PreviewMetricBody" } } }, "/v2/reporting/metrics/{id}/results": { "get": { "summary": "Execute Saved Metric", "description": "Runs the calculation for an existing saved metric and returns the dataset.", "tags": [ "Reporting" ], "responses": { "200": { "$ref": "#/components/responses/MetricCalculationResponse" }, "400": { "$ref": "#/components/responses/BadRequestResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } }, "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The UUID of the saved metric to execute" } ] } }, "/v2/transfer-approvals": { "get": { "tags": [ "Transfer Approvals" ], "summary": "List all pending transfer approvals", "description": "Retrieve all pending transfer approvals that require admin action", "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 }, "description": "Number of approvals to return" }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "default": 0 }, "description": "Number of approvals to skip" } ], "responses": { "200": { "description": "Transfer approvals retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTransferApprovalsResponse" } } } }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/transfer-approvals/{approvalId}/approve": { "post": { "tags": [ "Transfer Approvals" ], "summary": "Approve a transfer", "description": "Approve a pending transfer. If enough approvals are received, the transfer will be queued for execution.", "parameters": [ { "name": "approvalId", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "ID of the transfer approval" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApproveTransferRequest" } } } }, "responses": { "200": { "description": "Transfer approval recorded successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApproveTransferResponse" } } } }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/transfer-approvals/{approvalId}/reject": { "post": { "tags": [ "Transfer Approvals" ], "summary": "Reject a transfer", "description": "Reject a pending transfer. This will cancel the transfer and return funds to the sender.", "parameters": [ { "name": "approvalId", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "ID of the transfer approval" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RejectTransferRequest" } } } }, "responses": { "200": { "description": "Transfer rejected successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RejectTransferResponse" } } } }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/transfer-approvals/{approvalId}": { "get": { "tags": [ "Transfer Approvals" ], "summary": "Get a transfer approval", "description": "Retrieve detailed information about a specific transfer approval", "parameters": [ { "name": "approvalId", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "ID of the transfer approval" } ], "responses": { "200": { "description": "Transfer approval details retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTransferApprovalResponse" } } } }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/tos-link": { "post": { "summary": "Generate a terms of service link", "description": "The Terms of Service page must be displayed to the end user. This page can be whitelabeled upon request.", "tags": [ "User" ], "requestBody": { "$ref": "#/components/requestBodies/ToSLinkBody" }, "responses": { "200": { "$ref": "#/components/responses/ToSLinkObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/tos-link/{signedAgreementId}": { "get": { "summary": "Retrieve a terms of service link", "description": "Retrieve the status of a terms of service link", "tags": [ "User" ], "parameters": [ { "$ref": "#/components/parameters/SignedAgreementIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/ToSLinkRecordStatusResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users": { "post": { "summary": "Create a user", "description": "Create a new Hifi user (Individual/Business)\n\nHIFI does not provide services to users or businesses from sanctioned and high-risk regions or unsupported US states. See [here](https://docs.hifibridge.com/docs/compliance/regions) for supported regions.\n", "tags": [ "User" ], "requestBody": { "$ref": "#/components/requestBodies/UserV2CreateBody" }, "responses": { "200": { "$ref": "#/components/responses/UserV2ObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "get": { "summary": "List all users", "description": "Get all existing Hifi users", "tags": [ "User" ], "parameters": [ { "$ref": "#/components/parameters/UserTypeV2Parameter" }, { "$ref": "#/components/parameters/UserFirstNameParameter" }, { "$ref": "#/components/parameters/UserLastNameParameter" }, { "$ref": "#/components/parameters/UserBusinessNameParameter" }, { "$ref": "#/components/parameters/UserEmailParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" } ], "responses": { "200": { "$ref": "#/components/responses/AllUserV2ObjectsResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}": { "get": { "summary": "Retrieve a user", "description": "Get an existing Hifi user", "tags": [ "User" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/UserV2ObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } }, "post": { "summary": "Update a user", "description": "Update an existing Hifi user.\n\nHIFI does not provide services to users or businesses from sanctioned and high-risk regions or unsupported US states. See [here](https://docs.hifibridge.com/docs/compliance/regions) for supported regions.\n", "tags": [ "User" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/UserV2UpdateBody" }, "responses": { "200": { "$ref": "#/components/responses/UserV2ObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/wallets/balance": { "get": { "summary": "Retrieve wallet balance", "description": "Get the latest balance of a user's wallet, including details like the blockchain network and currency.", "tags": [ "Wallet" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/ChainParameter" }, { "$ref": "#/components/parameters/CryptoCurrencyParameter" } ], "responses": { "200": { "$ref": "#/components/responses/WalletBalanceResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/wallets/add": { "post": { "summary": "Add wallets to a user", "description": "Add wallets to a user", "tags": [ "Wallet" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/UserV2AddWalletsBody" }, "responses": { "200": { "$ref": "#/components/responses/UserV2ObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/wallets/external": { "get": { "summary": "Get external wallets for a user", "description": "Get external wallets for a user", "tags": [ "Wallet" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/ExternalWalletsObjectResponse" } } }, "post": { "summary": "Add external wallets to a user", "description": "Add external wallets to a user", "tags": [ "Wallet" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" } ], "requestBody": { "$ref": "#/components/requestBodies/AddExternalWalletsBody" }, "responses": { "200": { "$ref": "#/components/responses/ExternalWalletObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/wallets/external/{externalWalletId}": { "get": { "summary": "Get an external wallet", "description": "Get an external wallet", "tags": [ "Wallet" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/ExternalWalletIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/ExternalWalletObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/wallets/deposits": { "get": { "summary": "Get inbound deposits", "description": "Get inbound deposits for a user's wallet", "tags": [ "Wallet" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/ChainParameter" }, { "$ref": "#/components/parameters/CryptoCurrencyParameter" }, { "$ref": "#/components/parameters/WalletDepositStatusParameter" }, { "$ref": "#/components/parameters/CreatedAfterParameter" }, { "$ref": "#/components/parameters/CreatedBeforeParameter" }, { "$ref": "#/components/parameters/LimitParameter" }, { "$ref": "#/components/parameters/MinAmountParameter" } ], "responses": { "200": { "$ref": "#/components/responses/WalletDepositsObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } }, "/v2/users/{userId}/wallets/deposits/{depositId}": { "get": { "summary": "Get an inbound deposit", "description": "Get an inbound deposit for a user's wallet", "tags": [ "Wallet" ], "parameters": [ { "$ref": "#/components/parameters/UserIdPathParameter" }, { "$ref": "#/components/parameters/DepositIdPathParameter" } ], "responses": { "200": { "$ref": "#/components/responses/WalletDepositObjectResponse" }, "401": { "$ref": "#/components/responses/UnauthorizedResponse" }, "500": { "$ref": "#/components/responses/InternalServerErrorResponse" } } } } } }