Strimz
API Reference

Refunds

Server-intent + wallet-signed on-chain transfer.

Create

POST /v1/refunds
{
  "transactionId": "tx_xyz",
  "amount": "50000000",
  "reason": "customer_request",
  "note": "Buyer asked for a refund"
}

Returns:

{
  "refund": {
    "id": "rf_xyz",
    "transactionId": "tx_xyz",
    "amount": "50000000",
    "status": "awaiting_signature",
    "reason": "customer_request",
    "payerAddress": "0x...",
    "createdAt": "..."
  },
  "signingInstructions": {
    "token": "0x...USDC",
    "to": "0x...payer",
    "amount": "50000000",
    "note": "Refund for transaction tx_xyz"
  }
}

Submit signature

After the merchant broadcasts the on-chain ERC-20 Transfer, record the tx hash:

POST /v1/refunds/{id}/signature
{
  "refundTxHash": "0x..."
}

Lifecycle

awaiting_signature  →  submitted  →  completed
                              ↘   failed

Re-submitting signature is idempotent. Useful if the merchant accidentally records the wrong hash and needs to update.

Validation

  • Cumulative refund amount cannot exceed Transaction.amount (across all refunds with status submitted or completed)
  • The original transaction must be in status confirmed

Webhook events

EventFires when
refund.createdThe refund row was created
refund.completedThe indexer confirmed the on-chain Transfer
refund.failedValidation rejected the refund or it was voided

On this page