# Almond Payout API

The Almond Payout API enables clients to execute domestic payouts by leveraging local banking partners and payout networks.

As a client, you need to:
  - Authenticate to obtain an access token.
  - Discover payout providers by querying supported providers by country and retrieving provider-specific field requirements.
  - Check payout rates and fees for full transparency on send/receive amounts.
  - Create a payout with the required beneficiary and payment details.
  
Almond then orchestrates the process — verifying balance availability, executing the payout through the chosen payout partner, and updating the payout status — while providing clients with real-time status updates and notifications.
  <p align="center">
    <img src="/images/payout_flow_final.png" alt="System Flow" width="900"/><br>
    <span style="font-size:0.9em;">Figure: Payout Flow</span>
   </p>


Version: 1.1.0
License: Copyright © 2025 Almond FinTech. All rights reserved.

## Servers

Sandbox
```
https://api.sandbox.almondfintech.com
```

Production
```
https://api.almondfintech.com
```

## Download OpenAPI description

[Almond Payout API](https://docs.almondfintech.com/_bundle/apis/payouts.yaml)

## Member

### Get Destination Members

 - [GET /v2/destination-members](https://docs.almondfintech.com/apis/payouts/member/getdestinationmembers.md): Retrieves a list of destination members available for the authenticated source member.

Response Details:
- Returns information about all destination members that have active corridors with the member.
- Each destination member includes:
  - memberId: Unique identifier for the destination member
  - name: Display name of the destination member/payout partner
  - supportedCcyList: List of currencies supported by this destination member
  - prefundBalance: Current prefund balances for each supported currency

Use Cases:
- Discover available payout partners for the  member
- Check prefund balances before initiating payouts
- View supported currencies for each destination member

Business Context:
- Destination members are payout partners that can receive and disburse funds in their respective countries
- Prefund balances represent funds already transferred to the destination member for faster payouts

## Payout Providers

### Get Payout Providers

 - [GET /v2/payout-providers](https://docs.almondfintech.com/apis/payouts/payout-providers/getpayoutproviders.md): Returns a list of supported payout providers.

If countryCode is provided, only payout providers for the specified
country are returned. Without countryCode, all supported payout providers are returned.

### Get Payout Provider

 - [GET /v2/payout-providers/{payout-provider-id}](https://docs.almondfintech.com/apis/payouts/payout-providers/getpayoutprovider.md): This API provides a comprehensive list of fields, including their respective data types and validation specifications, necessary for initiating a payout API request.

## Static Fields

### Get Source Of Funds Codes

 - [GET /v2/source-of-funds-codes](https://docs.almondfintech.com/apis/payouts/static-fields/getsourceoffundscodes.md): Returns a list of source of funds codes that can be used when initiating payouts.

These codes indicate where the sender's funds originated from and are used for compliance and regulatory purposes.

### Get Purpose Codes

 - [GET /v2/purpose-codes](https://docs.almondfintech.com/apis/payouts/static-fields/getpurposecodes.md): Returns a list of purpose codes that can be used when initiating payouts.

These codes indicate the purpose or reason for the payout and are required for regulatory compliance and reporting.

### Get Relationship Codes

 - [GET /v2/relationship-codes](https://docs.almondfintech.com/apis/payouts/static-fields/getrelationshipcodes.md): Returns a list of relationship codes that can be used when initiating payouts.

These codes define the relationship between the sender and the beneficiary and are used for compliance verification.

## Payout

### Get Payout Limits

 - [GET /v2/payout-limits](https://docs.almondfintech.com/apis/payouts/payout/getpayoutlimits.md): Retrieves the minimum and maximum payout limits for payout providers based on the specified country code and/or payout provider ID.

Query Parameters:
- At least one of countryCode or payoutProviderId must be provided.

Response:
- Returns a list of payout limits, each containing the currency code, minimum limit, and maximum limit.

Use Cases:
- Check payout limits before initiating a payout
- Display available payout limits to end users
- Validate payout amounts against configured limits

### Initiate Payout

 - [POST /v2/payouts](https://docs.almondfintech.com/apis/payouts/payout/initiatepayout.md): Creates a new payout with the provided request details.  

- On success, the response includes:  
  * payoutId – Unique identifier for the initiated payout. This ID must be used for subsequent operations (e.g., status checks, cancellation).  
  * payoutStatus – Will return "ACCP" if the payout request is received successfully.  

This endpoint is the entry point for executing a payment or transfer, and serves as the foundation for all subsequent payout lifecycle operations.

### Get Payouts

 - [GET /v2/payouts](https://docs.almondfintech.com/apis/payouts/payout/getpayouts.md): Get payouts with filter and pagination support.

Example Request:

GET /v2/payouts?page=0&size=10&payoutStatus=ACCP&senderCountry=US&beneficiaryCountry=PH


Query Parameters:
- page - Page number (default: 0)
- size - Number of records per page (default: 10)
- sortField - Field to sort by
- sortDirection - Sort direction (ASC/DESC)
- sourceMemberPayoutId - Filter by source member payout ID (your unique payout identifier)
- payoutId - Filter by system payout ID (UUID format)
- creationTime - Filter by creation date (YYYY-MM-DD)
- completionTime - Filter by completion date (YYYY-MM-DD)
- senderName - Filter by sender name
- senderCountry - Filter by sender country code
- beneficiaryName - Filter by beneficiary name
- beneficiaryCountry - Filter by beneficiary country code
- payoutProviderId - Filter by payout provider id
- payoutStatus - Filter by payout status (ACCP, PNDG, PRCD, etc.)

### Process Payout

 - [POST /v2/payouts/{payout-id}/process](https://docs.almondfintech.com/apis/payouts/payout/processpayout.md)

### Get Payout Details

 - [GET /v2/payouts/{payout-id}](https://docs.almondfintech.com/apis/payouts/payout/getpayout.md): Fetches detailed information about a specific payout using its unique payoutId.

Returns comprehensive payout information including:
- Payout details (amount, transfer fee)
- Sender and beneficiary information
- Current payout status
- Timestamps (creation, completion)
- Compliance information

### Get Payout Status

 - [GET /v2/payouts/{payout-id}/status](https://docs.almondfintech.com/apis/payouts/payout/getpayoutstatus.md): Retrieves the current status of a specific payout using its unique payoutId.

Payout Status Values:
- RCVD - Received: Payout request has been received
- ACCP - Accepted: Payout has been accepted for processing
- PNDG - Pending: Payout is pending processing
- PRCD - Processed: Payout has been successfully processed
- RJCT - Rejected: Payout was rejected
- CNCL - Cancelled: Payout was cancelled
- EXPD - Expired: Payout has expired
- FAIL - Failed: Payout processing failed
- RVSD - Reversed: Payout was reversed

Cancellation Status Values (when applicable):
- ACCP - Cancellation accepted
- PNDG - Cancellation pending
- PRCD - Cancellation processed
- RJCT - Cancellation rejected

### Cancel Payout

 - [POST /v2/payouts/{payout-id}/cancel](https://docs.almondfintech.com/apis/payouts/payout/cancelpayout.md): Submits a cancellation request for a specific payout identified by its unique payoutId.

