> ## Documentation Index
> Fetch the complete documentation index at: https://docs.synctera.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Synctera Pay

> SyncteraPay aims to simplify the process for FinTechs to introduce their own payment partners into the Synctera ecosystem, enabling them to fully leverage their accounts and transaction flow. The platform facilitates daily reconciliation and settlement with the third-party payments provider.

## Overview

With SyncteraPay, FinTechs can find a payments partner outside the Synctera Marketplace if it better suits their needs.

SyncteraPay supports both Outbound and Inbound payment flows:

* **SyncteraPay Outbound (Send):** This function allows money transfer from a Synctera account to an external account in a different financial institution, via a third-party payments provider.
* **SyncteraPay Inbound (Receive):** This function facilitates the receipt of money from an external account to a Synctera account, via a third-party provider.

Transactions in SyncteraPay are created using the SyncteraPay APIs. The transaction recorded in the account is always the result of an off-platform activity that leads to a money movement, performed by the third-party payments provider.

Transactions are final and cannot be reversed. In order to reverse a transaction or correct a transaction a new opposite transaction will have to have to be created.

SyncteraPay supports the following type of transactions:

\*\*For more information about transactions and its status, please refer to Synctera’s transactions [guide](https://docs.synctera.com/v2/docs/transactions-guide).

The current list of supported SyncteraPay transaction subtypes are found [here](https://docs.synctera.com/v2/reference/createsyncterapaytransfer) under **subtype.**

### Counterparty Set Up

<Steps>
  <Step title="Add the external party in the Synctera Platform">
    The customer may be the same party that is receiving the funds (in the event of a me-to-me transfer) or a different customer (Peer-to-Peer). Ensure that the customer exists on the Synctera platform by using the same customer if M2M, or adding the originating party (is customer = false).
  </Step>

  <Step title="Link the external account that the funds are being sent from or to">
    Using our external accounts endpoint, link the external account that belongs to the counterparty. If it is a true bank account, you can add this following the same steps you would to link and manually verify an external account described [here](https://docs.synctera.com/docs/external-accounts-guide).

    There may be some cases where the external account does not have its own unique account number; for example, a virtual account rolling into a pool account, or an international account that does not have the same properties as a US bank account. Provided your Sponsor Bank has approved the use case, you can use the following example for adding the external account to the originating customer on the Synctera platform/ledger:

    ```json theme={"system"}
    curl --request POST \
      --url https://api-sandbox.synctera.com/v0/external_accounts \
      --header 'Authorization: Bearer <token>' \
      --header 'Content-Type: application/json' \
      --data '{
        "type": "OTHER_BANK_ACCOUNT",
        "customer_type": "{either BUSINESS or CONSUMER}",
        "account_owner_names": ["Account Owner"],
        "routing_identifiers": {
          "bank_name": "{Bank Name}",
          "bank_countries": ["Country of operation of the bank"]
        },
        "account_identifiers": {
          "number": "{uuid if no account number exists}"
        },
        "verification": {
          "vendor": "MANUAL",
          "status": "VERIFIED"
        },
        "business_id": "{uuid of the business in Synctera. Set customer_id as the uuid of the customer in Synctera if it is a consumer use case}"
    }'

    ```
  </Step>
</Steps>

### Outgoing Transaction Flow

Transactions executed via a third-party provider need coordination between the Synctera account and the third-party payment provider. All outgoing payments follow a two-step process. The first step is a transaction authorization that verifies that the account is capable of transacting and has sufficient funds for the transaction. The second step is the transaction posting ensuring the successful processing of the transfer with the third-party payment provider and includes adding extra transaction data for reconciliation.

These steps are performed via the Synctera APIs. Assuming Steps 1 and 2 above have already been completed:

<Steps>
  <Step title="Transaction Authorization" stepNumber={3}>
    Create a transaction authorization to hold available funds. The external account added in Step 2 is reflected as the **final\_external\_account\_id** in the request.

    <CodeGroup>
      ```json JSON theme={"system"}
        // request

       {
        "account_id": "b01db9c7-78f2-4a99-8aca-1231d32f9b96",
        "customer_id": "46fec39e-e776-4571-bf90-d0e1d15172fe",
        "effective_date": "2022-03-18",
        "amount": 10000,
        "currency": "USD",
        "dc_sign": "CREDIT",
        "direction": "OUTGOING",
        "subtype": "OUTGOING_INTERNATIONAL_REMITTANCE",
        "synctera_pay_network": "WISE",
        "configuration_id": "7d943c51-e4ff-4e57-9558-08cab6b963c7",
        "final_external_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "source_data": {},
        "synctera_pay_vendor_id": "7d943c51-e4ff-4e57-9558-08cab6b963c7"
      }

        // response
        {
        "amount": 10000,
        "currency": "USD",
        "dc_sign": "CREDIT",
        "direction": "OUTGOING",
        "subtype": "OUTGOING_INTERNATIONAL_REMITTANCE",
        "synctera_pay_network": "WISE",
        "effective_date": "2022-03-18",
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "is_same_day": true,
        "status": "PENDING",
        "tenant_id": "abcdef_ghijkl",
        "configuration_id": "7d943c51-e4ff-4e57-9558-08cab6b963c7",
        "final_external_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "source_data": {},
        "synctera_pay_vendor_id": "7d943c51-e4ff-4e57-9558-08cab6b963c7",
        "customer_id": "46fec39e-e776-4571-bf90-d0e1d15172fe",
        "destination_account_id": "fccb4a46-1261-4e91-b622-73b5b946183d",
        "destination_account_owner_name": "<string>",
        "failed": false,
        "network_status": "PENDING",
        "originating_account_id": "b01db9c7-78f2-4a99-8aca-1231d32f9b96",
        "originating_account_owner_name": "<string>",
        "suspended": false,
        "transaction_id": "45b5246f-ad97-4629-9aac-465b74a05505"
      }

      ```
    </CodeGroup>

    If successful, the third-party provider has processed the transaction, and it can now be posted to the customer's account. At this stage, the FinTech should include the transaction reference ID provided by the third-party provider for future transaction reconciliation.
  </Step>

  <Step title="Transaction Posted" stepNumber={4}>
    Update the status to POSTED once funds are verified to post the hold. Include the reference id obtained from the third party provider in this step as the **reference\_id**.

    <CodeGroup>
      ```json JSON theme={"system"}
        // request
        {
          "status": "POSTED",
      	"reference_id": "<string>",
      "exchange_details": {
            "source_currency": "USD",
            "target_currency": "GBP",
            "source_amount": 10000,
            "target_amount": 10000,
            "rate": "1.30445",
            "fees": [
              {
                "fee_type": "FX",
                "description": "string",
                "amount": 0,
                "percentage": "string",
                "currency": "string"
      		   }
      		]
      	}
      }
            

        // response
        {
        "amount": 10000,
        "currency": "USD",
        "dc_sign": "CREDIT",
        "direction": "OUTGOING",
        "subtype": "OUTGOING_INTERNATIONAL_REMITTANCE",
        "synctera_pay_network": "WISE",
        "effective_date": "2022-03-18",
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "is_same_day": true,
        "status": "POSTED",
        "tenant_id": "abcdef_ghijkl",
        "configuration_id": "7d943c51-e4ff-4e57-9558-08cab6b963c7",
        "exchange_details": {
          "rate": 1.30445,
          "source_amount": 10000,
          "source_currency": "USD",
          "target_amount": 10000,
          "target_currency": "GBP",
          "fees": [
            {
              "currency": "<string>",
              "fee_type": "FX",
              "amount": 2,
              "description": "<string>",
              "percentage": "<string>"
            }
          ]
        },
        "final_external_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "source_data": {},
        "synctera_pay_vendor_id": "7d943c51-e4ff-4e57-9558-08cab6b963c7",
        "customer_id": "46fec39e-e776-4571-bf90-d0e1d15172fe",
        "destination_account_id": "fccb4a46-1261-4e91-b622-73b5b946183d",
        "destination_account_owner_name": "<string>",
        "failed": false,
        "history": [
          {
            "data": {},
            "message": "<string>",
            "timestamp": "2023-11-07T05:31:56Z"
          }
        ],
        "network_status": "POSTED",
        "original_reference_id": "<string>",
        "originating_account_id": "b01db9c7-78f2-4a99-8aca-1231d32f9b96",
        "originating_account_owner_name": "<string>",
        "posting_date": "2022-03-18",
        "reference_id": "<string>",
        "suspended": false,
        "transaction_id": "45b5246f-ad97-4629-9aac-465b74a05505"
      }
      ```
    </CodeGroup>
  </Step>
</Steps>

### **Incoming Transaction Flow**

For **Incoming SyncteraPay** (sending funds in from an external provider to a Synctera DDA via SyncteraPay), utilize the [**v2/synctera\_pay/incoming**](https://docs.synctera.com/v2/reference/createincomingsyncterapaytransfer) endpoints. This guide assumes you already have an Incoming SyncteraPay Configuration set up on your tenant, which defines the use case, subtype and Settlement DDA. For more information on configuration set up, reach out to your Implementation Manager. 

Assuming Steps 1 and 2 for Counterparty Set Up have already been completed:

<Steps>
  <Step title="Verify the funds have been sent out at the external provider">
    Ensure you have captured the network reference id of the transfer to include in the Incoming SyncteraPay call in the next step.
  </Step>

  <Step title=" Initiate the Incoming SyncteraPay Transaction">
    Call [POST /v2/synctera\_pay/incoming/transfers](https://docs.synctera.com/v2/reference/createincomingsyncterapaytransfer) with the following:

    * Set **payee\_id** to the recipient of the SyncteraPay transfer.
    * Set  **payer\_id** to the customer\_id or business\_id from Step 1.
    * Set **reference\_id** to the id associated with the external transaction from Step 3. 
    * Set **source\_external\_account\_id** to the external account id created in Step 2. 
    * Set **destination\_account\_id** to the Synctera account owned by the customer payee\_id, that the funds will be distributed to. 
    * Set **configuration\_id** to the Synctera provided id.

    ```json theme={"system"}
    //request
    {
      "amount": 2,
      "configuration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "destination_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "payee_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "payer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "reference_id": "<string>",
      "settlement_date": "2023-12-25",
      "source_external_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "external_data": {}
    }

    // response
    {
      "amount": 2,
      "configuration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "creation_time": "2010-05-06T12:23:34.321Z",
      "destination_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "last_updated_time": "2010-05-06T12:23:34.321Z",
      "payee_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "payer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "reference_id": "<string>",
      "settlement_date": "2023-12-25",
      "source_external_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "status": "CREATE_HOLD",
      "tenant": "abcdef_ghijkl",
      "external_data": {},
      "transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
    }
    ```
  </Step>
</Steps>

### Daily Bulk Settlement With Third Party Provider

At the end of the business day, or multiple times a day (depending on the Fintech/Payments provider agreement), the third-party payment provider will need to settle for the total amount of Inbound or Outbound Payments processed via SyncteraPay.

The Synctera platform can create and receive bulk wire and ach transfers to settle these payments.

The Bulk Settlement function is accessible via the Synctera UI and available to both the FinTech and Synctera Operations agents.

\*\*SyncteraPay transactions and Settlements are not allowed by default. Please contact your implementation manager to enable this capability.

**Note:** If you are using Incoming SyncteraPay and Outgoing SyncteraPay and have been approved by Synctera and your Sponsor Bank to perform end of day netting bulk transfers for SyncteraPay DDA EOD Settlement, you will need to work with your Implementation Manager to ensure the Standard Operating Procedure and methods are mutually aligned and supported.
