menu

Executable Rates Guide

TxB APIs allows TxB clients to make FX payments as described on the Make a Payment Guide. Additionally, this guide describes how to lock in an exchange rate before actually sending the payment. This can be useful if you want to display a proposed FX rate to your customer before committing them to accepting the rate, or do a bulk purchase of your FX that can be allocated to multiple underlying payments. All exchange rates described below are spot transactions (T+2). Rates are only available during market opening and are valid for 90 seconds.

Step by Step Guide

Step 1 - Create an exchange rate quote

First, create a quote. This quote is real-time (it changes throughout the day) and includes all relevant FX fees that you have agreed with TxB. The payment using the FX will likely generate additional fees When creating a quote, you must specify the payment amount, which is the amount of the currency you want to send as payment.

To create a quote, POST /v2/exchangeRates/quotes with the following payload:

{
  "fxTrade": {
    "paymentCurrency": "EUR", // The currency you want to convert to
    "sourceCurrency": "USD", // The currency you will convert from
    "paymentAmount": 1000
  },
  "liquidityTiming": {
    "tenor": "90_SECONDS"
  }
}

Returns this response:

{
    "quoteId": "Q7471",
    "tradeId": null,
    "status": "QUOTED",
    "relatedEntityId": null,
    "expirationTime": "2023-02-21T20:46:23.162Z",
    "liquidityTiming": {
        "settlementDate": null,
        "tenor": "90_SECONDS"
    },
    "fxTrade": {
        "paymentAmount": 1000.00,
        "paymentCurrency": "EUR",
        "sourceCurrency": "USD",
        "sourceAmount": 1066.29,
        "fxRate": 1.06628522,
        "fxTimeStamp": null
    },
    "fxTradeUsage": null,
    "fxQuoteUsage": null
}

Step 2 - Decide whether to accept the rate

Now that you created a quote, you can:

  1. Book a trade against the quote by accepting it within 90 seconds
  2. Walk away and leave the quote to expire
  3. Request a new quote

If you decide to accept the quote, you have up to 2 business days to make a payment(s) on that trade.

To accept the quote, POST /v2/exchangeRates/quotes/accept

{
  "quoteId": "Q7471"
}

Returns this response:

{
    "quoteId": "Q7471",
    "tradeId": "271130",
    "status": "TRADED",
    "relatedEntityId": null,
    "expirationTime": null,
    "liquidityTiming": {
        "settlementDate":2023-02-23,
        "tenor": null
   },
    "fxTrade": {
        "paymentAmount": 1000.00,
        "paymentCurrency": "EUR",
        "sourceCurrency": "USD",
        "sourceAmount": 1066.29,
        "fxRate": 1.06628500,
        "fxTimeStamp": null
    },
    "fxTradeUsage": {
        "paymentAmountAvailable": 1000.00,
        "sourceAmountAvailable": 1066.29,
        "linkedPaymentEndToEndIds": null
    },
    "fxQuoteUsage": null
}

At this point, the currency is now TRADED. Canceling the trade would involve booking an equal and opposite trade which may create a financial loss if rates have changed in an unfavorable direction.


Step 3 - View the current status of the quote or trade

Use this API to get information about your trade. This API will help you know the details of your trade, including trade status, how much of your trade has been utilized and what payments are associated with it. It will help you ensure that the data you cache in your system about your trade is always accurate.

Request quote details by: POST /v2/exchangeRates/quotes/status

{
  "idType": "TRADEID",
  "idValue": "271130"
} 

Returns this response:

{
    "quoteId": "Q7471",
    "tradeId": "271130",
    "status": "TRADED",
    "relatedEntityId": null,
    "expirationTime": null,
    "liquidityTiming": {
        "settlementDate":2023-02-23,
        "tenor": null
   },
    "fxTrade": {
        "paymentAmount": 1000.00,
        "paymentCurrency": "EUR",
        "sourceCurrency": "USD",
        "sourceAmount": 1066.29,
        "fxRate": 1.06628500,
        "fxTimeStamp": null
    },
    "fxTradeUsage": {
        "paymentAmountAvailable": 1000.00,
        "sourceAmountAvailable": 1066.29,
        "linkedPaymentEndToEndIds": []
    },
    "fxQuoteUsage": null
}

Step 4 - Use your currency

You have two business days to use your newly purchased currency to make a payment.
You can use the entire amount in one payment or divide it across multiple payments. Any currency that is unused after two days will be unwound. An unwind may create a financial loss if rates have changed in an unfavorable direction.

To make a payment, include the tradeId in your request. Your payment amount should not exceed the total trade amount.

To initiate your payment, POST /v2/payments/payouts

