(accounts())
- create - You can create business or individual accounts for your users (i.e., customers, merchants) by passing the required information to Moov. Requirements differ per account type and requested capabilities.
If you're requesting the wallet
, send-funds
, collect-funds
, or card-issuing
capabilities, you'll need to:
- Send Moov the user platform terms of service agreement acceptance.
This can be done upon account creation, or by patching the account using the
termsOfService
field. If you're creating a business account with the business typellc
,partnership
, orprivateCorporation
, you'll need to: - Provide business representatives after creating the account.
- Patch the account to indicate that business representative ownership information is complete.
Visit our documentation to read more about creating accounts and verification requirements.
Note that the mode
field (for production or sandbox) is only required when creating a facilitator account. All non-facilitator account requests will ignore the mode field and be set to the calling facilitator's mode.
To access this endpoint using an access token you'll need
to specify the /accounts.write
scope.
- list - List or search accounts to which the caller is connected.
All supported query parameters are optional. If none are provided the response will include all connected accounts.
Pagination is supported via the skip
and count
query parameters. Searching by name and email will overlap and
return results based on relevance.
To access this endpoint using an access token you'll need
to specify the /accounts.read
scope.
- get - Retrieves details for the account with the specified ID.
To access this endpoint using an access token you'll need
to specify the /accounts/{accountID}/profile.read
scope.
-
update - When can profile data be updated:
- For unverified accounts, all profile data can be edited.
- During the verification process, missing or incomplete profile data can be edited.
- Verified accounts can only add missing profile data.
When can't profile data be updated:
- Verified accounts cannot change any existing profile data.
If you need to update information in a locked state, please contact Moov support.
To access this endpoint using an access token you'll need
to specify the /accounts/{accountID}/profile.write
scope.
- disconnect - This will sever the connection between you and the account specified and it will no longer be listed as active in the list of accounts. This also means you'll only have read-only access to the account going forward for reporting purposes.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/profile.disconnect
scope.
- getCountries - Retrieve the specified countries of operation for an account.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/profile.read
scope.
- assignCountries - Assign the countries of operation for an account.
This endpoint will always overwrite the previously assigned values.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/profile.write
scope.
- getMerchantProcessingAgreement - Retrieve a merchant account's processing agreement.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/profile.read
scope.
- getTermsOfServiceToken - Generates a non-expiring token that can then be used to accept Moov's terms of service.
This token can only be generated via API. Any Moov account requesting the collect funds, send funds, wallet, or card issuing capabilities must accept Moov's terms of service, then have the generated terms of service token patched to the account. Read more in our documentation.
You can create business or individual accounts for your users (i.e., customers, merchants) by passing the required information to Moov. Requirements differ per account type and requested capabilities.
If you're requesting the wallet
, send-funds
, collect-funds
, or card-issuing
capabilities, you'll need to:
- Send Moov the user platform terms of service agreement acceptance.
This can be done upon account creation, or by patching the account using the
termsOfService
field. If you're creating a business account with the business typellc
,partnership
, orprivateCorporation
, you'll need to: - Provide business representatives after creating the account.
- Patch the account to indicate that business representative ownership information is complete.
Visit our documentation to read more about creating accounts and verification requirements.
Note that the mode
field (for production or sandbox) is only required when creating a facilitator account. All non-facilitator account requests will ignore the mode field and be set to the calling facilitator's mode.
To access this endpoint using an access token you'll need
to specify the /accounts.write
scope.
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.*;
import io.moov.sdk.models.errors.CreateAccountResponseBody;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.operations.CreateAccountResponse;
import java.lang.Exception;
import java.util.Map;
public class Application {
public static void main(String[] args) throws GenericError, CreateAccountResponseBody, Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
CreateAccountResponse res = sdk.accounts().create()
.createAccount(CreateAccount.builder()
.accountType(AccountType.BUSINESS)
.profile(CreateProfile.builder()
.individual(CreateIndividualProfile.builder()
.name(IndividualName.builder()
.firstName("Jordan")
.lastName("Lee")
.middleName("Reese")
.suffix("Jr")
.build())
.phone(PhoneNumber.builder()
.number("8185551212")
.countryCode("1")
.build())
.email("jordan.lee@classbooker.dev")
.address(Address.builder()
.addressLine1("123 Main Street")
.city("Boulder")
.stateOrProvince("CO")
.postalCode("80301")
.country("US")
.addressLine2("Apt 302")
.build())
.birthDate(BirthDate.builder()
.day(9L)
.month(11L)
.year(1989L)
.build())
.build())
.business(CreateBusinessProfile.builder()
.legalBusinessName("Classbooker, LLC")
.businessType(BusinessType.LLC)
.address(Address.builder()
.addressLine1("123 Main Street")
.city("Boulder")
.stateOrProvince("CO")
.postalCode("80301")
.country("US")
.addressLine2("Apt 302")
.build())
.phone(PhoneNumber.builder()
.number("8185551212")
.countryCode("1")
.build())
.email("jordan.lee@classbooker.dev")
.description("Local fitness gym paying out instructors")
.taxID(TaxID.builder()
.ein(Ein.builder()
.number("12-3456789")
.build())
.build())
.industryCodes(IndustryCodes.builder()
.naics("713940")
.sic("7991")
.mcc("7997")
.build())
.build())
.build())
.metadata(Map.ofEntries(
Map.entry("optional", "metadata")))
.termsOfService(CreateAccountTermsOfService.of(TermsOfServiceToken.builder()
.token("kgT1uxoMAk7QKuyJcmQE8nqW_HjpyuXBabiXPi6T83fUQoxsyWYPcYzuHQTqrt7YRp4gCwyDQvb6U5REM9Pgl2EloCe35t-eiMAbUWGo3Kerxme6aqNcKrP_6-v0MTXViOEJ96IBxPFTvMV7EROI2dq3u4e-x4BbGSCedAX-ViAQND6hcreCDXwrO6sHuzh5Xi2IzSqZHxaovnWEboaxuZKRJkA3dsFID6fzitMpm2qrOh4")
.build()))
.customerSupport(CustomerSupport.builder()
.phone(PhoneNumber.builder()
.number("8185551212")
.countryCode("1")
.build())
.email("jordan.lee@classbooker.dev")
.address(Address.builder()
.addressLine1("123 Main Street")
.city("Boulder")
.stateOrProvince("CO")
.postalCode("80301")
.country("US")
.addressLine2("Apt 302")
.build())
.build())
.settings(Settings.builder()
.cardPayment(CardPaymentSettings.builder()
.statementDescriptor("Whole Body Fitness")
.build())
.achPayment(ACHPaymentSettings.builder()
.companyName("WholeBodyFitness")
.build())
.build())
.mode(Mode.PRODUCTION)
.build())
.call();
if (res.account().isPresent()) {
// handle response
}
}
}
Parameter | Type | Required | Description | Example |
---|---|---|---|---|
xMoovVersion |
Optional<String> | ➖ | Specify an API version. API versioning follows the format vYYYY.QQ.BB , where - YYYY is the year- QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)- BB is the build number, starting at .01 , for subsequent builds in the same quarter. - For example, v2024.01.00 is the initial release of the first quarter of 2024.The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release. |
|
createAccount |
CreateAccount | ✔️ | N/A | { "accountType": "business", "profile": { "business": { "legalBusinessName": "Whole Body Fitness LLC" } } } |
Error Type | Status Code | Content Type |
---|---|---|
models/errors/GenericError | 400, 409 | application/json |
models/errors/CreateAccountResponseBody | 422 | application/json |
models/errors/APIException | 4XX, 5XX | */* |
List or search accounts to which the caller is connected.
All supported query parameters are optional. If none are provided the response will include all connected accounts.
Pagination is supported via the skip
and count
query parameters. Searching by name and email will overlap and
return results based on relevance.
To access this endpoint using an access token you'll need
to specify the /accounts.read
scope.
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.AccountType;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.ListAccountsRequest;
import io.moov.sdk.models.operations.ListAccountsResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
ListAccountsRequest req = ListAccountsRequest.builder()
.type(AccountType.BUSINESS)
.skip(60L)
.count(20L)
.build();
ListAccountsResponse res = sdk.accounts().list()
.request(req)
.call();
if (res.accounts().isPresent()) {
// handle response
}
}
}
Parameter | Type | Required | Description |
---|---|---|---|
request |
ListAccountsRequest | ✔️ | The request object to use for the request. |
Error Type | Status Code | Content Type |
---|---|---|
models/errors/APIException | 4XX, 5XX | */* |
Retrieves details for the account with the specified ID.
To access this endpoint using an access token you'll need
to specify the /accounts/{accountID}/profile.read
scope.
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.GetAccountResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
GetAccountResponse res = sdk.accounts().get()
.accountID("b888f774-3e7c-4135-a18c-6b985523c4bc")
.call();
if (res.account().isPresent()) {
// handle response
}
}
}
Parameter | Type | Required | Description |
---|---|---|---|
xMoovVersion |
Optional<String> | ➖ | Specify an API version. API versioning follows the format vYYYY.QQ.BB , where - YYYY is the year- QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)- BB is the build number, starting at .01 , for subsequent builds in the same quarter. - For example, v2024.01.00 is the initial release of the first quarter of 2024.The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release. |
accountID |
String | ✔️ | N/A |
Error Type | Status Code | Content Type |
---|---|---|
models/errors/APIException | 4XX, 5XX | */* |
When can profile data be updated:
- For unverified accounts, all profile data can be edited.
- During the verification process, missing or incomplete profile data can be edited.
- Verified accounts can only add missing profile data.
When can't profile data be updated:
- Verified accounts cannot change any existing profile data.
If you need to update information in a locked state, please contact Moov support.
To access this endpoint using an access token you'll need
to specify the /accounts/{accountID}/profile.write
scope.
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.*;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.errors.UpdateAccountResponseBody;
import io.moov.sdk.models.operations.UpdateAccountResponse;
import java.lang.Exception;
import java.util.Map;
public class Application {
public static void main(String[] args) throws GenericError, UpdateAccountResponseBody, Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
UpdateAccountResponse res = sdk.accounts().update()
.accountID("95fa7f0e-7432-4ce4-a7cb-60cc78135dde")
.patchAccount(PatchAccount.builder()
.profile(PatchProfile.builder()
.individual(PatchIndividual.builder()
.name(IndividualNameUpdate.builder()
.firstName("Jordan")
.middleName("Reese")
.lastName("Lee")
.suffix("Jr")
.build())
.phone(PhoneNumber.builder()
.number("8185551212")
.countryCode("1")
.build())
.email("jordan.lee@classbooker.dev")
.address(AddressUpdate.builder()
.addressLine1("123 Main Street")
.addressLine2("Apt 302")
.city("Boulder")
.stateOrProvince("CO")
.postalCode("80301")
.country("US")
.build())
.birthDate(BirthDateUpdate.builder()
.day(9L)
.month(11L)
.year(1989L)
.build())
.build())
.business(PatchBusiness.builder()
.businessType(BusinessType.LLC)
.address(AddressUpdate.builder()
.addressLine1("123 Main Street")
.addressLine2("Apt 302")
.city("Boulder")
.stateOrProvince("CO")
.postalCode("80301")
.country("US")
.build())
.phone(PhoneNumber.builder()
.number("8185551212")
.countryCode("1")
.build())
.email("jordan.lee@classbooker.dev")
.taxID(TaxIDUpdate.builder()
.ein(TaxIDUpdateEin.builder()
.number("12-3456789")
.build())
.build())
.industryCodes(IndustryCodes.builder()
.naics("713940")
.sic("7991")
.mcc("7997")
.build())
.build())
.build())
.metadata(Map.ofEntries(
Map.entry("optional", "metadata")))
.termsOfService(PatchAccountTermsOfService.of(ManualTermsOfServiceUpdate.builder()
.acceptedIP("172.217.2.46")
.acceptedUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36")
.build()))
.customerSupport(PatchAccountCustomerSupport.builder()
.phone(PhoneNumber.builder()
.number("8185551212")
.countryCode("1")
.build())
.email("jordan.lee@classbooker.dev")
.address(AddressUpdate.builder()
.addressLine1("123 Main Street")
.addressLine2("Apt 302")
.city("Boulder")
.stateOrProvince("CO")
.postalCode("80301")
.country("US")
.build())
.build())
.build())
.call();
if (res.account().isPresent()) {
// handle response
}
}
}
Parameter | Type | Required | Description |
---|---|---|---|
xMoovVersion |
Optional<String> | ➖ | Specify an API version. API versioning follows the format vYYYY.QQ.BB , where - YYYY is the year- QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)- BB is the build number, starting at .01 , for subsequent builds in the same quarter. - For example, v2024.01.00 is the initial release of the first quarter of 2024.The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release. |
accountID |
String | ✔️ | N/A |
patchAccount |
PatchAccount | ✔️ | N/A |
Error Type | Status Code | Content Type |
---|---|---|
models/errors/GenericError | 400, 409 | application/json |
models/errors/UpdateAccountResponseBody | 422 | application/json |
models/errors/APIException | 4XX, 5XX | */* |
This will sever the connection between you and the account specified and it will no longer be listed as active in the list of accounts. This also means you'll only have read-only access to the account going forward for reporting purposes.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/profile.disconnect
scope.
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.operations.DisconnectAccountResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws GenericError, Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
DisconnectAccountResponse res = sdk.accounts().disconnect()
.accountID("ac3cbe09-fcd4-4c5e-ada2-89eaaa9c149e")
.call();
// handle response
}
}
Parameter | Type | Required | Description |
---|---|---|---|
xMoovVersion |
Optional<String> | ➖ | Specify an API version. API versioning follows the format vYYYY.QQ.BB , where - YYYY is the year- QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)- BB is the build number, starting at .01 , for subsequent builds in the same quarter. - For example, v2024.01.00 is the initial release of the first quarter of 2024.The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release. |
accountID |
String | ✔️ | N/A |
Error Type | Status Code | Content Type |
---|---|---|
models/errors/GenericError | 400, 409 | application/json |
models/errors/APIException | 4XX, 5XX | */* |
Retrieve the specified countries of operation for an account.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/profile.read
scope.
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.GetAccountCountriesResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
GetAccountCountriesResponse res = sdk.accounts().getCountries()
.accountID("b49c57bf-7b36-4308-8206-c1f5ce8067ac")
.call();
if (res.accountCountries().isPresent()) {
// handle response
}
}
}
Parameter | Type | Required | Description |
---|---|---|---|
xMoovVersion |
Optional<String> | ➖ | Specify an API version. API versioning follows the format vYYYY.QQ.BB , where - YYYY is the year- QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)- BB is the build number, starting at .01 , for subsequent builds in the same quarter. - For example, v2024.01.00 is the initial release of the first quarter of 2024.The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release. |
accountID |
String | ✔️ | N/A |
Error Type | Status Code | Content Type |
---|---|---|
models/errors/APIException | 4XX, 5XX | */* |
Assign the countries of operation for an account.
This endpoint will always overwrite the previously assigned values.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/profile.write
scope.
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.AccountCountries;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.errors.AssignCountriesError;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.operations.AssignAccountCountriesResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws GenericError, AssignCountriesError, Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
AssignAccountCountriesResponse res = sdk.accounts().assignCountries()
.accountID("aa2dc19b-77dd-481f-a0a8-c76f2cfc1372")
.accountCountries(AccountCountries.builder()
.countries(List.of(
"United States"))
.build())
.call();
if (res.accountCountries().isPresent()) {
// handle response
}
}
}
Parameter | Type | Required | Description |
---|---|---|---|
xMoovVersion |
Optional<String> | ➖ | Specify an API version. API versioning follows the format vYYYY.QQ.BB , where - YYYY is the year- QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)- BB is the build number, starting at .01 , for subsequent builds in the same quarter. - For example, v2024.01.00 is the initial release of the first quarter of 2024.The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release. |
accountID |
String | ✔️ | N/A |
accountCountries |
AccountCountries | ✔️ | N/A |
AssignAccountCountriesResponse
Error Type | Status Code | Content Type |
---|---|---|
models/errors/GenericError | 400, 409 | application/json |
models/errors/AssignCountriesError | 422 | application/json |
models/errors/APIException | 4XX, 5XX | */* |
Retrieve a merchant account's processing agreement.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/profile.read
scope.
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.GetMerchantProcessingAgreementResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
GetMerchantProcessingAgreementResponse res = sdk.accounts().getMerchantProcessingAgreement()
.accountID("d2cfd0d3-6efb-4bc4-a193-53f35dd0d912")
.call();
if (res.responseStream().isPresent()) {
// handle response
}
}
}
Parameter | Type | Required | Description |
---|---|---|---|
xMoovVersion |
Optional<String> | ➖ | Specify an API version. API versioning follows the format vYYYY.QQ.BB , where - YYYY is the year- QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)- BB is the build number, starting at .01 , for subsequent builds in the same quarter. - For example, v2024.01.00 is the initial release of the first quarter of 2024.The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release. |
accountID |
String | ✔️ | N/A |
GetMerchantProcessingAgreementResponse
Error Type | Status Code | Content Type |
---|---|---|
models/errors/APIException | 4XX, 5XX | */* |
Generates a non-expiring token that can then be used to accept Moov's terms of service.
This token can only be generated via API. Any Moov account requesting the collect funds, send funds, wallet, or card issuing capabilities must accept Moov's terms of service, then have the generated terms of service token patched to the account. Read more in our documentation.
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.GetTermsOfServiceTokenResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
GetTermsOfServiceTokenResponse res = sdk.accounts().getTermsOfServiceToken()
.call();
if (res.termsOfServiceToken().isPresent()) {
// handle response
}
}
}
Parameter | Type | Required | Description |
---|---|---|---|
xMoovVersion |
Optional<String> | ➖ | Specify an API version. API versioning follows the format vYYYY.QQ.BB , where - YYYY is the year- QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)- BB is the build number, starting at .01 , for subsequent builds in the same quarter. - For example, v2024.01.00 is the initial release of the first quarter of 2024.The latest version represents the most recent development state. It may include breaking changes and should be treated as a beta release. |
origin |
Optional<String> | ➖ | Indicates the domain from which the request originated. Required if referer header is not present. |
referer |
Optional<String> | ➖ | Specifies the URL of the resource from which the request originated. Required if origin header is not present. |
GetTermsOfServiceTokenResponse
Error Type | Status Code | Content Type |
---|---|---|
models/errors/APIException | 4XX, 5XX | */* |