Send RTP (Instant) Payment

📘

API Refs

Request body

NameTypeDescriptionRequired
filebinaryThe payment attachment. You can download it in the transaction history in the web app.no
recipientEmailstringInsured email.
If insured does not exist, create an invite
yes
amountnumberThe amount of money being transferred. Amounts should have either 0 or 2 decimal places. Max limit is based on most current agreements with SnapRefund. Minimum limit is $0.01.yes
memostringA string with a maximum length of 280 characters.no
bankIdstringInsured’s bank idyes

Response body

NameTypeDescriptionRequired
idnumberId of payment. Can be used for any payment operations.yes
transactionIdstringPayment transaction Id. It can be seen in the application in the transaction history.yes
amountnumberPayment amount without any fees.yes
customerIdnumberThe Id of the insured who will receive the payment or has already received it.yes
customerNamestringName of the insured who will receive the payment or has already received it.yes
merchantNamestringName of the insurer who will send the payment or has already sent it.yes
feenumberFee for the payment amount. It will only be different from zero when this payment is sent.yes
feeDeductFromstringWhich side of the transfer will pay the fee.yes
statusstringStatus of payment. Main statuses: Awaiting-cash-out, Canceled, Preparing to mail, In-transit, Settledyes
typestringType of payment.yes
memostringA string with a maximum length of 280 characters.no
createdAtDateCreation dateyes

Example

  1. Get list of insured’s banks Request with userId = 1;
  2. Get list of insured’s banks Response:
    [
      {
        "id": "11a111a1-1111-1111-11a1-11a1a1aa11aa",
        "name": "Bank_995",
        "accountType": "checking",
        "type": "bank",
        "status": "unverified"
      },
      {
        "id": "22a222a1-2222-2222-22a2-22a2a2aa22aa",
        "name": "Bank_996",
        "accountType": "savings",
        "type": "bank",
        "status": "unverified"
      }
    ]
    
  3. Send RTP Transfer Request:
    {
      "recipientEmail": "[email protected]",
      "amount": 12.34,
      "memo": "Test memo",
      "bankId": "11a111a1-1111-1111-11a1-11a1a1aa11aa"
    }
    
  4. Send RTP Transfer Response:
    {
      "id": 1,
      "transactionId": "a444aa44-aaa4-4a4a-aaaa-a44a44444a44",
      "amount": 12.34,
      "createdAt": "2023-08-09T15:00:00.000Z",
      "customerId": 2,
      "customerName": "John Smith",
      "merchantName": "Jake Merchant",
      "fee": "0.79",
      "feeDeductFrom": "recipient",
      "status": "In-transit",
      "type": "RTP",
      "memo": "Test memo"
    }
    

Description

❗️

You can only send RTP transfers to insureds you've created. If you want to send an RTP transfer to a user that hasn't been created yet, you must send a pending payment instead Send pending payment

📘

Where do I get my insured's email?

You can get a list of all of your existing insureds. Go to Get list of all insureds

📘

Where do I get my insured's bank id?

You can get a list of all existing banks for any of your insureds. Go to Get list of insured’s banks for more information about it.

When accepting a pending payment as an RTP transaction, you must always indicate the bank Id that you intend to use on the insured's side. This bank must be able to receive RTP transactions (the majority of banks in the US support Real Time Payments, but not all).

When a transaction is created, the payment status will initially change to LOCK.
If the transaction is successfully created, the pending payment status will change to In-transit.

Such a payment has the following statuses:

  • In-transit - transaction in progress;
  • Settled - transaction completed successfully;
  • Failed - the transaction did not complete successfully;
  • Canceled - the transaction has been canceled.

❗️

This functionality must be enabled for your account upon request. Reach out to our customer success team at [email protected] if you'd like to enable RTP payments