Static Memos are long-lived deposit instructions that accept fiat funds through wire and ACH push and send funds to the configured destination wallet. The same Static Memo can receive both wires and ACH pushes interchangeably.
Don’t forget thedeposit_message !For Static Memos, it is very important that the customer includes the deposit_message when they send funds. Failure to include the deposit_message will result in a significant delay in processing or a return of the funds.

Create a Static Memo

Request
curl --location --request POST 'https://api.bridge.xyz/v0/customers/cust_alice/static_memos' \
--header 'Content-Type: application/json' \
--header 'Api-Key: <Api-Key>' \
--header 'Idempotency-Key: <Unique Idempotency Key>' \
--data-raw '{
  "source": {
    "currency": "usd",
    "payment_rail": "wire",
  },
  "destination": {
    "payment_rail": "ethereum",
    "currency": "usdc",
    "address": "0xDEADBEEF"
  },
 "developer_fee_percent": "1.0" // 1%. This is optional and defaults to 0 if not set
}'
The response will contain deposit instructions for your customer to send funds to Bridge.
Response
{
  "id": "static_memo_alice_123",
  "status": "activated",
  "developer_fee_percent": "1.0",
  "customer_id": "cust_alice",
  "source_deposit_instructions": {
    "bank_name": "Lead Bank",
    "bank_address": "1801 Main St., Kansas City, MO 64108",
    "bank_beneficiary_name": "Bridge Ventures Inc",
    "bank_account_number": "123456789",
    "bank_routing_number": "87654321",
    "currency": "usd",
    "deposit_message": "EXAMPLE_MEMO_MESSAGE",
  },
  "destination": {
    "payment_rail": "ethereum",
    "currency": "usdc",
    "address": "0xdeadbeef"
  }
}

Optional Blockchain memo

For memo-based blockchains such as Stellar, you may include an optional blockchain_memo in the destination field. Bridge will forward the memo when sending crypto funds.
Request
curl --location --request POST 'https://api.bridge.xyz/v0/customers/cust_alice/static_memos' \
--header 'Content-Type: application/json' \
--header 'Api-Key: <Api-Key>' \
--header 'Idempotency-Key: <Unique Idempotency Key>' \
--data-raw '{
  "source": {
    "currency": "usd",
    "payment_rail": "wire"
  },
  "destination": {
    "payment_rail": "stellar",
    "currency": "usdc",
    "address": "STELLARADDRESS",
    "blockchain_memo": "STELLARBLOCKCHAINMEMO"
  }
}'

Listing Static Memos for a Customer

Example request to retrieve the Static Memos that exist for a customer:
Request
curl --request GET \
     --url 'https://api.bridge.xyz/v0/customers/cust_123/static_memos' \
     --header 'Api-Key: <Api-Key>' \
     --header 'accept: application/json'	
Response
{
  "count": 2,
  "data": [
    {
      "id": "static_memo_123",
      "status": "activated",
      "developer_fee_percent": "0.10",
      "customer_id": "cust_alice",
      "source_deposit_instructions": {
        "bank_name": "Lead Bank",
        "bank_address": "1801 Main St., Kansas City, MO 64108",
        "bank_beneficiary_name": "Bridge Ventures Inc",
        "bank_account_number": "123456789",
        "bank_routing_number": "87654321",
        "currency": "usd",
        "deposit_message": "EXAMPLE_MEMO_MESSAGE",
      },
      "destination": {
        "payment_rail": "ethereum",
        "currency": "usdc",
        "address": "0xdeadbeef"
      }
    },
   {
      "id": "static_memo_alice_456",
      "status": "activated",
      "developer_fee_percent": "0.0",
      "customer_id": "cust_alice",
      "source_deposit_instructions": {
        "bank_name": "Lead Bank",
        "bank_address": "1801 Main St., Kansas City, MO 64108",
        "bank_beneficiary_name": "Bridge Ventures Inc",
        "bank_account_number": "123456789",
        "bank_routing_number": "87654321",
        "currency": "usd",
        "deposit_message": "EXAMPLE_MEMO_MESSAGE",
      },
      "destination": {
        "payment_rail": "stellar",
        "currency": "usdc",
        "address": "STELLARADDRESS",
        "blockchain_memo": "STELLARBLOCKCHAINMEMO"
      }
    } 
  ]
}

