These are sample payloads that can be used when creating a payment order. Use the table of contents to the side to quickly jump to a specific payment type.
Initiating an ACH payment
ACH credit
The following request will push $10 from the originating account to the receiving account.
{
"type": "ach",
"amount": 1000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<External Account ID>"
}
ACH debit
The following request will pull $10 from the receiving account and place it into the originating account.
{
"type": "ach",
"amount": 1000,
"direction": "debit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<External Account ID>"
}
Initiating a Real-Time Payment (RTP)
In order to originate an RTP payment from an internal account, you'll need a bank account at an institution that supports RTP.
RTP credit
The following request will initiate an RTP payment of $50.00 from the originating internal account and send it to the receiving account.
{
"type": "rtp",
"amount": 5000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<External Account ID>"
}
RTP debit (Request for Payment)
To initiate a Request for Payment (RFP) over the RTP network, switch the direction
to debit
. The following API request will request a payment of $50.00 from the receiving account to be sent to the originating account.
{
"type": "rtp",
"amount": 5000,
"direction": "debit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<External Account ID>",
"expires_at": "2022-05-20T14:49:07Z"
}
Note that RFP payments require an
expires_at
. This value must be past theeffective_date
.
Initiating an EFT payment
Note that the
purpose
field is mandatory for all EFT payments.
EFT credit
The following will initiate an EFT payment of $50.00 CAD from the originating internal account and send it to the receiving account.
{
"type": "eft",
"amount": 5000,
"direction": "credit",
"currency": "CAD",
"purpose": "371",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<External Account ID>"
}
EFT debit
The following will pull $50.00 CAD from the receiving account and send it to the originating internal account
{
"type": "eft",
"amount": 5000,
"direction": "debit",
"currency": "CAD",
"purpose": "371",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<External Account ID>"
}
Initiating a Book transfer
Book credit
You may want to do a transfer between two bank accounts that you own. This is often called a book transfer. In this case, the receiving_account_id
will be one of your internal account IDs.
{
"type": "book",
"amount": 1000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal Account #1 ID>",
"receiving_account_id": "<Internal Account #2 ID>",
"remittance_information": "Some helpful information to include"
}
Initiating a Check payment
{
"type": "check",
"amount": 1000,
"direction": "credit",
"currency": "USD",
"statement_descriptor": "invoice 4",
"originating_account_id": "<Internal Account #1 ID>",
"receiving_account": {
"party_name": "Sesame Inc.",
"party_address": {
"line1": "1234 Ingredients Lane",
"line2": "Office 7",
"locality": "City of Industry",
"region": "CA",
"postal_code": "94714",
"country": "US"
}
}
Initiating Signet Payments
Signet Deposit
Signet deposits pull funds from the linked demand deposit account (DDA) into the Signet wallet. The receiving account must be an internal account representing the linked DDA at Signature Bank NY. Note that we debit
the DDA when creating this Payment Order.
{
"type": "signet",
"amount": 1000,
"direction": "debit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<Internal Account ID>"
}
Signet Transfer
Signet transfers are payments between two accounts representing Signet wallets.
{
"type": "signet",
"amount": 1000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<Internal or External Account ID>"
}
When providing a receiving account as part of the request body, account_number_type
must be provided and set to "wallet_address"
.
{
"type": "signet",
"amount": 1000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account": {
"party_name": "Harry Potter",
"account_details": [
{
"account_number": "0x1234....",
"account_number_type": "wallet_address"
}
]
}
}
Signet Redeem
Signet redeems transfer money from the Signet wallet into the linked DDA. The receiving account must be an internal account representing the linked DDA at Signature Bank NY. This payment is similar to a deposit, except the direction
is now credit
.
{
"type": "signet",
"amount": 1000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<Internal Account ID>"
}
Initiating a ProvXchange payment
To send a ProvXchange payment, both the originating and the receiving accounts need to be bank accounts at BankProv. Only credits are supported.
ProvXchange credit
The following request will initiate a ProvXchange payment of $50.00 from the originating internal account and send it to the receiving account.
{
"type": "provxchange",
"amount": 5000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal BankProv Account ID>",
"receiving_account_id": "<Internal or External BankProv Account ID>"
}
Initiating an Interac e-Transfer payment
Interac e-Transfer payments require either an email or phone number associated with the receiving account. This may be passed inline to the Payment Order request as part of the receiving account's
contact_details
.
Interac e-Transfer credit
The following request will initiate an Interac e-Transfer payment of $50.00 from the originating internal account and send it to the account associated with the email address.
{
"type": "interac",
"amount": 5000,
"direction": "credit",
"currency": "CAD",
"originating_account_id": "<Internal Account ID>",
"receiving_account": {
"party_name": "Harry Potter",
"contact_details": [
{
"contact_identifier": "[email protected]",
"contact_identifier_type": "email"
}
]
}
}
{
"type": "interac",
"amount": 5000,
"direction": "credit",
"currency": "CAD",
"originating_account_id": "<Internal Account ID>",
"receiving_account": {
"party_name": "Harry Potter",
"contact_details": [
{
"contact_identifier": "1234567890",
"contact_identifier_type": "phone_number"
}
]
}
}
Note that unlike most other payments, Interac e-Transfer payments do not require the receiving account to have
account_details
orrouting_details
.
Initiating a Global ACH Payment
NEFT Credit (India)
The following request will initiate a Global ACH payment of ₹1000 from the originating internal account and send it to the following account representing an Indian external account with a IFSC code and account number.
{
"type": "cross_border",
"subtype": "neft",
"currency": "INR",
"amount": 100000,
"direction": "credit",
"originating_account_id": "<Internal Account ID>",
"receiving_account": {
"party_name": "Harry Potter",
"party_type": "individual",
"party_address": {
"line1": "Main Ave",
"line2": "3RGJ+RVV",
"locality": "Mumbai",
"region": "Maharashtra",
"postal_code": "400054",
"country": "IN"
},
"routing_details": [{
"routing_number": "BKID0002743",
"routing_number_type": "in_ifsc"
}],
"account_details": [{
"account_number": "123456789",
"account_number_type": "other",
"account_type": "non_resident"
}]
},
"purpose": "P0123",
}
EFT Credit (Canada)
The following request will initiate a Global ACH payment of C$20 from the originating internal account and send it to the following account representing an Canadian external account with a CPA routing number and account number.
{
"type": "cross_border",
"subtype": "eft",
"currency": "cad",
"amount": 2000,
"direction": "credit",
"description": "Internal description of a cross border payment",
"originating_account_id": "<Internal Account ID>",
"receiving_account": {
"party_name": "Harry Potter",
"party_type": "individual",
"party_address": {
"line1": "200 University Ave W",
"locality": "Waterloo",
"region": "Ontario",
"postal_code": "N2L3G1",
"country": "CA"
},
"routing_details": [{
"routing_number": "027000012",
"routing_number_type": "ca_cpa"
}],
"account_details": [{
"account_number": "1234567890",
"account_number_type": "other"
}]
},
"purpose": "350",
}
Working with Line Items
Line items allow you to save a detailed breakdown of the individual amounts contained in a Payment Order. For Example, the following $10 transfer is actually composed of 2 individual $5 payments, each with their own description and/or metadata.
{
"type": "ach",
"amount": 1000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<External Account ID>",
"line_items": [
{
"amount": 500,
"description": "Payment #1",
"metadata": {
"Payment Type": "One time fee"
}
},
{
"amount": 500,
"description": "Payment #2",
"metadata": {
"Payment Type": "Recurring Fee"
}
}
]
}
Working with Ledger Transactions
The following request will atomically create a Ledger Transaction with the Payment Order. This is one of multiple ways that Payments and Ledgers can interoperate.
{
"type": "ach",
"amount": 1000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<External Account ID>",
"ledger_transaction": {
"description": "Example description",
"effective_at": "2023-03-03",
"ledger_entries": [
{
"amount": 1000,
"direction": "debit",
"ledger_account_id": "<Ledger Account ID>"
},
{
"amount": 1000,
"direction": "credit",
"ledger_account_id": "<Ledger Account ID>"
}
]
}
}
Working with Metadata
Metadata are key/value pairs that can be assigned to a Payment Order. For example, the following $10 transfer is for a specific User that we have keep track of using the "User ID" metadata key.
{
"type": "ach",
"amount": 1000,
"direction": "credit",
"currency": "USD",
"originating_account_id": "<Internal Account ID>",
"receiving_account_id": "<External Account ID>",
"metadata": {
"User ID": "123"
}
}