Skip to main content
POST
/
transactions
Execute a transaction (send)
curl --request POST \
  --url https://sandbox-api.polygon.technology/v0.9/transactions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '
{
  "quoteId": "<string>",
  "deviceFingerprint": "<string>",
  "metadata": {},
  "partnerTransactionId": 123,
  "paymentMethodId": "<string>",
  "sourceWalletAddress": "<string>",
  "tags": "<string>",
  "webSessionId": "<string>"
}
'
{
  "cashInId": "<string>",
  "cashPickup": {
    "amount": "<string>",
    "asset": "<string>",
    "cashCode": "<string>",
    "expiresAt": "2023-11-07T05:31:56Z",
    "instructions": "<string>",
    "location": {
      "address": "<string>",
      "city": "<string>",
      "coordinates": {
        "latitude": 123,
        "longitude": 123
      },
      "country": "<string>",
      "name": "<string>",
      "provider": "<string>",
      "state": "<string>",
      "zipCode": "<string>"
    },
    "phoneRequired": true
  },
  "completedAt": "2023-11-07T05:31:56Z",
  "createdAt": "2023-11-07T05:31:56Z",
  "depositAddressId": "<string>",
  "depositInstructions": {
    "address": "<string>",
    "asset": "<string>",
    "exactAmount": "<string>",
    "expiresAt": "2023-11-07T05:31:56Z",
    "network": "<string>"
  },
  "destination": {
    "amountGross": "<string>",
    "amountNet": "<string>",
    "asset": "<string>",
    "bankDetails": {},
    "cash": {
      "locationId": "<string>",
      "locationReference": "<string>"
    },
    "externalAccountId": "<string>",
    "feesDeducted": {
      "developer": "<string>",
      "gas": "<string>",
      "oms": "<string>",
      "total": "<string>"
    },
    "network": "<string>",
    "owner": {
      "address": {
        "city": "<string>",
        "country": "<string>",
        "line1": "<string>",
        "line2": "<string>",
        "state": "<string>",
        "zipCode": "<string>"
      },
      "dateOfBirth": "2023-12-25",
      "email": "<string>",
      "name": "<string>",
      "nationality": "<string>",
      "phone": "<string>",
      "taxId": "<string>"
    },
    "txHash": "<string>",
    "wallet": {
      "blockchainAddress": "<string>",
      "externalAccountId": "<string>",
      "walletId": "<string>"
    }
  },
  "error": {
    "code": "<string>",
    "message": "<string>",
    "occurredAt": "2023-11-07T05:31:56Z",
    "recoverable": true,
    "refund": {
      "amount": "<string>",
      "asset": "<string>",
      "destinationWalletId": "<string>",
      "network": "<string>",
      "txHash": "<string>"
    }
  },
  "estimatedArrival": "2023-11-07T05:31:56Z",
  "expiresAt": "2023-11-07T05:31:56Z",
  "id": "<string>",
  "metadata": {},
  "quoteId": "<string>",
  "rail": "<string>",
  "rates": {
    "effectiveRate": "<string>",
    "exchangeRate": "<string>",
    "pair": "<string>"
  },
  "recipientCustomerId": "<string>",
  "senderCustomerId": "<string>",
  "source": {
    "amountGross": "<string>",
    "amountNet": "<string>",
    "asset": "<string>",
    "externalAccountId": "<string>",
    "feesDeducted": {
      "developer": "<string>",
      "gas": "<string>",
      "oms": "<string>",
      "total": "<string>"
    },
    "network": "<string>",
    "owner": {
      "address": {
        "city": "<string>",
        "country": "<string>",
        "line1": "<string>",
        "line2": "<string>",
        "state": "<string>",
        "zipCode": "<string>"
      },
      "dateOfBirth": "2023-12-25",
      "email": "<string>",
      "name": "<string>",
      "nationality": "<string>",
      "phone": "<string>",
      "taxId": "<string>"
    },
    "txHash": "<string>",
    "walletId": "<string>"
  },
  "sponsorGas": true,
  "sponsorGasCost": "<string>",
  "subStatus": "<string>",
  "updatedAt": "2023-11-07T05:31:56Z",
  "virtualAccountId": "<string>"
}

Authorizations

Authorization
string
header
required

Token from POST /auth/token

Headers

Idempotency-Key
string
required

Required on POST and PUT requests. Use a unique value per logical mutation attempt, for example a UUID.

Body

application/json

Request body for executing a transaction. References the quote to accept; the remaining fields are optional routing hints and metadata.

quoteId
string
required
deviceFingerprint
string
externalCustodyCreditInfo
object

Destination details for crediting funds to a wallet held in external custody.

metadata
object
partnerTransactionId
integer<int32>
paymentMethodId
string
sourceWalletAddress
string
tags
string
webSessionId
string

Response

The request has succeeded and a new resource has been created as a result.

A single movement of money from a source to a destination. Created by accepting a quote, or generated automatically by a deposit address, virtual account, or cash-in. Track its progress with status.

cashInId
string
cashPickup
object

Details for collecting a cash payout: the pickup code, amount, and location.

completedAt
string<date-time>

When the transaction reached a terminal completed state. Absent until completion; distinct from updatedAt.

createdAt
string<date-time>
depositAddressId
string
depositInstructions
object

On-chain instructions for funding a transaction: the address, asset, network, and exact amount to send.

destination
object

The destination side of a transaction: where funds are delivered, with the amounts and fees on that side.

error
object

Details of an asynchronous failure, such as a transaction or webhook that failed after the initial request succeeded. Present only once a failure has occurred.

estimatedArrival
string<date-time>
expiresAt
string<date-time>
fixedAmountSide
enum<string>
Available options:
source,
destination
id
string
metadata
object
object
enum<string>
Available options:
transaction
quoteId
string
rail
string

Payment rail for this leg: e.g. "wire", "international_wire", "ach", "crypto". Lets clients label the rail without re-deriving it from other fields.

rates
object

Exchange and effective rates.

recipientCustomerId
string

Recipient customer when resolvable: internal dest wallet's owner, or the sender for cash/fiat rails. Absent for external blockchain destinations.

role
enum<string>

Present only when the request supplies customer context; see CustomerRole.

Available options:
sender,
recipient,
both
senderCustomerId
string

Sender customer (the quote owner). OMSX customer TypeID (cst_…).

source
object

The source side of a transaction: where funds are pulled from, with the amounts and fees on that side.

sponsorGas
boolean
sponsorGasCost
string

USD cost of gas absorbed by the developer when sponsoring gas. Always "0" in alpha - gas is sponsored. Spec § 4.1.

status
enum<string>

Lifecycle of a transaction. processing: funds in motion. completed: delivered. failed: terminal failure. cashPickupReady: a cash pickup code is ready to collect.

Available options:
processing,
completed,
failed,
cashPickupReady
subStatus
string
type
enum<string>

Direction of value across rails: cryptoToCrypto, fiatToCrypto, or cryptoToFiat.

Available options:
cryptoToCrypto,
fiatToCrypto,
cryptoToFiat
updatedAt
string<date-time>
virtualAccountId
string