Instant Payments
Originate a payment
14min
in this tutorial, you'll learn how to ✅ originate a real time payment credit transfer from your master account ✅ simulate a rejected credit transfer if you are new to real time payments, check out the instant payments this tutorial assumes familiarity with apis for more information, visit the api basics before you begin make sure you have register your partner id your master account number 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 api endpoints used in this tutorial instant payments transfers funds between banks in real time via an instant payments network webhooks used in this tutorial rtp payment sent payment successfully sent to the receiving institution; funds are available in the recipient’s account rtp payment received payment received and posted to an account in cos rtp payment rejected payment rejected by the receiving institution or instant payments network register for the relevant webhook events to receive webhook events, banking and payments for each webhook event type events are sent to the urls you register the event object includes resource identifiers that provide details on each event 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 from your master account to the creditor 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 important we strongly recommend that you include an idempotency in the request header to prevent duplicate payments in case of a failure initiating a credit transfer use post /rtp/v1/payments to initiate a credit transfer some attributes are required for the call refer to the full list of required attribute instant payments docid\ kp nayzjmsetlxub5n36o in this tutorial, you will send $175 to c brown amounts in api calls and responses are written without decimal points (e g , $175 is written as 17500) example request originate a credit transfer post /rtp/v1/payments { "accountnumber" "2553179843", "amount" 17500, "creditor" { "routingnumber" "011000138", "accountnumber" "456789000", "name" "c brown", "addressstreetname" "main st", "addressbuildingnumber" "34", "addresscity" "new york", "addressstate" "ny", "addresspostalcode" "12345", "addresscountry" "us" }, "purpose" "gift money" } a successful api call returns a json response containing the details of the originated credit transfer 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 } ] } 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 ) payment status webhooks rtp payment sent – confirms the payment was sent rtp payment received – confirms the payment was received and posted these webhooks provide real time updates on the status of your credit transfer simulating rejected credit transfers you can simulate a rejected response from the creditor call post /rtp/v1/payments (same as initiating a credit transfer) add 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 get /v1/payments/{id} { "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 } ] }