Create an account | Moov Documentation
Create an account
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.
The transfers capability is automatically requested for every account. If you request any capability beyond transfers (for example, send-funds.ach, collect-funds.card-payments), you'll need to:
- Send Moov the user's platform terms of service agreement acceptance. This can be done at account creation, or by patching the account using the
termsOfServicefield. - Fulfill the verification and underwriting requirements for each requested capability. A capability isn't enabled until its requirements pass — check the capability's status to see what's still outstanding.
If you're creating a business account, depending on the business type, you'll also 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 Partner account. All other account requests will ignore the mode field and be set to the calling Partner account's mode.
To access this endpoint using an access token you'll need to specify the /accounts.write scope.
POST
/accounts
Ask
curl -X POST "https://api.moov.io/accounts" \
-H "Authorization: Bearer {token}" \
-H "X-Moov-Version: v2026.04.00" \
-d '{
"accountType": "business",
"profile": {
"business": {
"businessType": "llc",
"legalBusinessName": "Whole Body Fitness LLC",
"website": "wbfllc.com"
}
}
}'
Ask
mc, _ := moov.NewClient()
mc.CreateAccount(ctx, moov.CreateAccount{
Type: moov.AccountType_Business,
Profile: moov.CreateProfile{
Business: &moov.CreateBusinessProfile{
Name: "Whole Body Fitness LLC",
Type: "llc",
Website: "wbfllc.com",
},
},
})
Ask
import { Moov } from "@moovio/sdk";
const moov = new Moov({
security: {
username: "",
password: "",
},
});
async function run() {
const result = await moov.accounts.create({
accountType: "business",
profile: {
business: {
legalBusinessName: "Whole Body Fitness LLC",
},
},
});
console.log(result);
}
run();
Ask
declare(strict_types=1);
require 'vendor/autoload.php';
use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;
$sdk = MoovPhp\Moov::builder()
->setSecurity(
new Components\Security(
username: '',
password: '',
)
)
->build();
$request = new Components\CreateAccount(
accountType: Components\CreateAccountType::Business,
profile: new Components\CreateProfile(
business: new Components\CreateBusinessProfile(
legalBusinessName: 'Whole Body Fitness LLC',
),
),
);
$response = $sdk->accounts->create(
request: $request
);
if ($response->account !== null) {
// handle response
}
Ask
package hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.*;
import io.moov.sdk.models.errors.CreateAccountError;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.operations.CreateAccountResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws GenericError, CreateAccountError, Exception {
Moov sdk = Moov.builder()
.security(Security.builder()
.username("")
.password("")
.build())
.build();
CreateAccount req = CreateAccount.builder()
.accountType(CreateAccountType.BUSINESS)
.profile(CreateProfile.builder()
.business(CreateBusinessProfile.builder()
.legalBusinessName("Whole Body Fitness LLC")
.build())
.build())
.build();
CreateAccountResponse res = sdk.accounts().create()
.request(req)
.call();
if (res.account().isPresent()) {
System.out.println(res.account().get());
}
}
}
Ask
from moovio_sdk import Moov
from moovio_sdk.models import components
from moovio_sdk.utils import parse_datetime
with Moov(
security=components.Security(
username="",
password="",
),
) as moov:
res = moov.accounts.create(account_type=components.CreateAccountType.BUSINESS, profile=components.CreateProfile(
business=components.CreateBusinessProfile(
legal_business_name="Whole Body Fitness LLC",
),
), metadata={
"optional": "metadata",
}, terms_of_service={
"manual": {
"accepted_date": parse_datetime("2026-07-27T08:57:17.388Z"),
"accepted_ip": "2001:db8::1",
"accepted_user_agent": "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",
"accepted_domain": "https://rundown-depot.org/",
},
}, customer_support={
"phone": {
"number": "8185551212",
"country_code": "1",
},
"email": "jordan.lee@classbooker.dev",
"address": {
"address_line1": "123 Main Street",
"address_line2": "Apt 302",
"city": "Boulder",
"state_or_province": "CO",
"postal_code": "80301",
"country": "US",
},
}, settings={
"card_payment": {
"statement_descriptor": "Whole Body Fitness",
},
"ach_payment": {
"company_name": "WholeBodyFitness",
},
}, capabilities=[
components.CapabilityID.COLLECT_FUNDS_CARD_PAYMENTS,
components.CapabilityID.SEND_FUNDS_ACH,
], mode=components.Mode.PRODUCTION)
# Handle response
print(res)
Ask
require 'moov_ruby'
Models = ::Moov::Models
s = ::Moov::Client.new(
security: Models::Components::Security.new(
username: '',
password: ''
)
)
req = Models::Components::CreateAccount.new(
account_type: Models::Components::CreateAccountType::BUSINESS,
profile: Models::Components::CreateProfile.new(
business: Models::Components::CreateBusinessProfile.new(
legal_business_name: 'Whole Body Fitness LLC'
)
)
)
res = s.accounts.create(request: req)
unless res.account.nil?
# handle response
end
Ask
using Moov.Sdk;
using Moov.Sdk.Models.Components;
var sdk = new MoovClient(security: new Security() {
Username = "",
Password = "",
});
CreateAccount req = new CreateAccount() {
AccountType = CreateAccountType.Business,
Profile = new CreateProfile() {
Business = new CreateBusinessProfile() {
LegalBusinessName = "Whole Body Fitness LLC",
},
},
};
var res = await sdk.Accounts.CreateAsync(req);
// handle response
The request completed successfully.
Ask Example
{
"accountID": "53ca67ea-6fd3-423f-9544-ce2404159d33",
"accountType": "business",
"createdOn": "2024-12-16T17:55:20.557151867Z",
"displayName": "Whole Body Fitness LLC",
"mode": "sandbox",
"profile": {
"business": {
"legalBusinessName": "Whole Body Fitness LLC",
"ownersProvided": false
}
},
"settings": {
"achPayment": {
"companyName": "Whole Body Fitne"
},
"cardPayment": {
"statementDescriptor": "Whole Body Fitness LLC"
}
},
"updatedOn": "2024-12-16T17:55:20.557151867Z",
"verification": {
"status": "unverified",
"verificationStatus": "unverified"
}
}
Response headers
A unique identifier used to trace requests.
The server could not understand the request due to invalid syntax.
Ask Example
{
"error": "string"
}
Response headers
A unique identifier used to trace requests.
The request contained missing or expired authentication.