Files
xrpl-dev-portal/_code-samples/batch/js

Send a Batch Transaction

Code samples showing how to create and submit a Batch transaction with Javascript.

Both for single and multi account batch transactions.

Single Account Batch Transaction

Quick setup and usage:

npm install xrpl
node singleAccountBatch.js

The script should output the following:

Funding new wallets from faucet...
Sender: raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e, Balance: 100 XRP
Wallet1: r4JMmKToZRMVT3mGWPnKHFEHsSMQEWigLC, Balance: 100 XRP
Wallet2: rKfPgHASYuttoF1HfU56V31WbJvZn3w8xn, Balance: 100 XRP

Creating batch transaction:
{
  "TransactionType": "Batch",
  "Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
  "Flags": 65536,
  "RawTransactions": [
    {
      "RawTransaction": {
        "TransactionType": "Payment",
        "Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
        "Destination": "r4JMmKToZRMVT3mGWPnKHFEHsSMQEWigLC",
        "Amount": "2000000",
        "Flags": 1073741824
      }
    },
    {
      "RawTransaction": {
        "TransactionType": "Payment",
        "Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
        "Destination": "rKfPgHASYuttoF1HfU56V31WbJvZn3w8xn",
        "Amount": "5000000",
        "Flags": 1073741824
      }
    }
  ]
}

Submitting batch transaction...

Batch transaction submitted successfully!
Result:
 {
  "close_time_iso": "2025-11-03T14:16:21Z",
  "ctid": "C00D458B00020002",
  "hash": "A93D3C2BDB5D600E592B64B84E66D789237D029267129EBC659EE483E532DD95",
  "ledger_hash": "BE6B7C12E551305F09E942D6FA3FC8546F024AE5C53FC495DA6ABF78461E7019",
  "ledger_index": 869771,
  "meta": {
    "AffectedNodes": [
      {
        "ModifiedNode": {
          "FinalFields": {
            "Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
            "Balance": "99999996",
            "Flags": 0,
            "OwnerCount": 0,
            "Sequence": 869767
          },
          "LedgerEntryType": "AccountRoot",
          "LedgerIndex": "6238B6901FEBD1492C03546C7965A01F184C4E37B696304B86F78F4ADB7831B1",
          "PreviousFields": {
            "Balance": "100000000",
            "Sequence": 869766
          },
          "PreviousTxnID": "559F102041D84FF9DA17483355C3C96A0F8923D9C9C7971BBB15C972DD1F37D6",
          "PreviousTxnLgrSeq": 869766
        }
      }
    ],
    "TransactionIndex": 2,
    "TransactionResult": "tesSUCCESS"
  },
  "tx_json": {
    "Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
    "Fee": "4",
    "Flags": 65536,
    "LastLedgerSequence": 869789,
    "RawTransactions": [
      {
        "RawTransaction": {
          "Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
          "Amount": "2000000",
          "Destination": "r4JMmKToZRMVT3mGWPnKHFEHsSMQEWigLC",
          "Fee": "0",
          "Flags": 1073741824,
          "Sequence": 869767,
          "SigningPubKey": "",
          "TransactionType": "Payment"
        }
      },
      {
        "RawTransaction": {
          "Account": "raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e",
          "Amount": "5000000",
          "Destination": "rKfPgHASYuttoF1HfU56V31WbJvZn3w8xn",
          "Fee": "0",
          "Flags": 1073741824,
          "Sequence": 869768,
          "SigningPubKey": "",
          "TransactionType": "Payment"
        }
      }
    ],
    "Sequence": 869766,
    "SigningPubKey": "EDFECFB87A29F93E52BBA0BA5A14A59B520BB0E39F33943A2FDC1101D34349270D",
    "TransactionType": "Batch",
    "TxnSignature": "E08E300BDE1700C7CC27F3DA9B784907F637518E1C7E0978E57BFE5D1511A3B6A4269235FC2D9EAA550182A5F2B59415A442CE59555B9B9A0A79AB4030C9F701",
    "ctid": "C00D458B00020002",
    "date": 815494581,
    "ledger_index": 869771
  },
  "validated": true
}

Final balances after batch transaction:
Sender: raNwujquxJ7QTLhfbkKN6sZa7RBPHV671e, Balance: 92.999996 XRP
Wallet1: r4JMmKToZRMVT3mGWPnKHFEHsSMQEWigLC, Balance: 102 XRP
Wallet2: rKfPgHASYuttoF1HfU56V31WbJvZn3w8xn, Balance: 105 XRP

Transaction URL:
https://devnet.xrpl.org/transactions/A93D3C2BDB5D600E592B64B84E66D789237D029267129EBC659EE483E532DD95

Multi-Account Batch Transaction

npm install xrpl
node multiAccountBatch.js

The script should output the following:

Funding new wallets from faucet...
Alice: rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa, Balance: 100 XRP
Bob: rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7, Balance: 100 XRP
Charlie: rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K, Balance: 100 XRP
Third-party wallet: rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc, Balance: 100 XRP

