> ## Documentation Index
> Fetch the complete documentation index at: https://docs.etherfuse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Payment Accounts

> The account details and holder information to send when you register a bank account or wallet.

When you [register a payment account](https://docs.etherfuse.com/v2/api-reference/payment-accounts/register-payment-account.md), you send two objects:

* **`accountDetails`** names the account: a `kind`, plus the fields that kind takes.
* **`registrationInfo`** holds information about the account holder. Bank account routes need it. Wallets don't.

The fields each one needs come from our configuration, not from a fixed schema, so they can change. Before you register, call [Get registration requirements](https://docs.etherfuse.com/v2/api-reference/payment-accounts/get-registration-requirements.md) with the account's `kind`, market and `accountDetails.kind`. It returns the exact fields the route needs, and the holder fields we don't already have a verified value for.

This page shows the kinds and fields we support today.

## Account details

Send exactly the fields your `kind` takes. A missing field, or one the kind doesn't take, returns `400` `validation-error` with a pointer for each field.

| `kind` | Account kind | Fields | Notes |
| - | - | - | - |
| `clabe` | `bank` | `clabe` | An 18-digit Mexican CLABE. We check its length and check digit. |
| `pixKey` | `bank` | `pixKey` | A Brazilian PIX key: an email, a phone number, a CPF, a CNPJ or a random key. 1 to 77 characters. |
| `address` | `wallet` | `address`, `chain` | A wallet address. We check it's valid on `chain`. |
| `signerPublicKey` | `embeddedWallet` | `signerPublicKey`, `chain` | A P-256 public key, hex-encoded SEC1, compressed or uncompressed. We create a wallet on `chain` that only the key's holder can move funds from. See [Embedded Wallets](https://docs.etherfuse.com/v2/guides/embedded-wallets.md). |

```json theme={null}
{ "kind": "clabe", "clabe": "012180000000000002" }
```

```json theme={null}
{ "kind": "address", "address": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF", "chain": "stellar" }
```

## Registration info

Every value is a string. Which fields a route needs depends on the route and on whether the organization is `personal` or `business`. Bank account routes need `accountHolderName` and `taxId`, plus the personal or business fields on routes that ask for them.

We fill a field from the organization's verified identity when we have it, so you only need to send the fields that Get registration requirements lists in `registrationInfo.missing`. You may send other fields from this table: we check their format and ignore the ones the route doesn't use. A field name that isn't in this table returns `400` `validation-error`.

| Field | Accounts | Format |
| - | - | - |
| `accountHolderName` | personal and business | Text |
| `taxId` | personal and business | Text. It must match the verified tax ID when we have one. |
| `curp` | personal | Text: a Mexican CURP |
| `firstName` | personal | Text |
| `paternalLastName` | personal | Text |
| `maternalLastName` | personal | Text |
| `dateOfBirth` | personal | `YYYY-MM-DD` |
| `countryOfBirth` | personal | Two-letter country code, from [List country codes](https://docs.etherfuse.com/v2/api-reference/lookup/list-country-codes.md) |
| `dateOfIncorporation` | business | `YYYY-MM-DD` |
| `countryOfIncorporation` | business | Two-letter country code |

A text value that contains `<`, `>`, `;`, `{`, `}`, a backtick, `|`, `\`, `$(`, `../` or a control character returns `400` `invalid-request`.

```json theme={null}
{
  "accountHolderName": "Ejemplo Comercial SA de CV",
  "taxId": "XAXX010101000"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.