{
    "paymentRequestId": "US_004535424",
    "requestLevel": {
        "fundingSource": {
            "fundingAccount": {
                "accountInfo": {
                    "accountHolderName": "Client11",
                    "accountIdentifier": {
                        "accountNumber": "290000069300"
                    },
                    "bankIdentifier": {
                        "bic": "GSCRUS30XXX"
                    }
                }
            },
            "fundingCurrency": "USD"
        },
        "routingPreferences": {
            "paymentTypePreference": "WIRE"
        }
    },
    "payouts": [
        {
            "paymentEndToEndId": "EUR_031434",
            "corePayoutInfo": {
                "requestedPaymentDate": "2023-02-21",
                "paymentCurrency": "EUR",
                "amount": 100.00,
                "payeeAccount": {
                    "accountInfo": {
                        "accountHolderName": "Creditor Acc",
                        "accountIdentifier": {
                            "iban": "GB46BUKB20041538290008"
                        },
                        "bankIdentifier": {
                            "bic": "BUKBGB22"
                        },
                        "address": {
                            "addressLines": [
                                "15",
                                "Broad Avenue"
                            ],
                            "city": "Amsterdam",
                            "countryISOCode": "NL",
                            "postalCode": "1011 AA"
                        }
                    }
                },
                "messagesFromOriginator": {
                    "paymentPurpose": "WIRE TEST-EUR",
                    "remittanceInfo": {
                        "unstructuredRemittance": [
                            "WIRE TEST-EUR"
                        ]
                    }
                }
            },
            "routingSpecificPayoutInfo": {
                "wirePayoutLevel": {
                    "chargeBearer": "SLEV"
                }
            },
            "otherPayoutInfo": {
                "fxPayoutLevel": {
                    "amountType": "PAYMENT",
                    "tradeId": "271130"
                }
            }
        }
    ]
}

For a successful payment request, you will get the response:

{
    "paymentRequestId": "004535424",
    "collectionRequestId": null,
    "requestStatus": "ACCEPTED",
    "message": null
}

Once you’ve initiated a payment, review the status of your trade again to see how much currency you have left to use. Use POST /v2/exchangeRates/quotes/status as mentioned in Step 3 above to get the Trade details.

Frequently Asked Questions

QuestionAnswer
When I accept my quote, the status shows PENDING, not QUOTED. How come?If you receive the status PENDING, poll the Get Trade details API from Step 3 (POST /v2/exchangeRates/quotes/status) until status shows TRADED.
PENDING status simply means that we haven’t booked the trade yet.
Is there a separate payment date?Once you accept a quote and receive a Trade Id, you have 2 business days to instruct payments. This deadline is expressed as settlementDate in your quote acceptance response.
Is there a difference between payment value date and deal settlement date?The payment date is when the payment is settled. The deal settlement date is the date by which you should initiate the payment. Payments can be made up to T+2 days once you accept a quote.
What happens when the settlementDate is passed and no payments are sent?You have up to T+2 to instruct payments using POST /v2/payments/payouts from Step 4. Once T+2 has passed, our Operations team will initiate an unwind process with you. This is a manual process that we will manage and support you through. However, these breaks are not common.
Can you support weekend trading?Currently, we do not support presenting quotes over the weekend. Our executable rates product is only available during open market hours. Any trade submitted after 5pm ET on Friday will be rejected. Please discuss extending the offering to weekends with your TxB representative. We offer a held rates product which will allow you to provide quotes over the weekend.
Can I use the same trade across multiple unassociated legal entities?We do not support settlement across multiple entities. We currently only support settlement for a single client, within a single branch.

Certain solutions and Institutional Services described herein are provided via our Marquee platform. The Marquee platform is for institutional and professional clients only. This site is for informational purposes only and does not constitute an offer to provide the Marquee platform services described, nor an offer to sell, or the solicitation of an offer to buy, any security. Some of the services and products described herein may not be available in certain jurisdictions or to certain types of clients. Please contact your Goldman Sachs sales representative with any questions. Any data or market information presented on the site is solely for illustrative purposes. There is no representation that any transaction can or could have been effected on such terms or at such prices. Please see https://www.goldmansachs.com/disclaimer/sec-div-disclaimers-for-electronic-comms.html for additional information.
Transaction Banking services are offered by Goldman Sachs Bank USA (“GS Bank”). GS Bank is a New York State chartered bank, a member of the Federal Reserve System and a Member FDIC.
GS DAP™ is owned and operated by Goldman Sachs. This site is for informational purposes only and does not constitute an offer to provide, or the solicitation of an offer to provide access to or use of GS DAP™. Any subsequent commitment by Goldman Sachs to provide access to and / or use of GS DAP™ would be subject to various conditions, including, amongst others, (i) satisfactory determination and legal review of the structure of any potential product or activity, (ii) receipt of all internal and external approvals (including potentially regulatory approvals); (iii) execution of any relevant documentation in a form satisfactory to Goldman Sachs; and (iv) completion of any relevant system / technology / platform build or adaptation required or desired to support the structure of any potential product or activity.
Mosaic is a service mark of Goldman Sachs & Co. LLC. This service is made available in the United States by Goldman Sachs & Co. LLC and outside of the United States by Goldman Sachs International, or its local affiliates in accordance with applicable law and regulations. Goldman Sachs International and Goldman Sachs & Co. LLC are the distributors of the Goldman Sachs Funds. Depending upon the jurisdiction in which you are located, transactions in non-Goldman Sachs money market funds are affected by either Goldman Sachs & Co. LLC, a member of FINRA, SIPC and NYSE, or Goldman Sachs International. For additional information contact your Goldman Sachs representative. Goldman Sachs & Co. LLC, Goldman Sachs International, Goldman Sachs Liquidity Solutions, Goldman Sachs Asset Management, L.P., and the Goldman Sachs funds available through Goldman Sachs Liquidity Solutions and other affiliated entities, are under the common control of the Goldman Sachs Group, Inc.
© 2024 Goldman Sachs. All rights reserved.