Grain · Schema
AcceptOfflineDualHedgeProposalRequestBody
The payload required in order to accept an offline rate proposal and book the dual hedge.
FintechPaymentsCurrencyAPIEmbedded
Properties
| Name | Type | Description |
|---|---|---|
| revision | number | The id of the revision that defines the accepted rate for the currency-pair and tenor. |
| fromCurrency | object | The currency in which the transaction should be paid by your customer. |
| toCurrency | object | The currency you want to buy. |
| customerToCurrencyAmount | number | The amount to hedge in the toCurrency for the customer. |
| vendorToCurrencyAmount | number | The amount to hedge in the toCurrency for the vendor. |
| customerEndAt | string | The date in which the customer hedge will be settled, denoted in `YYYY-MM-DD` format. |
| vendorEndAt | string | The date in which the vendor hedge will be settled, denoted in `YYYY-MM-DD` format. |
| rate | number | Represents the offline hedge rate determined by a two-dimensional lookup based on the vendor and customer tenors. **Calculating Tenors:** Tenors are calculated from the calendar-day difference between |
| externalTransactionId | string | The transaction id, as identified within your system. |
| extraFields | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/grainfinance-co/main/json-schema/grainfinance-co-accept-offline-dual-hedge-proposal-request-body-schema.json",
"title": "AcceptOfflineDualHedgeProposalRequestBody",
"description": "The payload required in order to accept an offline rate proposal and book the dual hedge.",
"x-generated": "2026-10-25",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/grainfinance-co-openapi.yaml#/components/schemas/AcceptOfflineDualHedgeProposalRequestBody",
"properties": {
"revision": {
"type": "number",
"format": "double",
"description": "The id of the revision that defines the accepted rate for the currency-pair and tenor."
},
"fromCurrency": {
"$ref": "#/$defs/CurrencyCode",
"description": "The currency in which the transaction should be paid by your customer."
},
"toCurrency": {
"$ref": "#/$defs/CurrencyCode",
"description": "The currency you want to buy."
},
"customerToCurrencyAmount": {
"type": "number",
"format": "double",
"description": "The amount to hedge in the toCurrency for the customer."
},
"vendorToCurrencyAmount": {
"type": "number",
"format": "double",
"description": "The amount to hedge in the toCurrency for the vendor."
},
"customerEndAt": {
"type": "string",
"description": "The date in which the customer hedge will be settled, denoted in `YYYY-MM-DD` format."
},
"vendorEndAt": {
"type": "string",
"description": "The date in which the vendor hedge will be settled, denoted in `YYYY-MM-DD` format."
},
"rate": {
"type": "number",
"format": "double",
"description": "Represents the offline hedge rate determined by a two-dimensional lookup based on the vendor and customer tenors.\n\n**Calculating Tenors:**\n\nTenors are calculated from the calendar-day difference between the tenorCalculationDate and the vendor/customer end dates, then mapped into the nearest supported tenor bucket:\n\n-\n- > 0 and ≤ 7 calendar days → 7-day tenor\n- > 7 and ≤ 14 calendar days → 14-day tenor\n- > 14 and ≤ 30 calendar days → 30-day tenor\n- > 30 and ≤ 60 calendar days → 60-day tenor\n- > 60 and ≤ 90 calendar days → 90-day tenor\n- … continues in similar ranges up to 720 days\n\n**Note:** All calendar days count — weekends and holidays included.\n\n**Rate Lookup Example:**\n\nThe rate is retrieved from a two-dimensional map using both tenors:\n```\n\"USDMXN\": {\n \"7\": { \"7\": 1.1 },\n \"14\": { \"7\": 1.2, \"14\": 1.3 },\n \"30\": { \"7\": 1.1, \"14\": 1.1, \"30\": 1.1 },\n // ... and so on\n}\n```\n\nIn this example, if the vendor tenor is 14 days and the customer tenor is 7 days, the rate would be 1.2.\n\nTo calculate the difference in calendar days accurately, we recommend using a date manipulation library, such as date-fns and its `differenceInCalendarDays` function, or a similar feature provided by other date libraries."
},
"externalTransactionId": {
"type": "string",
"description": "The transaction id, as identified within your system."
},
"extraFields": {
"$ref": "#/$defs/ExtraFieldsParam"
}
},
"required": [
"revision",
"fromCurrency",
"toCurrency",
"customerToCurrencyAmount",
"vendorToCurrencyAmount",
"customerEndAt",
"vendorEndAt",
"rate",
"externalTransactionId"
],
"type": "object",
"additionalProperties": false,
"$defs": {
"CurrencyCode": {
"type": "string",
"description": "The alpha-3 ISO 4217 currency code of the related entity, in upper case.",
"pattern": "^[A-Z]{3}$"
},
"ExtraFieldsParam": {
"properties": {},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number",
"format": "double"
},
{
"type": "boolean"
}
]
},
"type": "object",
"description": "Additional fields that provide further details about the transaction.\nThese fields should be specified as a valid JSON object."
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/grainfinance-co-accept-offline-dual-hedge-proposal-request-body"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.