Creating batch transaction:
{
  "TransactionType": "Batch",
  "Account": "rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc",
  "Flags": 65536,
  "RawTransactions": [
    {
      "RawTransaction": {
        "TransactionType": "Payment",
        "Account": "rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K",
        "Destination": "rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa",
        "Amount": "50000000",
        "Flags": 1073741824
      }
    },
    {
      "RawTransaction": {
        "TransactionType": "Payment",
        "Account": "rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7",
        "Destination": "rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa",
        "Amount": "50000000",
        "Flags": 1073741824
      }
    }
  ]
}

Submitting batch transaction...

Batch transaction submitted successfully!
Result:
 {
  "close_time_iso": "2025-11-03T14:15:00Z",
  "ctid": "C00D457000000002",
  "hash": "8CBCCD88B8ABC248797B84ABB92066961C1CB5FE75ACE2115ADCA6B74C85993A",
  "ledger_hash": "2217A0DBB38B870187B412533B939724095359A050B21E071A2A114BF57CFB60",
  "ledger_index": 869744,
  "meta": {
    "AffectedNodes": [
      {
        "ModifiedNode": {
          "FinalFields": {
            "Account": "rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc",
            "Balance": "99999994",
            "Flags": 0,
            "OwnerCount": 0,
            "Sequence": 869743
          },
          "LedgerEntryType": "AccountRoot",
          "LedgerIndex": "1E9BA043B9C6518582D0FF73A08DCD8B6958195735086CF7295E5EB6433FB453",
          "PreviousFields": {
            "Balance": "100000000",
            "Sequence": 869742
          },
          "PreviousTxnID": "F7019BC55D80438FDDB01C2549CCC3F7DAF9791F8645E0269D63979EAEC5BBA6",
          "PreviousTxnLgrSeq": 869742
        }
      }
    ],
    "TransactionIndex": 0,
    "TransactionResult": "tesSUCCESS"
  },
  "tx_json": {
    "Account": "rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc",
    "BatchSigners": [
      {
        "BatchSigner": {
          "Account": "rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K",
          "SigningPubKey": "EDC566D7DA8186BBD30DDAE1FB770FCE7F248949194E1A2E70B18CFA060B140B59",
          "TxnSignature": "31639BFA1359DD24345776EAEEACCF61C1CDC792988679263D113E80A22D837E20ACD2B25E482FCA769990C004D747836370C6BAD14524559639BBEBA5813002"
        }
      },
      {
        "BatchSigner": {
          "Account": "rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7",
          "SigningPubKey": "EDEF1966B325000407940E4C0792E3CCC3E27F51D132BDC53DCC2B1998E7C32A34",
          "TxnSignature": "6BF9860B0E2E134FB302329D711BAA7B6314395D39523982DBBC037E84FB17AB5E8E736DB3DB0019B4477686AF2D91E5D2B49409698A95219376B2E318D3E501"
        }
      }
    ],
    "Fee": "6",
    "Flags": 65536,
    "LastLedgerSequence": 869762,
    "RawTransactions": [
      {
        "RawTransaction": {
          "Account": "rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K",
          "Amount": "50000000",
          "Destination": "rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa",
          "Fee": "0",
          "Flags": 1073741824,
          "Sequence": 869740,
          "SigningPubKey": "",
          "TransactionType": "Payment"
        }
      },
      {
        "RawTransaction": {
          "Account": "rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7",
          "Amount": "50000000",
          "Destination": "rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa",
          "Fee": "0",
          "Flags": 1073741824,
          "Sequence": 869738,
          "SigningPubKey": "",
          "TransactionType": "Payment"
        }
      }
    ],
    "Sequence": 869742,
    "SigningPubKey": "ED2B56D6FB4E8C236A6B07E8D8AD9A4938606144E31779918F99525CA6B3C56664",
    "TransactionType": "Batch",
    "TxnSignature": "9C51C1F2CB0E8BCEA1FADD3992249DE72AC46FC86AB2FB023A597FBD5C4CCB3337967E9AAFFB5F1C0CBC91128F3FD194F78F207E461BE1FF906C496B94EC410E",
    "ctid": "C00D457000000002",
    "date": 815494500,
    "ledger_index": 869744
  },
  "validated": true
}

Final balances after batch transaction:
Alice: rfCBfRGpcGJLwdbfz1M6HYoAL8nZyHRHHa, Balance: 200 XRP
Bob: rKPUDuS2jQNpAMhkNncqC9rKJDpL2gXDN7, Balance: 50 XRP
Charlie: rnz3Da7phfR6tgTZoPYF5psYTiHTshTB8K, Balance: 50 XRP
Third-party wallet: rU8LsCmVjSdf7hSmiGBtBDtt2WhHxp7Zpc, Balance: 99.999994 XRP

Transaction URL:
https://devnet.xrpl.org/transactions/8CBCCD88B8ABC248797B84ABB92066961C1CB5FE75ACE2115ADCA6B74C85993A