diff --git a/mintlify/openapi.yaml b/mintlify/openapi.yaml index 06b0316a3..06658cda9 100644 --- a/mintlify/openapi.yaml +++ b/mintlify/openapi.yaml @@ -7830,6 +7830,38 @@ webhooks: description: Payment for services reconciliationInstructions: reference: REF-123456789 + incomingCompletedCryptoPayment: + summary: Completed payment funded from an external crypto wallet + value: + id: Webhook:019542f5-b3e7-1d02-0000-000000000009 + type: INCOMING_PAYMENT.COMPLETED + timestamp: '2025-08-15T14:32:00Z' + data: + id: Transaction:019542f5-b3e7-1d02-0000-000000000006 + status: COMPLETED + type: INCOMING + direction: CREDIT + source: + sourceType: REALTIME_FUNDING + currency: USDC + onChainTransaction: + transactionHash: 7RJWhvQBQPEjJmki5fhBboGBWRJhmcFkMvrr4Fu3tMSJ5EdynMEiYSyiWAH9GpcbHpeUzeSQF9ZY6q4x8AhBskUf + network: SOLANA + destination: + destinationType: ACCOUNT + accountId: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965 + customerId: Customer:019542f5-b3e7-1d02-0000-000000000001 + platformCustomerId: 18d3e5f7b4a9c2 + receivedAmount: + amount: 100000 + currency: + code: USDC + name: USD Coin + symbol: '' + decimals: 6 + settledAt: '2025-08-15T14:30:00Z' + createdAt: '2025-08-15T14:25:18Z' + description: USDC deposit from self-custody wallet responses: '200': description: | @@ -7957,6 +7989,47 @@ webhooks: gridApiFixedFee: 10 gridApiVariableFeeRate: 0.003 gridApiVariableFeeAmount: 30 + outgoingCompletedCryptoPayment: + summary: Completed crypto payout to an external wallet + value: + id: Webhook:019542f5-b3e7-1d02-0000-000000000008 + type: OUTGOING_PAYMENT.COMPLETED + timestamp: '2025-08-15T14:32:00Z' + data: + id: Transaction:019542f5-b3e7-1d02-0000-000000000009 + status: COMPLETED + type: OUTGOING + direction: DEBIT + source: + sourceType: ACCOUNT + accountId: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965 + destination: + destinationType: ACCOUNT + accountId: ExternalAccount:c34dcbd6-dced-4ec4-b756-3c3a9ea3d789 + onChainTransaction: + transactionHash: h82pJGF9p7kpzb6eU326EFZf2cDnimbTFVeJtx1qtBmUNJAEqN76R7PwPfHt3oWb8R6cKvhgyxQdDn53jFrK6wFx + network: SOLANA + customerId: Customer:019542f5-b3e7-1d02-0000-000000000001 + platformCustomerId: 18d3e5f7b4a9c2 + sentAmount: + amount: 100000 + currency: + code: USDC + name: USD Coin + symbol: '' + decimals: 6 + receivedAmount: + amount: 100000 + currency: + code: USDC + name: USD Coin + symbol: '' + decimals: 6 + quoteId: Quote:019542f5-b3e7-1d02-0000-000000000010 + settledAt: '2025-08-15T14:30:00Z' + createdAt: '2025-08-15T14:25:18Z' + description: USDC withdrawal to self-custody wallet + paymentInstructions: [] failedPayment: summary: Failed outgoing payment value: @@ -16950,6 +17023,31 @@ components: type: string description: Currency code for the destination example: EUR + CryptoNetwork: + type: string + enum: + - BITCOIN + - ETHEREUM + - SOLANA + - BASE + - POLYGON + - TRON + - SPARK + description: The blockchain network an on-chain transaction settled on. Whether this is the mainnet or a test network (e.g. Solana devnet) is determined by your platform's environment — sandbox platforms operate on test networks, production platforms on mainnet — mirroring how `cryptoNetwork` is interpreted elsewhere in the API. + example: SOLANA + OnChainTransaction: + type: object + required: + - transactionHash + - network + properties: + transactionHash: + type: string + description: On-chain transaction hash of the crypto transfer for this leg of the transaction. + example: h82pJGF9p7kpzb6eU326EFZf2cDnimbTFVeJtx1qtBmUNJAEqN76R7PwPfHt3oWb8R6cKvhgyxQdDn53jFrK6wFx + network: + $ref: '#/components/schemas/CryptoNetwork' + description: Blockchain network the transaction settled on (mainnet vs test network is determined by your platform environment). AccountTransactionDestination: title: Account Destination allOf: @@ -16967,6 +17065,9 @@ components: type: string description: Destination account identifier example: ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123 + onChainTransaction: + $ref: '#/components/schemas/OnChainTransaction' + description: On-chain transaction that delivered funds to this destination, when the destination is an external crypto wallet. Populated once the crypto transfer has settled. description: Destination account details UmaAddressTransactionDestination: title: UMA Address Destination @@ -17101,6 +17202,9 @@ components: type: string description: Source account identifier example: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965 + onChainTransaction: + $ref: '#/components/schemas/OnChainTransaction' + description: On-chain transaction that delivered funds from this source, when the source is an external crypto wallet. Populated once the crypto transfer has settled. description: Source account details UmaAddressTransactionSource: title: UMA Address Source @@ -17173,6 +17277,9 @@ components: type: string description: Rail-level tracking identifier for the payment, such as an ACH trace number or a wire IMAD/OMAD, useful for reconciliation. example: '021000020123456' + onChainTransaction: + $ref: '#/components/schemas/OnChainTransaction' + description: On-chain transaction that delivered the funding, when the funds arrived from an external crypto wallet. Populated once the crypto transfer has settled. description: Transaction was funded using an external funding source. All originator fields are optional and populated on a best-effort basis depending on what the funding source provides. TransactionSourceOneOf: oneOf: @@ -17188,6 +17295,7 @@ components: ReconciliationInstructions: type: object minProperties: 1 + description: Instructions for reconciling a payment with this transaction. For the on-chain transaction to or from an external crypto wallet that is the transaction's own source or destination, use the `onChainTransaction` on the relevant source or destination instead. properties: reference: type: string @@ -17195,7 +17303,7 @@ components: example: UMA-Q12345-REF transactionHash: type: string - description: Transaction hash for the crypto transfer that delivered funds to the transaction destination, when available. + description: Transaction hash of the internal settlement transfer used to deliver a UMA payment — the inter-VASP settlement leg (e.g. USDC on Solana to the receiving partner), when available. This is not a transfer to a customer's own wallet; for that, see the `onChainTransaction` on the transaction's source or destination. example: '0x9f2c6b6f4b6c8f2a8d9e0b1c2d3e4f5061728394a5b6c7d8e9f00112233445566' IncomingRateDetails: description: 'Details about the rate and fees for an incoming transaction. Note: `gridApiFixedFee` is denominated in the receiving currency, so its equivalent value in the sending currency fluctuates with the FX rate. As a result, the total fee on a subsequent quote for the same transfer may differ even if the underlying fee structure is unchanged.' @@ -17430,7 +17538,7 @@ components: example: 10 reconciliationInstructions: $ref: '#/components/schemas/ReconciliationInstructions' - description: Reconciliation details for this transaction, including crypto transaction hash when available. + description: Reconciliation details for this transaction. For the on-chain hash of a crypto payout to an external wallet, see the destination's `onChainTransaction` instead. quoteId: type: string description: The ID of the quote that was used to trigger this payment diff --git a/mintlify/snippets/receipts.mdx b/mintlify/snippets/receipts.mdx index 818199ede..d0659eaeb 100644 --- a/mintlify/snippets/receipts.mdx +++ b/mintlify/snippets/receipts.mdx @@ -197,7 +197,8 @@ Most receipt fields come directly from the [transaction object](/api-reference/t | Total to recipient | `receivedAmount.amount` + `receivedAmount.currency` | | Total transfer fees | `fees` (smallest unit of the sending currency) | | Exchange rate | `exchangeRate` | -| Transaction hash / VC address(es) | `reconciliationInstructions.transactionHash` (a dedicated transaction hash field may be exposed directly on the transaction) | +| Transaction hash | `source.onChainTransaction` / `destination.onChainTransaction` (`transactionHash` + `network`) when that side is an external crypto wallet; `reconciliationInstructions.transactionHash` carries the internal UMA settlement-leg hash | +| VC address(es) | Resolve `destination.accountId` to the external account and read the wallet address from its `accountInfo` | ## Example: send a receipt on completion diff --git a/mintlify/snippets/reconciliation/reconciliation.mdx b/mintlify/snippets/reconciliation/reconciliation.mdx index 28be2192f..f918ed2da 100644 --- a/mintlify/snippets/reconciliation/reconciliation.mdx +++ b/mintlify/snippets/reconciliation/reconciliation.mdx @@ -58,6 +58,15 @@ Sample webhook payload: } } ``` + + +When the transaction's source or destination is an external crypto wallet, that `source` / +`destination` object also includes an `onChainTransaction` (`transactionHash` + `network`, +e.g. `SOLANA`) once the crypto transfer settles — use it to match the transfer on a +block explorer. The hash can land shortly after the terminal status, so a terminal webhook +payload may not include it yet; retrieve the transaction (`GET /transactions/{id}`) to read +it once settled. + diff --git a/openapi.yaml b/openapi.yaml index 06b0316a3..06658cda9 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -7830,6 +7830,38 @@ webhooks: description: Payment for services reconciliationInstructions: reference: REF-123456789 + incomingCompletedCryptoPayment: + summary: Completed payment funded from an external crypto wallet + value: + id: Webhook:019542f5-b3e7-1d02-0000-000000000009 + type: INCOMING_PAYMENT.COMPLETED + timestamp: '2025-08-15T14:32:00Z' + data: + id: Transaction:019542f5-b3e7-1d02-0000-000000000006 + status: COMPLETED + type: INCOMING + direction: CREDIT + source: + sourceType: REALTIME_FUNDING + currency: USDC + onChainTransaction: + transactionHash: 7RJWhvQBQPEjJmki5fhBboGBWRJhmcFkMvrr4Fu3tMSJ5EdynMEiYSyiWAH9GpcbHpeUzeSQF9ZY6q4x8AhBskUf + network: SOLANA + destination: + destinationType: ACCOUNT + accountId: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965 + customerId: Customer:019542f5-b3e7-1d02-0000-000000000001 + platformCustomerId: 18d3e5f7b4a9c2 + receivedAmount: + amount: 100000 + currency: + code: USDC + name: USD Coin + symbol: '' + decimals: 6 + settledAt: '2025-08-15T14:30:00Z' + createdAt: '2025-08-15T14:25:18Z' + description: USDC deposit from self-custody wallet responses: '200': description: | @@ -7957,6 +7989,47 @@ webhooks: gridApiFixedFee: 10 gridApiVariableFeeRate: 0.003 gridApiVariableFeeAmount: 30 + outgoingCompletedCryptoPayment: + summary: Completed crypto payout to an external wallet + value: + id: Webhook:019542f5-b3e7-1d02-0000-000000000008 + type: OUTGOING_PAYMENT.COMPLETED + timestamp: '2025-08-15T14:32:00Z' + data: + id: Transaction:019542f5-b3e7-1d02-0000-000000000009 + status: COMPLETED + type: OUTGOING + direction: DEBIT + source: + sourceType: ACCOUNT + accountId: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965 + destination: + destinationType: ACCOUNT + accountId: ExternalAccount:c34dcbd6-dced-4ec4-b756-3c3a9ea3d789 + onChainTransaction: + transactionHash: h82pJGF9p7kpzb6eU326EFZf2cDnimbTFVeJtx1qtBmUNJAEqN76R7PwPfHt3oWb8R6cKvhgyxQdDn53jFrK6wFx + network: SOLANA + customerId: Customer:019542f5-b3e7-1d02-0000-000000000001 + platformCustomerId: 18d3e5f7b4a9c2 + sentAmount: + amount: 100000 + currency: + code: USDC + name: USD Coin + symbol: '' + decimals: 6 + receivedAmount: + amount: 100000 + currency: + code: USDC + name: USD Coin + symbol: '' + decimals: 6 + quoteId: Quote:019542f5-b3e7-1d02-0000-000000000010 + settledAt: '2025-08-15T14:30:00Z' + createdAt: '2025-08-15T14:25:18Z' + description: USDC withdrawal to self-custody wallet + paymentInstructions: [] failedPayment: summary: Failed outgoing payment value: @@ -16950,6 +17023,31 @@ components: type: string description: Currency code for the destination example: EUR + CryptoNetwork: + type: string + enum: + - BITCOIN + - ETHEREUM + - SOLANA + - BASE + - POLYGON + - TRON + - SPARK + description: The blockchain network an on-chain transaction settled on. Whether this is the mainnet or a test network (e.g. Solana devnet) is determined by your platform's environment — sandbox platforms operate on test networks, production platforms on mainnet — mirroring how `cryptoNetwork` is interpreted elsewhere in the API. + example: SOLANA + OnChainTransaction: + type: object + required: + - transactionHash + - network + properties: + transactionHash: + type: string + description: On-chain transaction hash of the crypto transfer for this leg of the transaction. + example: h82pJGF9p7kpzb6eU326EFZf2cDnimbTFVeJtx1qtBmUNJAEqN76R7PwPfHt3oWb8R6cKvhgyxQdDn53jFrK6wFx + network: + $ref: '#/components/schemas/CryptoNetwork' + description: Blockchain network the transaction settled on (mainnet vs test network is determined by your platform environment). AccountTransactionDestination: title: Account Destination allOf: @@ -16967,6 +17065,9 @@ components: type: string description: Destination account identifier example: ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123 + onChainTransaction: + $ref: '#/components/schemas/OnChainTransaction' + description: On-chain transaction that delivered funds to this destination, when the destination is an external crypto wallet. Populated once the crypto transfer has settled. description: Destination account details UmaAddressTransactionDestination: title: UMA Address Destination @@ -17101,6 +17202,9 @@ components: type: string description: Source account identifier example: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965 + onChainTransaction: + $ref: '#/components/schemas/OnChainTransaction' + description: On-chain transaction that delivered funds from this source, when the source is an external crypto wallet. Populated once the crypto transfer has settled. description: Source account details UmaAddressTransactionSource: title: UMA Address Source @@ -17173,6 +17277,9 @@ components: type: string description: Rail-level tracking identifier for the payment, such as an ACH trace number or a wire IMAD/OMAD, useful for reconciliation. example: '021000020123456' + onChainTransaction: + $ref: '#/components/schemas/OnChainTransaction' + description: On-chain transaction that delivered the funding, when the funds arrived from an external crypto wallet. Populated once the crypto transfer has settled. description: Transaction was funded using an external funding source. All originator fields are optional and populated on a best-effort basis depending on what the funding source provides. TransactionSourceOneOf: oneOf: @@ -17188,6 +17295,7 @@ components: ReconciliationInstructions: type: object minProperties: 1 + description: Instructions for reconciling a payment with this transaction. For the on-chain transaction to or from an external crypto wallet that is the transaction's own source or destination, use the `onChainTransaction` on the relevant source or destination instead. properties: reference: type: string @@ -17195,7 +17303,7 @@ components: example: UMA-Q12345-REF transactionHash: type: string - description: Transaction hash for the crypto transfer that delivered funds to the transaction destination, when available. + description: Transaction hash of the internal settlement transfer used to deliver a UMA payment — the inter-VASP settlement leg (e.g. USDC on Solana to the receiving partner), when available. This is not a transfer to a customer's own wallet; for that, see the `onChainTransaction` on the transaction's source or destination. example: '0x9f2c6b6f4b6c8f2a8d9e0b1c2d3e4f5061728394a5b6c7d8e9f00112233445566' IncomingRateDetails: description: 'Details about the rate and fees for an incoming transaction. Note: `gridApiFixedFee` is denominated in the receiving currency, so its equivalent value in the sending currency fluctuates with the FX rate. As a result, the total fee on a subsequent quote for the same transfer may differ even if the underlying fee structure is unchanged.' @@ -17430,7 +17538,7 @@ components: example: 10 reconciliationInstructions: $ref: '#/components/schemas/ReconciliationInstructions' - description: Reconciliation details for this transaction, including crypto transaction hash when available. + description: Reconciliation details for this transaction. For the on-chain hash of a crypto payout to an external wallet, see the destination's `onChainTransaction` instead. quoteId: type: string description: The ID of the quote that was used to trigger this payment diff --git a/openapi/components/schemas/common/ReconciliationInstructions.yaml b/openapi/components/schemas/common/ReconciliationInstructions.yaml index ee58c1e40..a52648183 100644 --- a/openapi/components/schemas/common/ReconciliationInstructions.yaml +++ b/openapi/components/schemas/common/ReconciliationInstructions.yaml @@ -1,5 +1,9 @@ type: object minProperties: 1 +description: >- + Instructions for reconciling a payment with this transaction. For the on-chain + transaction to or from an external crypto wallet that is the transaction's own source or + destination, use the `onChainTransaction` on the relevant source or destination instead. properties: reference: type: string @@ -10,6 +14,8 @@ properties: transactionHash: type: string description: >- - Transaction hash for the crypto transfer that delivered funds to the - transaction destination, when available. + Transaction hash of the internal settlement transfer used to deliver a UMA payment — + the inter-VASP settlement leg (e.g. USDC on Solana to the receiving partner), when + available. This is not a transfer to a customer's own wallet; for that, see the + `onChainTransaction` on the transaction's source or destination. example: "0x9f2c6b6f4b6c8f2a8d9e0b1c2d3e4f5061728394a5b6c7d8e9f00112233445566" diff --git a/openapi/components/schemas/crypto/CryptoNetwork.yaml b/openapi/components/schemas/crypto/CryptoNetwork.yaml new file mode 100644 index 000000000..8ea3884d6 --- /dev/null +++ b/openapi/components/schemas/crypto/CryptoNetwork.yaml @@ -0,0 +1,15 @@ +type: string +enum: + - BITCOIN + - ETHEREUM + - SOLANA + - BASE + - POLYGON + - TRON + - SPARK +description: >- + The blockchain network an on-chain transaction settled on. Whether this is the + mainnet or a test network (e.g. Solana devnet) is determined by your platform's + environment — sandbox platforms operate on test networks, production platforms on + mainnet — mirroring how `cryptoNetwork` is interpreted elsewhere in the API. +example: SOLANA diff --git a/openapi/components/schemas/transactions/AccountTransactionDestination.yaml b/openapi/components/schemas/transactions/AccountTransactionDestination.yaml index 1e85b52e9..12a9984e7 100644 --- a/openapi/components/schemas/transactions/AccountTransactionDestination.yaml +++ b/openapi/components/schemas/transactions/AccountTransactionDestination.yaml @@ -14,4 +14,9 @@ allOf: type: string description: Destination account identifier example: ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123 + onChainTransaction: + $ref: ./OnChainTransaction.yaml + description: >- + On-chain transaction that delivered funds to this destination, when the destination + is an external crypto wallet. Populated once the crypto transfer has settled. description: Destination account details diff --git a/openapi/components/schemas/transactions/AccountTransactionSource.yaml b/openapi/components/schemas/transactions/AccountTransactionSource.yaml index f3a05e2a9..98fde70a6 100644 --- a/openapi/components/schemas/transactions/AccountTransactionSource.yaml +++ b/openapi/components/schemas/transactions/AccountTransactionSource.yaml @@ -14,4 +14,9 @@ allOf: type: string description: Source account identifier example: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965 + onChainTransaction: + $ref: ./OnChainTransaction.yaml + description: >- + On-chain transaction that delivered funds from this source, when the source is an + external crypto wallet. Populated once the crypto transfer has settled. description: Source account details diff --git a/openapi/components/schemas/transactions/OnChainTransaction.yaml b/openapi/components/schemas/transactions/OnChainTransaction.yaml new file mode 100644 index 000000000..12eeb5ea7 --- /dev/null +++ b/openapi/components/schemas/transactions/OnChainTransaction.yaml @@ -0,0 +1,12 @@ +type: object +required: + - transactionHash + - network +properties: + transactionHash: + type: string + description: On-chain transaction hash of the crypto transfer for this leg of the transaction. + example: 'h82pJGF9p7kpzb6eU326EFZf2cDnimbTFVeJtx1qtBmUNJAEqN76R7PwPfHt3oWb8R6cKvhgyxQdDn53jFrK6wFx' + network: + $ref: ../crypto/CryptoNetwork.yaml + description: Blockchain network the transaction settled on (mainnet vs test network is determined by your platform environment). diff --git a/openapi/components/schemas/transactions/OutgoingTransaction.yaml b/openapi/components/schemas/transactions/OutgoingTransaction.yaml index b6ff7eb16..4862163c5 100644 --- a/openapi/components/schemas/transactions/OutgoingTransaction.yaml +++ b/openapi/components/schemas/transactions/OutgoingTransaction.yaml @@ -37,8 +37,8 @@ allOf: reconciliationInstructions: $ref: ../common/ReconciliationInstructions.yaml description: >- - Reconciliation details for this transaction, including crypto - transaction hash when available. + Reconciliation details for this transaction. For the on-chain hash of a crypto + payout to an external wallet, see the destination's `onChainTransaction` instead. quoteId: type: string description: The ID of the quote that was used to trigger this payment diff --git a/openapi/components/schemas/transactions/RealtimeFundingTransactionSource.yaml b/openapi/components/schemas/transactions/RealtimeFundingTransactionSource.yaml index 8afbf9562..256f106a5 100644 --- a/openapi/components/schemas/transactions/RealtimeFundingTransactionSource.yaml +++ b/openapi/components/schemas/transactions/RealtimeFundingTransactionSource.yaml @@ -60,6 +60,11 @@ allOf: Rail-level tracking identifier for the payment, such as an ACH trace number or a wire IMAD/OMAD, useful for reconciliation. example: '021000020123456' + onChainTransaction: + $ref: ./OnChainTransaction.yaml + description: >- + On-chain transaction that delivered the funding, when the funds arrived from an + external crypto wallet. Populated once the crypto transfer has settled. description: >- Transaction was funded using an external funding source. All originator fields are optional and populated on a best-effort basis depending on what diff --git a/openapi/webhooks/incoming-payment.yaml b/openapi/webhooks/incoming-payment.yaml index 2127d1ad3..8079a41f7 100644 --- a/openapi/webhooks/incoming-payment.yaml +++ b/openapi/webhooks/incoming-payment.yaml @@ -133,6 +133,38 @@ post: description: Payment for services reconciliationInstructions: reference: REF-123456789 + incomingCompletedCryptoPayment: + summary: Completed payment funded from an external crypto wallet + value: + id: Webhook:019542f5-b3e7-1d02-0000-000000000009 + type: INCOMING_PAYMENT.COMPLETED + timestamp: '2025-08-15T14:32:00Z' + data: + id: Transaction:019542f5-b3e7-1d02-0000-000000000006 + status: COMPLETED + type: INCOMING + direction: CREDIT + source: + sourceType: REALTIME_FUNDING + currency: USDC + onChainTransaction: + transactionHash: 7RJWhvQBQPEjJmki5fhBboGBWRJhmcFkMvrr4Fu3tMSJ5EdynMEiYSyiWAH9GpcbHpeUzeSQF9ZY6q4x8AhBskUf + network: SOLANA + destination: + destinationType: ACCOUNT + accountId: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965 + customerId: Customer:019542f5-b3e7-1d02-0000-000000000001 + platformCustomerId: 18d3e5f7b4a9c2 + receivedAmount: + amount: 100000 + currency: + code: USDC + name: USD Coin + symbol: '' + decimals: 6 + settledAt: '2025-08-15T14:30:00Z' + createdAt: '2025-08-15T14:25:18Z' + description: USDC deposit from self-custody wallet responses: '200': description: > diff --git a/openapi/webhooks/outgoing-payment.yaml b/openapi/webhooks/outgoing-payment.yaml index 2be94b05c..219a17db2 100644 --- a/openapi/webhooks/outgoing-payment.yaml +++ b/openapi/webhooks/outgoing-payment.yaml @@ -88,6 +88,47 @@ post: gridApiFixedFee: 10 gridApiVariableFeeRate: 0.003 gridApiVariableFeeAmount: 30 + outgoingCompletedCryptoPayment: + summary: Completed crypto payout to an external wallet + value: + id: Webhook:019542f5-b3e7-1d02-0000-000000000008 + type: OUTGOING_PAYMENT.COMPLETED + timestamp: '2025-08-15T14:32:00Z' + data: + id: Transaction:019542f5-b3e7-1d02-0000-000000000009 + status: COMPLETED + type: OUTGOING + direction: DEBIT + source: + sourceType: ACCOUNT + accountId: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965 + destination: + destinationType: ACCOUNT + accountId: ExternalAccount:c34dcbd6-dced-4ec4-b756-3c3a9ea3d789 + onChainTransaction: + transactionHash: h82pJGF9p7kpzb6eU326EFZf2cDnimbTFVeJtx1qtBmUNJAEqN76R7PwPfHt3oWb8R6cKvhgyxQdDn53jFrK6wFx + network: SOLANA + customerId: Customer:019542f5-b3e7-1d02-0000-000000000001 + platformCustomerId: 18d3e5f7b4a9c2 + sentAmount: + amount: 100000 + currency: + code: USDC + name: USD Coin + symbol: '' + decimals: 6 + receivedAmount: + amount: 100000 + currency: + code: USDC + name: USD Coin + symbol: '' + decimals: 6 + quoteId: Quote:019542f5-b3e7-1d02-0000-000000000010 + settledAt: '2025-08-15T14:30:00Z' + createdAt: '2025-08-15T14:25:18Z' + description: USDC withdrawal to self-custody wallet + paymentInstructions: [] failedPayment: summary: Failed outgoing payment value: