Create a wallet beta

Create a new wallet for an account. You can specify optional attributes such as a display name and description to specify the intended use of the wallet. This will generate a new moov-wallet payment method.

Read our Moov wallets guide to learn more.

To access this endpoint using an access token you'll need to specify the /accounts/{accountID}/wallets.write scope.

POST
/accounts/{accountID}/wallets
cURL Go Python TypeScript Java Ruby (beta) PHP
1
2
3
4
5
curl -X POST "https://api.moov.io/accounts/{accountID}/wallets" \
  -H "Authorization: Bearer {token}" \
  -d '{
    "name": "My wallet"
  }'
1
2
3
4
5
6
7
8
mc, _ := moov.NewClient()

accountID := "{uuid}" // account ID of the wallet owner
create := moov.CreateWallet{
    Name: "My wallet",
}

mc.CreateWallet(ctx, accountID, create)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from moovio_sdk import Moov
from moovio_sdk.models import components


with Moov(
    x_moov_version="v2024.01.00",
    security=components.Security(
        username="",
        password="",
    ),
) as moov:

    res = moov.wallets.create(account_id="b4b3f37c-b73e-4271-b8ec-108a8593c9b9", name="My wallet", description="A general wallet used for my payments", metadata={
        "optional": "metadata",
    })

    # Handle response
    print(res)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  xMoovVersion: "v2024.01.00",
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.wallets.create({
    accountID: "b4b3f37c-b73e-4271-b8ec-108a8593c9b9",
    createWallet: {
      name: "My wallet",
      description: "A general wallet used for my payments",
      metadata: {
        "optional": "metadata",
      },
    },
  });

  console.log(result);
}

run();
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package hello.world;

import java.lang.Exception;
import java.util.Map;
import org.openapis.openapi.Moov;
import org.openapis.openapi.models.components.CreateWallet;
import org.openapis.openapi.models.components.Security;
import org.openapis.openapi.models.errors.CreateWalletValidationError;
import org.openapis.openapi.models.errors.GenericError;
import org.openapis.openapi.models.operations.CreateWalletResponse;

public class Application {

    public static void main(String[] args) throws GenericError, CreateWalletValidationError, Exception {

        Moov sdk = Moov.builder()
                .xMoovVersion("v2024.01.00")
                .security(Security.builder()
                    .username("")
                    .password("")
                    .build())
            .build();

        CreateWalletResponse res = sdk.wallets().create()
                .accountID("b4b3f37c-b73e-4271-b8ec-108a8593c9b9")
                .createWallet(CreateWallet.builder()
                    .name("My wallet")
                    .description("A general wallet used for my payments")
                    .metadata(Map.ofEntries(
                        Map.entry("optional", "metadata")))
                    .build())
                .call();

        if (res.wallet().isPresent()) {
            // handle response
        }
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
      x_moov_version: 'v2024.01.00',
    )

res = s.wallets.create(account_id: 'b4b3f37c-b73e-4271-b8ec-108a8593c9b9', create_wallet: Models::Components::CreateWallet.new(
  name: 'My wallet',
  description: 'A general wallet used for my payments',
  metadata: {
    "optional": 'metadata',
  },
))

unless res.wallet.nil?
  # handle response
end
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;

$sdk = MoovPhp\Moov::builder()
    ->setXMoovVersion('v2024.01.00')
    ->setSecurity(
        new Components\Security(
            username: '',
            password: '',
        )
    )
    ->build();

$createWallet = new Components\CreateWallet(
    name: 'My wallet',
    description: 'A general wallet used for my payments',
    metadata: [
        'optional' => 'metadata',
    ],
);

$response = $sdk->wallets->create(
    accountID: 'b4b3f37c-b73e-4271-b8ec-108a8593c9b9',
    createWallet: $createWallet

);

if ($response->wallet !== null) {
    // handle response
}
200 400 401 403 404 409 422 429 500 504
The request completed successfully.
application/json
A Moov wallet to store funds for transfers.
{
  "walletID": "0eb7d670-c252-422a-892d-002136c358e0",
  "availableBalance": {
    "currency": "USD",
    "value": 1204,
    "valueDecimal": "string"
  },
  "partnerAccountID": "c197cd40-7745-4413-8f3b-ec962d1b5225",
  "name": "string",
  "status": "active",
  "walletType": "default",
  "description": "string",
  "metadata": {
    "optional": "metadata"
  },
  "createdOn": "2019-08-24T14:15:22Z",
  "closedOn": "2019-08-24T14:15:22Z"
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The server could not understand the request due to invalid syntax.
application/json
{
  "error": "string"
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request contained missing or expired authentication.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The user is not authorized to make the request.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The requested resource was not found.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request conflicted with the current state of the target resource.
application/json
{
  "error": "string"
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request was well-formed, but the contents failed validation. Check the request for missing or invalid fields.
application/json
{
  "name": "string",
  "description": "string",
  "metadata": "string"
}

x-request-id

string <uuid> required
A unique identifier used to trace requests.
Request was refused due to rate limiting.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request failed due to an unexpected error.

x-request-id

string <uuid> required
A unique identifier used to trace requests.
The request failed because a downstream service failed to respond.

x-request-id

string <uuid> required
A unique identifier used to trace requests.

Headers

X-Moov-Version

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.

Default: v2024.01.00

Path parameters

accountID

string <uuid> required
The Moov account ID the wallet belongs to.

Body

application/json

name

string required
Name of the wallet.

description

string
Description of the wallet.

metadata

object
Free-form key-value pair list. Useful for storing information that is not captured elsewhere.

Response

application/json
A Moov wallet to store funds for transfers.

availableBalance

object required
Show child attributes

currency

string required Pattern
A 3-letter ISO 4217 currency code.

value

integer<int64> required

Quantity in the smallest unit of the specified currency.

In USD this is cents, for example, $12.04 is 1204 and $0.99 is 99.

valueDecimal

string required Pattern

createdOn

string<date-time> required

description

string required
Description of the wallet

name

string required
Name of the wallet

partnerAccountID

string<uuid> required

status

string<enum> required

Status of a wallet.

  • active: The wallet is available for use and has an enabled payment method.
  • closed: The wallet is no longer active and the corresponding payment method has been disabled.
Possible values: active, closed

walletID

string<uuid> required

walletType

string<enum> required

Type of a wallet.

  • default: The system-generated wallet automatically created when an account is granted the wallet capability.
  • general: An additional, user-defined wallet created via API or Dashboard.
Possible values: default, general

closedOn

string<date-time>

metadata

object
Free-form key-value pair list. Useful for storing information that is not captured elsewhere.