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

Rapyd Disburse — send payouts to beneficiaries worldwide.

Covers: Payouts, Beneficiaries, Senders, Payout Method Types,
and hosted Beneficiary Tokenization Pages.

# `cancel_payout`

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

Cancel a payout.

# `complete_payout`

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

Simulate payout completion (sandbox only).

# `confirm_payout`

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

Confirm a payout (moves it from ACT to processing).

# `create_beneficiary`

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

Create a beneficiary.

# `create_beneficiary_tokenization_page`

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

Create a hosted beneficiary tokenization page.

# `create_extended_beneficiary`

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

Create an extended beneficiary (full identity fields required).

# `create_payout`

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

Create a payout.

# `create_sender`

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

Create a sender.

# `delete_beneficiary`

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

Delete a beneficiary.

# `delete_sender`

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

Delete a sender.

# `get_beneficiary`

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

Retrieve a beneficiary.

# `get_beneficiary_tokenization_page`

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

Retrieve a beneficiary tokenization page.

# `get_payout`

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

Retrieve a payout.

# `get_payout_method_type_fields`

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

Get required fields for a payout method type.

# `get_payout_required_fields`

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

Get required fields for a payout method type with entity-type scoping.

# `get_sender`

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

Retrieve a sender.

# `list_payout_method_types`

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

List available payout method types for a sender/beneficiary combination.

# `list_payouts`

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

List payouts.

# `set_payout_response`

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

Set the merchant response to an inbound payout request.

# `update_beneficiary`

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

Update a beneficiary.

# `update_payout`

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

Update a payout.

# `update_sender`

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

Update a sender.

# `upload_payout_document`

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

Upload a supporting document to a payout record.

# `validate_beneficiary`

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

Validate a beneficiary's account details.

---

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