Update a Static Memo

Update the destination details for an existing Static Memo. Future transactions will use the updated destination details. All fields in this request are optional. Updating a Static Memo will also create an account_update event in the history for that account.
Request
curl --location --request PUT 'https://api.bridge.xyz/v0/customers/cust_alice/static_memos/sm_123' \
  --header 'Content-Type: application/json' \
  --header 'Api-Key: <Api-Key>' \
  --data-raw '{
	  "destination": {
	    "payment_rail": "ethereum",
	    "currency": "usdt",
	    "address": "0xDEADBEEF"
	  },
    "developer_fee_percent": "2.5", // 2.5%, omitting will not change the existing dev fee percent
  }'

History of Static Memo Activity

This endpoint provide a history of activity for Static Memos such incoming fiat funds received and outgoing payments on chain. See List History of Static Memo activity for more information about the types of events returned from these endpoints.

Listing history of Activity for a Static Memo

Request
curl --request GET \
     --url 'https://api.bridge.xyz/v0/customers/cust_123/static_memos/static_memo_alice_123/history' \
     --header 'Api-Key: <Api-Key>' \
     --header 'accept: application/json'
The response will contain transactions sent to the static memo and the lifecycle of those payments up until they are delivered.
Response
[{
  "id": "event_4",
  "customer_id": "cust_alice",
  "static_memo_id": "static_memo_alice_456",
  "type": "payment_submitted",
  "amount": "98.63",
  "currency": "usdc",
  "developer_fee_amount": "0.13",
  "exchange_fee_amount": "0.0",
  "created_at": "2023-11-05T19:39:14.316Z",
  "subtotal_amount": "98.63",
  "gas_fee": "0.0",
  "deposit_id": "deposit_123",
  "source": {
    "payment_rail": "wire",
    "bank_routing_number": "987654321",
    "bank_beneficiary_name": "JOHN SMITH",
    "imad": "20240110RUDJYGYG009092",
    "omad": "20240110RUDJYGYG03151101101621",
  },
  "destination_tx_hash": "0xc99e2d1eaab82f2b293d26bbe58f3e3cc6df0a1276cdad89233767ef619b1e37"
},
{
  "id": "event_3",
  "customer_id": "cust_alice",
  "static_memo_id": "static_memo_alice_456",
  "type": "funds_received",
  "amount": "98.76",
  "currency": "usd",
  "developer_fee_amount": "0.0",
  "exchange_fee_amount": "0.0",
  "created_at": "2023-11-05T19:29:12.621Z",
  "subtotal_amount": "98.76",
  "gas_fee": "0.0",
  "deposit_id": "deposit_123",
  "source": {
    "payment_rail": "wire",
    "bank_routing_number": "987654321",
    "bank_beneficiary_name": "JOHN SMITH",
    "imad": "20240110RUDJYGYG009092",
    "omad": "20240110RUDJYGYG03151101101621",
  }
}]

Listing history of Activity for all Static Memos

Event history is also available for all Static Memos across all customers.
curl --request GET \
     --url 'https://api.bridge.xyz/v0/customers/cust_123/static_memos/static_memo_alice_123/history' \
     --header 'Api-Key: <Api-Key>' \
     --header 'accept: application/json'

Static Memo Events

Event types

EventDescription
funds_receivedBridge has received funds and is preparing to move them on the customer’s behalf.
payment_submittedBridge has sent the payment and is awaiting confirmation (usually takes a few minutes on-chain).
payment_processedFunds have arrived at the destination. Final state.
in_reviewTemporary review state. Bridge may reach out for additional info.
refundBridge couldn’t complete the transfer and is returning funds to the sender.
account_updateTriggered when a Virtual Account’s destination details (e.g. address, currency) are updated.
Please note that a transaction will always progress from funds_receivedpayment_submittedpayment_processed. It can never go backwards. All transaction-triggered events include a deposit_id field. This id is unique for each transaction that Bridge receives through this Static Memo and can be used to link separate events to the same source transaction.
Static memos do not support microdeposit or challenge deposit verifications.

Event breakdown