API tutorials
Instant payments
Send an instant payment
what you will learn ✅ how to originate an instant payment credit transfer from your master account ✅ how to simulate a rejected credit transfer if you are new to instant payments, check out the instant payments overview this tutorial assumes familiarity with apis for more information, visit structure this tutorial uses this api endpoint originate a credit transfer transfers funds between banks in real time via an instant payments network before you begin make sure you have quickstart your partner id your master account number accounts, cards and payment events the following webhook events rtp payment sent confirms that payment successfully sent to the receiving institution; funds available in the recipient’s account rtp payment received confirms payment received and posted to an account the cross river system rtp payment rejected payment rejected by the receiving institution or instant payments network you should be familiar with these terms financial institution (fi) the bank or credit union facilitating the transfer of funds between parties debtor the account initiating and sending a payment through the instant payments network creditor the account receiving funds through the instant payments network originate a credit transfer instant payment credit transfers allow funds to move from your account to the recipient's account in real time transfers can originate from master accounts or subledgers the debtor sends the payment, and the creditor receives it cross river supports three network platforms rtp® via the clearing house (tch) fednow® crnow in this tutorial, you are the debtor you will send an outbound credit transfer of $175 from your master account to c brown using a specified network platform possible outcomes accepted transfer funds are posted to the recipient’s account status actc (accepted) rejected transfer payment is rejected by the creditor fi or the network no funds are transferred status rjct (rejected) no response the transfer times out, resulting in rejection status rjct (rejected) accepted without posting the payment is accepted but funds are not immediately posted the creditor fi can accept or reject the transfer within 24 hours status acwp (accepted without posting) cross river cannot confirm how the receiving fi displays payment details contact the recipient fi directly for specifics on how the payment will appear to i nitiate a credit transfer call post /rtp/v1/payments some attributes are required for the call refer to the full list of originate a credit transfer important we strongly recommend that you include an idempotency keys in the request header to prevent duplicate payments in case of a failure amounts in api calls and responses are written without decimal points (e g , $175 is written as 17500) post /rtp/v1/payments request post /rtp/v1/payments { "accountnumber" "2955057589", "amount" 10000, "creditor" { "routingnumber" "011000138", "accountnumber" "456789000", "name" "richard robert", "addressstreetname" "speedway blvd", "addressbuildingnumber" "3366", "addresscity" "talladega", "addressstate" "al", "addresspostalcode" "35096", "addresscountry" "us" }, "purpose" "sponsor donation", "clientidentifier" "3e4ac46c fa9e 4654 80b8 83f971622dfd" } a successful api call returns a json response containing the details of the originated credit transfer post /rtp/v1/payments response { "id" "8177d9d1 e706 49f3 b0a3 b300009ffcf3", "originalpaymentid" "8177d9d1 e706 49f3 b0a3 b300009ffcf3", "referenceid" "r169o74976262", "accountnumber" "2955057589", "clientidentifier" "3e4ac46c fa9e 4654 80b8 83f971622dfd", "amount" 1500, "direction" "outbound", "status" "created", "paymenttype" "credittransfer", "source" "api", "transactionaccountcontext" "notsubmitted", "debtor" { "routingnumber" "021214891", "accountnumber" "2955057589", "name" "dim mak", "addressstreetname" "400 kelby st", "addresscity" "fort lee", "addressstate" "nj", "addresspostalcode" "07024", "addresscountry" "us" }, "creditor" { "routingnumber" "011000138", "accountnumber" "456789000", "name" "richard robert", "addressstreetname" "speedway blvd", "addressbuildingnumber" "3366", "addresscity" "talladega", "addressstate" "al", "addresspostalcode" "35096", "addresscountry" "us" }, "network" { "businessmessageid" "b20250618021214273t1bubt97200579713", "messageid" "m20250618021214273t1bzzd70574502544", "createdat" "2025 06 18t05 42 29 9268876 04 00", "numberoftransactions" 1, "interbanksettlementamount" 1500, "currency" "usd", "interbanksettlementdate" "2025 06 18", "settlementmethod" "clrg", "clearingsystemcode" "tch", "instructionid" "20250618021214273t1b7od838696205667", "endtoendid" "eb80f3de5bf84751bdf7b300009ffcf3", "transactionid" "20250618021214273t1b7od838696205667", "fromparticipantid" "021214273t1", "toparticipantid" "990000001s1", "instructingroutingnumber" "021214891", "instructedroutingnumber" "011000138", "headercreationdate" "2025 06 18t05 42 29 9268876 04 00", "messagecreationdatetime" "2025 06 18t05 42 29 9268876 04 00" }, "servicelevelcode" "sdva", "localinstrumentproprietary" "standard", "categorypurpose" "consumer", "currency" "usd", "chargebearer" "slev", "purpose" "sponsor donation", "wasrefunded" false, "waspaid" false, "createdat" "2025 06 18t05 42 29 9268876 04 00", "productid" "29f3022a ccfc 42eb aa8f b29500f13d00", "partnerid" "1101a33d fbd9 4b9e b169 b29500f12407", "lastmodifiedat" "2025 06 18t05 42 29 9268876 04 00", "sendattemptcount" 0, "discounts" \[], "awaitingresponse" false, "limitseligibleon" "2025 06 18t05 42 29 9268876 04 00", "networkplatform" "tch" } the status attribute in the response indicates that your payment was created it does not indicate that your payment was successful payment status webhook events when a credit transfer ( pacs 008 ) is sent to the instant payments network, the rtp payment sent webhook fires the event body includes the payment id in the details section (e g , 7b5f4bfb 8595 452b 914e ad9400f7b8e3 ) sample rtp payment sent event { "id" "7af80bc3 4f1c 4842 b60e ad9400fb59db", "eventname" "rtp payment sent", "status" "pending", "partnerid" "bd7a716f 6349 43ef 89cd aa2200f15977", "createdat" "2021 08 30t11 15 08 623 04 00", "resources" \[ "rtp/v1/payments/7b5f4bfb 8595 452b 914e ad9400f7b8e3" ], "details" \[ { "paymentid" "7b5f4bfb 8595 452b 914e ad9400f7b8e3", "paymenttype" "credittransfer", "resultcode" "ok", "resultadditionalinfo" null, "coretransactionid" "3e04e9b9 e80f 4f5f 9a0b b04a011d23df", "memopostid" "4820a916 f062 49ad 9519 b04a011d2372", "accountnumber" "2553179843", "postingcode" "ok", "rtptransactionstatus" "actc", "purpose" null, "awaitingresponse" "false", "referencedpaymentid" null } ] } simulate rejected credit transfers you can simulate a rejected response from the creditor call post /rtp/v1/payments (same as initiating a credit transfer), but a dd reject before the creditor’s name (see line 9 in the request example) example request rejected credit transfer post /v1/payments { "accountnumber" "2553179843", "amount" 15000, "creditor" { "routingnumber" "011000138", "accountnumber" "456789000", "name" "reject\ cleveland brown", "addressstreetname" "main st", "addressbuildingnumber" "34", "addresscity" "new york", "addressstate" "ny", "addresspostalcode" "00093", "addresscountry" "us" }, "purpose" "gift money" } the response example shows a status of rejected on line 13 example response rejected credit transfer { "id" "7b5f4bfb 8595 452b 914e ad9400f7b8e3", "originalpaymentid" "7b5f4bfb 8595 452b 914e ad9400f7b8e3", "referenceid" "r242o0354y055", "accountnumber" "2553179843", "amount" 15000, "operatorcoretransactionid" "2da7c99c 5804 4757 98c1 ad9400fa6c2c", "memopostid" "7b5f4bfb 8595 452b 914e ad9400f7b8e3", "memopostremovedat" "2021 08 30t11 14 44 973 04 00", "direction" "outbound", "status" "rejected", "paymenttype" "credittransfer", "source" "api", "transactionaccountcontext" "rejected", "rtptransactionstatus" "rjct", "debtor" { "routingnumber" "021214891", "accountnumber" "2553179843", "name" "p griffin", "addressstreetname" "main street", "addressbuildingnumber" "31", "addresscity" "new york", "addressstate" "ny", "addresspostalcode" "00093", "addresscountry" "us" }, "creditor" { "routingnumber" "011000138", "accountnumber" "456789000", "name" "c brown", "addressstreetname" "main st", "addressbuildingnumber" "34", "addresscity" "new york", "addressstate" "ny", "addresspostalcode" "00093", "addresscountry" "us" }, "network" { "messagedefid" "pacs 008 001 08", "businessmessageid" "b20210830021214273t1bqpz97287285414", "messageid" "m20210830021214273t1beml46024873029", "createdat" "2021 08 30t11 01 55 74 04 00", "numberoftransactions" 1, "interbanksettlementamount" 15000, "currency" "usd", "interbanksettlementdate" "2021 08 30", "settlementmethod" "clrg", "clearingsystemcode" "tch", "instructionid" "20210830021214273t1b4s0534677157734", "endtoendid" "9a2638dc8cbe48f18d8cad9400f7b8e3", "transactionid" "20210830021214273t1b4s0534677157734", "clearingsystemref" "001", "fromparticipantid" "021214273t1", "toparticipantid" "990000001s1", "instructingroutingnumber" "021214891", "instructedroutingnumber" "011000138", "headercreationdate" "2021 08 30t11 11 45 373 04 00", "messagecreationdatetime" "2021 08 30t11 01 55 74 04 00" }, "confirmedstatus" { "messagestatusreportid" "2da7c99c 5804 4757 98c1 ad9400fa6c2c", "accepteddatetime" "2021 08 30t11 11 45 4 04 00", "transactionstatus" "actc" }, "servicelevelcode" "sdva", "localinstrumentproprietary" "standard", "categorypurpose" "consumer", "currency" "usd", "chargebearer" "slev", "purpose" "gift money", "wasrefunded" false, "waspaid" false, "createdat" "2021 08 30t11 01 55 74 04 00", "completedat" "2021 08 30t11 14 45 05 04 00", "processingstartedat" "2021 08 30t11 11 45 247 04 00", "postingcode" "ok", "productid" "13362d99 f04e 455b 9363 abc10151c27c", "partnerid" "bd7a716f 6349 43ef 89cd aa2200f15977", "lastmodifiedat" "2021 08 30t11 14 45 0505825 04 00", "sentat" "2021 08 30t11 11 45 3733333 04 00", "sendattemptcount" 1, "result" { "code" "ok" }, "discounts" \[], "awaitingresponse" false } the rtp payment rejected event is triggered when a credit transfer is rejected the details object in the event contains the payment id from the response body (e g , 7b5f4bfb 8595 452b 914e ad9400f7b8e3 ) the resultcode in the details object provides the rejection reason example ac06 – account is blocked sample rtp payment rejected event { "id" "06afb069 dc90 48ea b642 b04a0126580f", "eventname" "rtp payment rejected", "status" "pending", "partnerid" "1e5d3f04 ae24 4af6 9e30 aecf012b99dd", "createdat" "2023 07 25t13 51 40 417 04 00", "resources" \[ "rtp/v1/payments/7b5f4bfb 8595 452b 914e ad9400f7b8e3" ], "details" \[ { "paymentid" "7b5f4bfb 8595 452b 914e ad9400f7b8e3", "paymenttype" "credittransfer", "resultcode" "ac06", "resultadditionalinfo" null, "postingcode" "res", "rtptransactionstatus" null, "purpose" null, "referencedpaymentid" null } ] }