---
updatedAt: 2026-05-13T19:23:18.000Z
agentTools:
  projectIndex: https://docs.nofrixion.com/llms.txt
---

# Creates a new virtual account.



<b>Authorization</b>: End user or Merchant token is required.

# OpenAPI definition

```json
{
  "openapi": "3.0.1",
  "info": {
    "title": "NoFrixion MoneyMoov API",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api-sandbox.nofrixion.com",
      "description": "v1"
    }
  ],
  "paths": {
    "/api/v1/accounts/{accountID}/virtual": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Creates a new virtual account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "CreateVirtualAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The physical account id to create the virtual account for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The details of the virtual account to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.VirtualAccountCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              }
            }
          },
          "201": {
            "description": "The virtual account was successfully created and is ready to use."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "NoFrixion.MoneyMoov.Models.AccountIdentifier": {
        "required": [
          "currency"
        ],
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "Unknown",
              "SCAN",
              "IBAN",
              "DD",
              "BTC",
              "BIC"
            ],
            "type": "string",
            "description": "The type of the account identifier.",
            "readOnly": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The currency for the account."
          },
          "bic": {
            "type": "string",
            "nullable": true
          },
          "iban": {
            "type": "string",
            "nullable": true
          },
          "sortCode": {
            "type": "string",
            "nullable": true
          },
          "accountNumber": {
            "type": "string",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "description": "Summary of the account identifier's most important properties.",
            "nullable": true,
            "readOnly": true
          },
          "displaySummary": {
            "type": "string",
            "description": "Summary of the account identifier's most important properties.",
            "nullable": true,
            "readOnly": true
          },
          "displayScanSummary": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "displayBicSummary": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.ClientSessionTimeout": {
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "description": "The merchant ID for which the session timeout applies.",
            "format": "uuid"
          },
          "timeoutSeconds": {
            "type": "integer",
            "description": "The number of seconds a session for this user should last before expiring.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.LastTransaction": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.MerchantPermission": {
        "required": [
          "merchantID"
        ],
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "nullable": true
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "accountPermissions": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique id for the account.",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant that owns the account.",
            "format": "uuid"
          },
          "merchantName": {
            "type": "string",
            "description": "The name of the merchant that owns the account.",
            "nullable": true
          },
          "balance": {
            "type": "number",
            "description": "Balance of the account.",
            "format": "double"
          },
          "balanceMinorUnits": {
            "type": "integer",
            "description": "Balance of the account expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "submittedPayoutsBalance": {
            "type": "number",
            "description": "Total of the payouts that have been submitted for processing.",
            "format": "double"
          },
          "submittedPayoutsBalanceMinorUnits": {
            "type": "integer",
            "description": "The balance of the submitted payouts expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "inserted": {
            "type": "string",
            "description": "Timestamp when the account was created.",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "description": "Timestamp when the account was last updated.",
            "format": "date-time"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency of the account in ISO 4217 format"
          },
          "accountName": {
            "type": "string",
            "description": "Name for the account",
            "nullable": true
          },
          "identifier": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AccountIdentifier"
          },
          "displayName": {
            "type": "string",
            "description": "Gets a unique display name for the payment account. Useful for when payment accounts need to \r\nbe listed.",
            "nullable": true,
            "readOnly": true
          },
          "summary": {
            "type": "string",
            "description": "Gets a summary of the payments account's most important properties.",
            "nullable": true,
            "readOnly": true
          },
          "isDefault": {
            "type": "boolean",
            "description": "Is the default account"
          },
          "availableBalance": {
            "type": "number",
            "description": "The current available balance of the account. Calculated by subtracting any submitted payments from the current balance.",
            "format": "double",
            "readOnly": true
          },
          "availableBalanceMinorUnits": {
            "type": "integer",
            "description": "The available balance expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "accountSupplierName": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "The payment account supplier name. A payment account can be supplied by multiple payment processors."
          },
          "isConnectedAccount": {
            "type": "boolean",
            "description": "Indicates if the payment account is an externally connected account.\r\nExternally connected account can be used to view account balances and transactions."
          },
          "consentID": {
            "type": "string",
            "description": "The ID of the consent used to connect the external account.",
            "format": "uuid",
            "nullable": true
          },
          "externalAccountIcon": {
            "type": "string",
            "description": "The Icon for external accounts",
            "nullable": true
          },
          "bankName": {
            "type": "string",
            "description": "The bank name for external accounts",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "description": "The date that the external account will expire",
            "format": "date-time",
            "nullable": true
          },
          "isTrustAccount": {
            "type": "boolean",
            "description": "Indicates if the payment account is a trust account. The account name is displayed in the statement\r\ninstead of the merchant name for trust accounts."
          },
          "xeroBankFeedConnectionStatus": {
            "enum": [
              "None",
              "Pending",
              "Active",
              "Inactive",
              "Failed"
            ],
            "type": "string",
            "description": "States the status of the Xero bank feed connection, if applicable.",
            "nullable": true
          },
          "xeroBankFeedSyncStatus": {
            "enum": [
              "None",
              "InProgress",
              "Completed",
              "Failed"
            ],
            "type": "string"
          },
          "xeroBankFeedLastSyncedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "xeroBankFeedSyncLastFailedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "xeroBankFeedSyncLastFailureReason": {
            "type": "string",
            "nullable": true
          },
          "xeroUnsynchronisedTransactionsCount": {
            "type": "integer",
            "description": "Indicates the number of unsynchronised transactions with Xero",
            "format": "int32",
            "nullable": true
          },
          "lastTransaction": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.LastTransaction"
          },
          "createdBy": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          },
          "createdByDisplayName": {
            "type": "string",
            "description": "Either the name of the user, merchant token or api key that created the account",
            "nullable": true
          },
          "defaultPaymentRail": {
            "enum": [
              "Default",
              "SEPA_CT",
              "SEPA_INST",
              "TARGET2"
            ],
            "type": "string",
            "description": "Indicates the default payment rail for this account. Normally it will be left as the\r\ndefault value but in some special cases it may be set to indicate payouts from this account\r\nshould be attempted with a specific payment rail."
          },
          "rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.RuleMinimal"
            },
            "description": "The list of rules associated with this account.",
            "nullable": true
          },
          "isArchived": {
            "type": "boolean",
            "description": "Indicates whether the account is archived. Archived accounts are not displayed in the UI.\r\nIf an account receives a payment it will be automatically unarchived."
          },
          "supplierSepaInstantStatus": {
            "enum": [
              "None",
              "Pending",
              "InProgress",
              "Enabled",
              "Disabled",
              "Failed"
            ],
            "type": "string",
            "description": "Indicates the status of the SEPA Instant payment rail for this account.",
            "nullable": true
          },
          "physicalAccountID": {
            "type": "string",
            "description": "For virtual accounts this is the ID of the physical account that the virtual account is linked to.",
            "format": "uuid",
            "nullable": true
          },
          "isVirtual": {
            "type": "boolean",
            "description": "True if the account is a virtual account.",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Roles.UserRoleWithScope": {
        "required": [
          "assignedAt",
          "roleName",
          "scope"
        ],
        "type": "object",
        "properties": {
          "userID": {
            "type": "string",
            "description": "The ID of the user.",
            "format": "uuid"
          },
          "roleID": {
            "type": "string",
            "description": "The ID of the role the user has.",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant the role is in.",
            "format": "uuid"
          },
          "roleName": {
            "type": "string",
            "description": "The name of the role the user has.",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "description": "The number of accounts the user has access to in the merchant for the role.",
            "nullable": true
          },
          "assignedAt": {
            "type": "string",
            "description": "The date the role was assigned to the user on the merchant.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.RuleMinimal": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.User": {
        "required": [
          "emailAddress",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "minLength": 1,
            "type": "string"
          },
          "lastName": {
            "minLength": 1,
            "type": "string"
          },
          "emailAddress": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "twoFactorEnabled": {
            "type": "boolean"
          },
          "passkeyAdded": {
            "type": "boolean"
          },
          "permissions": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserPermissions"
          },
          "rolesWithScope": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Roles.UserRoleWithScope"
            },
            "nullable": true
          },
          "clientSessionTimeouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.ClientSessionTimeout"
            },
            "description": "The number of seconds a session for this user should last before expiring.\r\nThis is based on the user's role on the merchant.\r\nThis is used to set the session timeout in the client. If not set the client's default\r\nsession timeout will be used.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.UserPermissions": {
        "type": "object",
        "properties": {
          "merchantPermissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPermission"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.VirtualAccountCreate": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The name of the virtual account."
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "JWT Authorization header using the Bearer scheme.<br/>\r\n                      Enter your JWT access token in the text input below.<br/>\r\n                      Example: Bearer eyJhbGciOiJ...",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Bearer": []
    }
  ]
}
```