# `Rapyd.Services.Partner`
[🔗](https://github.com/iamkanishka/rapyd/blob/v1.0.0/lib/rapyd/services/partner.ex#L1)

Rapyd Partner / PayFac — KYB onboarding and sub-merchant management.

Covers: Organizations, KYB Applications, Settlement Bank Accounts,
Application Templates, Industries, and Offerings.

# `approve_application`

```elixir
@spec approve_application(Rapyd.Client.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Approve a KYB application (internal/partner-admin action).

# `create_application`

```elixir
@spec create_application(Rapyd.Client.t(), map()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Create a KYB application.

# `create_organization`

```elixir
@spec create_organization(Rapyd.Client.t(), map()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Create a partner organization (merchant).

# `create_settlement_bank_account`

```elixir
@spec create_settlement_bank_account(Rapyd.Client.t(), map()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Link a settlement bank account to a merchant wallet.

# `delete_settlement_bank_account`

```elixir
@spec delete_settlement_bank_account(Rapyd.Client.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Delete a settlement bank account.

# `get_application`

```elixir
@spec get_application(Rapyd.Client.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Retrieve a KYB application.

# `get_application_by_wallet`

```elixir
@spec get_application_by_wallet(Rapyd.Client.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Get a KYB application by wallet ID.

# `get_application_template`

```elixir
@spec get_application_template(Rapyd.Client.t(), String.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Get an application template for a given country and application type.

# `get_offering`

```elixir
@spec get_offering(Rapyd.Client.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Retrieve a specific product offering.

# `get_organization`

```elixir
@spec get_organization(Rapyd.Client.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Retrieve an organization.

# `get_settlement_bank_account`

```elixir
@spec get_settlement_bank_account(Rapyd.Client.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Retrieve a settlement bank account.

# `list_application_templates`

```elixir
@spec list_application_templates(Rapyd.Client.t(), map()) ::
  {:ok, list()} | {:error, Rapyd.Error.t()}
```

List supported KYB application templates.

# `list_applications`

```elixir
@spec list_applications(Rapyd.Client.t(), map()) ::
  {:ok, list()} | {:error, Rapyd.Error.t()}
```

List KYB applications.

# `list_industries`

```elixir
@spec list_industries(Rapyd.Client.t()) :: {:ok, list()} | {:error, Rapyd.Error.t()}
```

List industries (MCC codes) available for partner merchants.

# `list_offerings`

```elixir
@spec list_offerings(Rapyd.Client.t()) :: {:ok, list()} | {:error, Rapyd.Error.t()}
```

List partner product offerings.

# `list_organizations`

```elixir
@spec list_organizations(Rapyd.Client.t(), map()) ::
  {:ok, list()} | {:error, Rapyd.Error.t()}
```

List organizations.

# `list_settlement_bank_accounts`

```elixir
@spec list_settlement_bank_accounts(Rapyd.Client.t(), map()) ::
  {:ok, list()} | {:error, Rapyd.Error.t()}
```

List settlement bank accounts.

# `reject_application`

```elixir
@spec reject_application(Rapyd.Client.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Reject a KYB application.

# `submit_application`

```elixir
@spec submit_application(Rapyd.Client.t(), String.t()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Submit a KYB application for review.

# `update_application`

```elixir
@spec update_application(Rapyd.Client.t(), String.t(), map()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Update a KYB application.

# `update_organization`

```elixir
@spec update_organization(Rapyd.Client.t(), String.t(), map()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Update an organization.

# `update_settlement_bank_account`

```elixir
@spec update_settlement_bank_account(Rapyd.Client.t(), String.t(), map()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Update a settlement bank account.

# `upload_application_document`

```elixir
@spec upload_application_document(Rapyd.Client.t(), String.t(), map()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Upload a KYB document to an application.

# `upload_bank_verification_file`

```elixir
@spec upload_bank_verification_file(Rapyd.Client.t(), map()) ::
  {:ok, map()} | {:error, Rapyd.Error.t()}
```

Upload a bank verification file for a settlement account.

# `with_merchant_account_id`

```elixir
@spec with_merchant_account_id(Rapyd.Client.t(), String.t()) :: Rapyd.Client.t()
```

Returns a new client struct scoped to a specific merchant organisation ID.

The organisation ID is forwarded as the `merchant_account_id` query param on
every request made with the returned client.

## Example

    partner_client = Partner.with_merchant_account_id(client, "org_abc123")
    Partner.list_organizations(partner_client)

---

*Consult [api-reference.md](api-reference.md) for complete listing*
