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.

This site is for informational purposes only and does not constitute an offer to sell, or the solicitation of an offer to buy, any security. The Goldman Sachs Marquee® platform is for institutional and professional clients only. Some of the services and products described on this site may not be available in certain jurisdictions or to certain types of client. Please contact your Goldman Sachs sales representative with any questions. Nothing on this site constitutes an offer, or an invitation to make an offer from Goldman Sachs to purchase or sell a product. This site is given for purely indicative purposes and does not create any contractual relationship between you and Goldman Sachs. Any market information contained on the site (including but not limited to pricing levels) is based on data available to Goldman Sachs at a given moment and may change from time to time. 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. © 2023 Goldman Sachs. All rights reserved.
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. © 2023 Goldman Sachs. All rights reserved.
Not all products and functionality mentioned on this website are currently available through our API platform.
All loans and deposit products are provided by Goldman Sachs Bank USA, Salt Lake City Branch. Member FDIC.
Brokerage and investment advisory services offered by our investment products are provided by Goldman Sachs & Co. LLC (`‘GS&CO.`’), which is an SEC registered broker-dealer and investment adviser, and member FINRA/SIPC. Research our firm at FINRA's BrokerCheck. Custody and clearing services are provided by Apex Clearing Corporation, a registered broker-dealer and member FINRA/SIPC. Please consider your objectives before investing. A diversified portfolio does not ensure a profit or protect against a loss. Past performance does not guarantee future results. Investment outcomes and projections are forward-looking statements and hypothetical in nature. Neither this website nor any of its contents shall constitute an offer, solicitation, or advice to buy or sell securities in any jurisdictions where GS&Co. is not registered. Any information provided prior to opening an investment account is on the basis that it will not constitute investment advice and that GS&Co. is not a fiduciary to any person by reason of providing such information. For more information about our investment offerings, visit our Full Disclosures.
Investment products are: NOT FDIC INSURED ∙ NOT A DEPOSIT OR OTHER OBLIGATION OF, OR GUARANTEED BY, GOLDMAN SACHS BANK USA ∙ SUBJECT TO INVESTMENT RISKS, INCLUDING POSSIBLE LOSS OF THE PRINCIPAL AMOUNT INVESTED