# Child Users Guide

This guide will explain what Child Users are, and why they could be a useful function in your shipping application.

A child **User** is essentially a dependent clone of a parent **User**. We've created child **User** functionality as a way for organizations to organize users with their own carrier credentials. Child **Users** can not log into the EasyPost website, and they can only be created in Production mode with your Production API Key.

Upon creation, the child User will only have the parent **User's** USPS account by default. Any other carrier accounts that need to be added to the child User must be built into your application's logic on your end.

Other than organizing activity and **CarrierAccounts** the central advantage of a child account is that billing flows through the parent's payment information. This prevents the parent **User** from having to input duplicate billing information.

Child **Users** can serve a few important purposes within your organization:

- You want to organize sets of users together, based on different parent **User** settings as templates.
- Your consumers want to use your shipping application, but also want to use their own negotiated rates.
- You want to exert greater control of your billing. All child **Users** roll their billing up to their parent **User**.

Of course, if you find another way to leverage child **Users**, feel free to build it. We love it when our customers use our API in creative ways.

The structure of a child **User** is identicial to its parent, which means that their representations contain many more properties than are actually used. Also, creating a child **User** requires almost none of the properties necessary for creating a top-level **User**.

Here is an example of a child user:

#### Creating a Child User

### Example: POST /users

#### cURL

```shell
curl -X POST https://api.easypost.com/v2/users \
  -u "EASYPOST_API_KEY": \
  -H 'Content-Type: application/json' \
  -d '{
    "user": {
      "name": "Child Account Name"
    }
  }'
```

#### Go

```go
package example

import (
	"fmt"

	"github.com/EasyPost/easypost-go/v5"
)

func create() {
	client := easypost.New("EASYPOST_API_KEY")

	userName := "Child Account Name"
	user, _ := client.CreateUser(
		&easypost.UserOptions{
			Name: &userName,
		},
	)

	fmt.Println(user)
}
```

#### Java

```java
package users;

import com.easypost.exception.EasyPostException;
import com.easypost.model.User;
import com.easypost.service.EasyPostClient;

import java.util.HashMap;

public class Create {
    public static void main(String[] args) throws EasyPostException {
        EasyPostClient client = new EasyPostClient("EASYPOST_API_KEY");

        HashMap<String, Object> params = new HashMap<String, Object>();
        params.put("name", "Child Account Name");

        User user = client.user.create(params);

        System.out.println(user);
    }
}
```

#### C#

```csharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using EasyPost;
using Newtonsoft.Json;

namespace EasyPostExamples
{
    public class Examples
    {
        public static async Task Main()
        {
            var client = new EasyPost.Client(new EasyPost.ClientConfiguration("EASYPOST_API_KEY"));

            EasyPost.Parameters.User.CreateChild parameters = new()
            {
                Name = "Child Account Name",
            };

            EasyPost.Models.API.User user = await client.User.Create(parameters);

            Console.WriteLine(JsonConvert.SerializeObject(user, Formatting.Indented));
        }
    }
}
```

#### Node.js

```javascript
const EasyPostClient = require('@easypost/api');

const client = new EasyPostClient('EASYPOST_API_KEY');

(async () => {
  const user = await client.User.create({
    name: 'Child Account Name',
  });

  console.log(user);
})();
```

#### PHP

```php
<?php

$client = new \EasyPost\EasyPostClient('EASYPOST_API_KEY');

$child = $client->user->create([
    'name' => 'Child Account Name'
]);

echo $child;
```

#### Python

```python
import easypost

client = easypost.EasyPostClient("EASYPOST_API_KEY")

user = client.user.create(name="Child Account Name")

print(user)
```

#### Ruby

```ruby
require 'easypost'

client = EasyPost::Client.new(api_key: 'EASYPOST_API_KEY')

user = client.user.create(
  name: 'Child Account Name',
)

puts user
```

[Content omitted: related links and resources. Review the rendered documentation for navigation links.]