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:

If you're creating a business account, depending on the business type, you'll also need to:

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.