# Me to Me Payouts

Me to Me payouts allow you to move funds between a customer's own payment instruments — pulling from a card or bank account and pushing to a bank account, debit card or credit card.

The flow consists of two `Transfer` operations:

1. A **pull Transfer** that pulls funds from the customer's source card (`PULL_FROM_CARD`) or bank account (`PULL_FROM_ACH`, or `PULL_FROM_SAME_DAY_ACH`).
2. A **payout transfer** that pushes funds to the customer's destination card (`PUSH_TO_CARD`) or bank account (`PUSH_TO_ACH`, `PUSH_TO_SAME_DAY_ACH`), linked to the completed pull transfer via `pull_transfer_id`.

Both transfers must use `funds_flow_type: ME_TO_ME` and be associated with the same `Identity`. The pull and payout transfer must be for the same amount.

If you have any questions about Me to Me payouts, reach out to your Finix Point of Contact or [Finix Support](mailto:support@finix.com).

---

## Step 1: Create an Identity

The first step is creating an [Identity `with Sender & Recipient roles`](https://docs.finix.com/api/identities/createidentity) to represent the customer. The Identity resource helps manage payment instruments, payout history, and customer details. You can create either `PERSONAL` or `BUSINESS` Identities.

### Required Data

| Required | Optional | Invalid |
| :-: | :-: | :-: |
|  |  |  |

| Field | `type: PERSONAL` | `type: BUSINESS` |
| --- | :-: | :-: |
| Identity Roles <br>`identity_roles` |  |  |
| Type <br>`type` |  |  |
| First Name <br>`first_name` |  |  |
| Last Name <br>`last_name` |  |  |
| Personal Address <br>`personal_address` |  |  |
| Business Name <br>`business_name` |  |  |
| Doing Business As <br>`doing_business_as` |  |  |
| Business Address <br>`business_address` |  |  |
| Business Phone <br>`business_phone` |  |  |
| Personal Email <br>`email` |  |  |
| Personal Phone <br>`phone` |  |  |

### API Request

- Personal

- Business

#### Request Structure

post
    /identities

```bash
curl -i -X POST \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/identities \
  -H 'Content-Type: application/json' \
  -H 'Finix-Version: 2022-02-01' \
  -d '{
    "entity": {
      "first_name": "Michael",
      "last_name": "Johnson",
      "personal_address": {
        "city": "Springfield",
        "country": "USA",
        "line1": "789 Oak Drive",
        "line2": null,
        "postal_code": "62704",
        "region": "IL"
      }
    },
    "identity_roles": [\
      "RECIPIENT",\
      "SENDER"\
    ],
    "type": "PERSONAL"
  }'
```

#### Example Response (Sender & Recipient)

```json
{
  "id": "IDdRDX7H6hNcm4HexJBeZVUV",
  "created_at": "2024-08-08T09:36:10.26Z",
  "updated_at": "2024-08-08T09:36:10.26Z",
  "entity": {
    "ach_max_transaction_amount": 0,
    "amex_mid": null,
    "annual_card_volume": 0,
    "business_address": null,
    "business_name": null,
    "business_phone": null,
    "business_tax_id_provided": false,
    "business_type": null,
    "default_statement_descriptor": null,
    "discover_mid": null,
    "dob": null,
    "doing_business_as": null,
    "email": null,
    "first_name": "Michael",
    "has_accepted_credit_cards_previously": false,
    "incorporation_date": null,
    "last_name": "Johnson",
    "max_transaction_amount": 0,
    "mcc": null,
    "ownership_type": null,
    "personal_address": {
      "line1": "789 Oak Drive",
      "line2": null,
      "city": "Springfield",
      "region": "IL",
      "postal_code": "62704",
      "country": "USA"
    },
    "phone": null,
    "principal_percentage_ownership": null,
    "short_business_name": null,
    "tax_authority": null,
    "tax_id_provided": false,
    "title": null,
    "url": null
  },
  "identity_roles": [\
    "RECIPIENT",\
    "SENDER"\
  ],
  "tags": {},
  "type": "PERSONAL",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDdRDX7H6hNcm4HexJBeZVUV"
    },
    "verifications": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDdRDX7H6hNcm4HexJBeZVUV/verifications"
    },
    "merchants": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDdRDX7H6hNcm4HexJBeZVUV/merchants"
    },
    "settlements": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDdRDX7H6hNcm4HexJBeZVUV/settlements"
    },
    "authorizations": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDdRDX7H6hNcm4HexJBeZVUV/authorizations"
    },
    "transfers": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDdRDX7H6hNcm4HexJBeZVUV/transfers"
    },
    "payment_instruments": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDdRDX7H6hNcm4HexJBeZVUV/payment_instruments"
    },
    "associated_identities": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDdRDX7H6hNcm4HexJBeZVUV/associated_identities"
    },
    "disputes": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDdRDX7H6hNcm4HexJBeZVUV/disputes"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
    }
  }
}
```

---

## Step 2: Add a Source Payment Instrument

Creating `Payment Instruments` and passing payment details (account number, card number, etc.) directly via the API should only be done for testing purposes and by PCI Level 1 compliant entities. If you aren't a Level 1 PCI-compliant entity, you must use our [Tokenization Forms](https://docs.finix.com/guides/online-payments/payment-tokenization/tokenization-forms) or [Mobile Tokenization](https://docs.finix.com/guides/online-payments/payment-tokenization) to accept payment details and comply with PCI regulations. If you have any questions, please don't hesitate to reach out to your Finix point of contact or email the [Finix Support team](https://docs.finix.com/guides/getting-started/support-at-finix/).

Add a `Payment Instrument` for the source instrument that funds will be pulled from. This can be a card or a bank account.

### API Request Structure

post
    /payment_instruments

```bash
curl -i -X POST \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/payment_instruments \
  -H 'Content-Type: application/json' \
  -H 'Finix-Version: 2022-02-01' \
  -d '{
    "address": {
      "city": "San Francisco",
      "country": "USA",
      "line1": "900 Metro Center Blv",
      "postal_code": "94404",
      "region": "CA"
    },
    "expiration_month": 12,
    "expiration_year": 2029,
    "identity": "IDmj1yA97RS4rMjiQgvK3Vio",
    "name": "John Jeremy",
    "number": "5200828282828210",
    "security_code": "022",
    "type": "PAYMENT_CARD"
  }'
```

#### Example Response

```json
{
  "id": "PI6F5kkcCB3dtGhFy1t8Aua5",
  "created_at": "2024-11-15T09:42:33.42Z",
  "updated_at": "2024-11-15T09:42:33.42Z",
  "account_updater_enabled": false,
  "application": "APgPDQrLD52TYvqazjHJJchM",
  "created_via": "API",
  "currency": "USD",
  "disabled_code": null,
  "disabled_message": null,
  "enabled": true,
  "fingerprint": "FPRiCenDk2SoRng7WjQTr7RJY",
  "identity": "IDgWxBhfGYLLdkhxx2ddYf9K",
  "instrument_type": "PAYMENT_CARD",
  "address": {
    "line1": "900 Metro Center Blv",
    "line2": null,
    "city": "San Francisco",
    "region": "CA",
    "postal_code": "94404",
    "country": "USA"
  },
  "address_verification": "UNKNOWN",
  "bin": "520082",
  "brand": "MASTERCARD",
  "card_type": "DEBIT",
  "expiration_month": 12,
  "expiration_year": 2029,
  "issuer_country": "NON_USA",
  "last_four": "8210",
  "name": "John Jeremy",
  "network_token_enabled": false,
  "network_token_state": "NOT_ENABLED",
  "security_code_verification": "UNKNOWN",
  "tags": {},
  "third_party": null,
  "third_party_token": null,
  "type": "PAYMENT_CARD",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5"
    },
    "authorizations": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5/authorizations"
    },
    "transfers": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5/transfers"
    },
    "verifications": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5/verifications"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
    },
    "identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgWxBhfGYLLdkhxx2ddYf9K"
    },
    "updates": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5/updates"
    }
  }
}
```

---

## Step 3: (Optional) Verify the Source Payment Instrument

If the source is a card, verify its eligibility for pull-from-card before proceeding. The resulting `Verification` resource provides card details including card type and issuer information.

### API Request Structure

post
    /payment_instruments/{payment_instrument_id_verify}/verifications

```bash
curl -i -X POST \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/payment_instruments/PIn8as75qLQFqQ7G4NdBUk58/verifications \
  -H 'Content-Type: application/json' \
  -d '{
    "processor": "DUMMY_V1"
  }'
```

#### Example Response

```json
{
  "id": "VI9cSUm3SDaLKtuL92Z34rK9",
  "created_at": "2025-11-07T20:36:16.90Z",
  "updated_at": "2025-11-07T20:36:16.92Z",
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "identity": null,
  "merchant": null,
  "merchant_identity": null,
  "messages": [],
  "outcome_summary": null,
  "outcomes": null,
  "payment_instrument": "PIn8as75qLQFqQ7G4NdBUk58",
  "payment_instrument_verification_details": {
    "push_to_card_domestic": null,
    "push_to_card_cross_border": null,
    "card_type": null,
    "billing_currency": null,
    "issuer_country": "UNKNOWN",
    "name_verification_results": {
      "first_name_verification": "UNKNOWN",
      "last_name_verification": "UNKNOWN",
      "middle_name_verification": "UNKNOWN",
      "name_verification": "UNKNOWN"
    }
  },
  "processor": "DUMMY_V1",
  "raw": null,
  "state": "PENDING",
  "tags": {
    "card_name": "Business_Card"
  },
  "trace_id": "63eefc66-81a3-4f24-a09d-bb7650e23943",
  "type": "PAYMENT_INSTRUMENT",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/verifications/VI9cSUm3SDaLKtuL92Z34rK9"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "payment_instrument": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PIn8as75qLQFqQ7G4NdBUk58"
    }
  }
}
```

---

## Step 4: Add a Destination Payment Instrument

Add a `Payment Instrument` for the destination instrument that will receive the funds. Me to Me payouts are only available for bank accounts or Visa and Mastercard cards.

### API Request Structure

post
    /payment_instruments

#### Example Response

---

## Step 5: (Optional) Verify the Destination Payment Instrument

If pushing to a card you can verify the destination card's eligibility for push-to-card before sending funds.

### API Request Structure

post
    /payment_instruments/{payment_instrument_id_verify}/verifications

#### Example Response

---

## Step 6: Verify and Onboard the Account

Provision a recipient account by making a POST request to create a `Merchant` resource. This is the last step before you can begin sending Me to Me payouts. Once the merchant is `Approved` you can create a transfer to pull funds. For more information, see [Recipient Verifications](https://docs.finix.com/guides/payouts/recipient-verification-process)

### API Request Structure

post
    /identities/{identity_id}/merchants

```bash
curl -i -X POST \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/identities/IDhC29dXMAkbmr1aBpS91Hpx/merchants \
  -H 'Content-Type: application/json' \
  -H 'Finix-Version: 2022-02-01' \
  -d '{
    "processor": "DUMMY_V1",
    "tags": {
      "key_2": "value_2"
    }
  }'
```

#### Example Response

```json
{
  "id": "MUeTBamsYxqr1KSnT4U2x9SP",
  "created_at": "2024-08-16T13:11:36.72Z",
  "updated_at": "2024-08-16T13:11:36.72Z",
  "application": "APgPDQrLD52TYvqazjHJJchM",
  "card_cvv_required": false,
  "card_expiration_date_required": true,
  "card_network_details": null,
  "convenience_charges_enabled": false,
  "country": "USA",
  "creating_transfer_from_report_enabled": true,
  "currencies": [\
    "USD"\
  ],
  "default_partial_authorization_enabled": false,
  "disbursements_ach_pull_enabled": false,
  "disbursements_ach_push_enabled": false,
  "disbursements_card_pull_enabled": false,
  "disbursements_card_push_enabled": false,
  "disbursements_same_day_ach_pull_enabled": false,
  "disbursements_same_day_ach_push_enabled": false,
  "fee_ready_to_settle_upon": "RECONCILIATION",
  "gateway": null,
  "gross_settlement_enabled": false,
  "identity": "ID6ZC4KedcaCwECQcWr7SM4m",
  "instant_payouts_card_push_enabled": false,
  "level_two_level_three_data_enabled": false,
  "loan_repayment": null,
  "mcc": "4900",
  "merchant_name": "Blue Horizon Technologies",
  "merchant_profile": "MP8aC84QAtA69Qhv6BJSyvHr",
  "mid": null,
  "onboarding_state": "PROVISIONING",
  "processing_enabled": false,
  "processor": "DUMMY_V1",
  "processor_details": {},
  "ready_to_settle_upon": "RECONCILIATION",
  "ready_to_settle_upon_delay_alignment": "NONE",
  "rent_surcharges_enabled": false,
  "settlement_enabled": false,
  "settlement_funding_identifier": "UNSET",
  "surcharges_enabled": false,
  "tags": {
    "key_2": "value_2"
  },
  "unreferenced_refund_manual_entry_enabled": false,
  "verification": "VI7jopNSiaVMXWKkhxt6dJm7",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/merchants/MUeTBamsYxqr1KSnT4U2x9SP"
    },
    "identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/ID6ZC4KedcaCwECQcWr7SM4m"
    },
    "verifications": {
      "href": "https://finix.sandbox-payments-api.com/merchants/MUeTBamsYxqr1KSnT4U2x9SP/verifications"
    },
    "merchant_profile": {
      "href": "https://finix.sandbox-payments-api.com/merchant_profiles/MP8aC84QAtA69Qhv6BJSyvHr"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
    },
    "verification": {
      "href": "https://finix.sandbox-payments-api.com/verifications/VI7jopNSiaVMXWKkhxt6dJm7"
    }
  }
}
```

---

## Step 7: Create a Transfer to Pull Funds

Create a `Transfer` to pull funds from the customer's source payment instrument. Set `funds_flow_type` to `ME_TO_ME` and include the `Payment Instrument` ID as `source`.

The pull transfer must reach a `state` of `SUCCEEDED` before you can create the payout transfer. It is recommended to include an `idempotency_id` field in the payload. For more information, see [Idempotent Requests](https://docs.finix.com/additional-resources/developers/authentication-and-api-basics/idempotent-request).

### API Request Structure

post
    /transfers

```bash
curl -i -X POST \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/transfers \
  -H 'Content-Type: application/json' \
  -H 'Finix-Version: 2022-02-01' \
  -d '{
    "amount": 15000,
    "currency": "USD",
    "funds_flow_type": "ME_TO_ME",
    "operation_key": "PULL_FROM_CARD",
    "source": "PIveyqg2bVkKo6SHsstxBSDc"
  }'
```

#### Example Response

```json
{
  "id": "TR3vKfwCuXmLqPsDYbGYn4NUm",
  "created_at": "2025-08-14T21:45:12.98Z",
  "updated_at": "2025-08-14T21:45:12.98Z",
  "additional_buyer_charges": null,
  "additional_healthcare_data": null,
  "additional_purchase_data": null,
  "address_verification": null,
  "amount": 15000,
  "amount_requested": 15000,
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "currency": "USD",
  "destination": null,
  "externally_funded": "UNKNOWN",
  "failure_code": null,
  "failure_message": null,
  "fee": 0,
  "fee_profile": "FPmtT4MYmiAs1qjLjneQmk4d",
  "funds_flow_type": "ME_TO_ME",
  "idempotency_id": null,
  "merchant": "MUuNdhs7uVYcjocWugeBbpRo",
  "merchant_identity": "IDbPrApp2adDVqG4QQzoo58E",
  "messages": [],
  "network_details": {},
  "operation_key": "PULL_FROM_CARD",
  "parent_transfer": null,
  "parent_transfer_trace_id": null,
  "raw": null,
  "ready_to_settle_at": null,
  "receipt_last_printed_at": null,
  "security_code_verification": null,
  "source": "PIveyqg2bVkKo6SHsstxBSDc",
  "split_transfers": [],
  "state": "SUCCEEDED",
  "statement_descriptor": null,
  "subtype": "API",
  "supplemental_fee": null,
  "tags": {},
  "tip_amount": null,
  "trace_id": "84749ef6-2018-5105-b4gg-g684e8g4f458",
  "type": "DEBIT",
  "_links": {
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "self": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR3vKfwCuXmLqPsDYbGYn4NUm"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDbPrApp2adDVqG4QQzoo58E"
    },
    "payment_instruments": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR3vKfwCuXmLqPsDYbGYn4NUm/payment_instruments"
    },
    "reversals": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR3vKfwCuXmLqPsDYbGYn4NUm/reversals"
    },
    "fees": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR3vKfwCuXmLqPsDYbGYn4NUm/fees"
    },
    "disputes": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR3vKfwCuXmLqPsDYbGYn4NUm/disputes"
    },
    "source": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PIveyqg2bVkKo6SHsstxBSDc"
    },
    "fee_profile": {
      "href": "https://finix.sandbox-payments-api.com/fee_profiles/FPmtT4MYmiAs1qjLjneQmk4d"
    }
  }
}
```

---

## Step 8: Create a Payout Transfer

Once the pull transfer has `SUCCEEDED`, create the payout `Transfer` to push funds to the customer's destination instrument.

### API Request Structure

post
    /transfers

```bash
curl -i -X POST \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  https://finix.sandbox-payments-api.com/transfers \
  -H 'Content-Type: application/json' \
  -H 'Finix-Version: 2022-02-01' \
  -d '{
    "amount": 15000,
    "currency": "USD",
    "destination": "PIveyqg2bVkKo6SHsstxBSDc",
    "funds_flow_type": "ME_TO_ME",
    "operation_key": "PUSH_TO_CARD",
    "pull_transfer_id": "TR3vKfwCuXmLqPsDYbGYn4NUm"
  }'
```

#### Example Response

```json
{
  "id": "TRhJdBnKpQsRmXvWyLzGcFUm",
  "created_at": "2025-08-14T21:45:12.98Z",
  "updated_at": "2025-08-14T21:45:12.98Z",
  "additional_buyer_charges": null,
  "additional_healthcare_data": null,
  "additional_purchase_data": null,
  "address_verification": null,
  "amount": 15000,
  "amount_requested": 15000,
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "currency": "USD",
  "destination": "PIveyqg2bVkKo6SHsstxBSDc",
  "externally_funded": "UNKNOWN",
  "failure_code": null,
  "failure_message": null,
  "fee": 0,
  "fee_profile": "FPmtT4MYmiAs1qjLjneQmk4d",
  "funds_flow_type": "ME_TO_ME",
  "idempotency_id": null,
  "merchant": "MUuNdhs7uVYcjocWugeBbpRo",
  "merchant_identity": "IDbPrApp2adDVqG4QQzoo58E",
  "messages": [],
  "network_details": {},
  "operation_key": "PUSH_TO_CARD",
  "parent_transfer": null,
  "parent_transfer_trace_id": null,
  "pull_transfer_id": "TR3vKfwCuXmLqPsDYbGYn4NUm",
  "raw": null,
  "ready_to_settle_at": null,
  "receipt_last_printed_at": null,
  "security_code_verification": null,
  "source": null,
  "split_transfers": [],
  "state": "SUCCEEDED",
  "statement_descriptor": null,
  "subtype": "API",
  "supplemental_fee": null,
  "tags": {},
  "tip_amount": null,
  "trace_id": "91850fg7-3129-6216-c5hh-h795f9h5g569",
  "type": "CREDIT",
  "_links": {
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "self": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRhJdBnKpQsRmXvWyLzGcFUm"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDbPrApp2adDVqG4QQzoo58E"
    },
    "payment_instruments": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRhJdBnKpQsRmXvWyLzGcFUm/payment_instruments"
    },
    "reversals": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRhJdBnKpQsRmXvWyLzGcFUm/reversals"
    },
    "fees": {
      "href": "https://finix.sandbox-payments-api.com/fees?linked_to=TRhJdBnKpQsRmXvWyLzGcFUm"
    },
    "disputes": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TRhJdBnKpQsRmXvWyLzGcFUm/disputes"
    },
    "destination": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PIveyqg2bVkKo6SHsstxBSDc"
    },
    "fee_profile": {
      "href": "https://finix.sandbox-payments-api.com/fee_profiles/FPmtT4MYmiAs1qjLjneQmk4d"
    }
  }
}
```
