---
title: "Create Individual Sender"
method: POST
path: "/v3/senders/individual"
tags: ["Senders"]
---

# Create Individual Sender

`POST /v3/senders/individual`

## Request

- Base URL: `https://sandbox-api.transfi.com`
- URL: `https://sandbox-api.transfi.com/v3/senders/individual`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/transfi/apis/transfi-single-integrated-api/docs/v3/senders/individual/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates an individual sender and returns the `userId` you use for KYC and for every order they pay for. Call `POST /v3/senders/mandatory-fields` with `type: individual` first and build this body from the `inputs` it returns; the properties below are one corridor's fields, not a fixed list. A sender matching the details you sent returns `200` with the existing `userId` and `code: USER_ALREADY_EXISTS`.

## Headers

- `MID` string, required

## Request body

- object
  - `country` string: Two digit country code of the sender. Must match the `geo` you sent to `POST /v3/senders/mandatory-fields`.
  - `currencyType` 'fiat' | 'crypto': Currency type the sender will fund with. Must match the `currencyType` you sent to `POST /v3/senders/mandatory-fields`.
  - `firstName` string: Dynamic field — send it only when `inputs` from `POST /v3/senders/mandatory-fields` names it for your corridor.
  - `lastName` string: Dynamic field — send it only when `inputs` from `POST /v3/senders/mandatory-fields` names it for your corridor.
  - `email` string: Email address of the sender. When supplied it is verified and an email verification message may be sent, so send a syntactically valid address.
  - `phone` string: National phone number without the country calling code. Send it together with `phoneCode` when a `mutually_required` rule pairs them.
  - `phoneCode` string: International dialling code for `phone` — digits with an optional leading `+`, 1-4 characters including the `+`.
  - `dob` string: Date of birth, in the format the field specification's `validationMessage` states — `DD-MM-YYYY` for the corridor shown here.

## Response `200`

OK

- object
  - `status` string, required
  - `data` object, required
    - `userId` string, required: Identifier of the sender. Use it for KYC, orders and every later call.
    - `code` string: Present only when a sender matching the details you sent already existed. The only value is `USER_ALREADY_EXISTS`.
    - `message` string: Present alongside `code`, with the fixed text `User already exists`.
    - `contactVerificationData` object: Present only for a newly created sender, listing the channels a verification message was sent on. Mutually exclusive with `code` and `message`.
      - `email` object
        - `status` string
        - `message` string
      - `phone` object
        - `status` string
        - `message` string
  - `traceId` string

## Other responses

- `400`: Bad Request
- `409`: Conflict

## Changes

- **2026-11-03** `7b745621a79f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/transfi/apis/transfi-single-integrated-api/changes/v3/senders/individual/post.md)

---

[API](https://skmtc.dev/transfi/apis/transfi-single-integrated-api.md) - [All operations](https://skmtc.dev/transfi/apis/transfi-single-integrated-api/llms.txt) - [OpenAPI document](https://skmtc.dev/transfi/apis/transfi-single-integrated-api/revisions/7b745621a79f?raw)
