Resources
Response Types
Real-Time Payments supports the following response types for the status of a payment:
RECEIVEDACCEPTEDPROCESSINGCANCELEDREJECTEDCOMPLETEDRETURNED
For additional detail on status and sub-status responses, refer to Status response and error codes.
Purpose codes
Select markets require a purpose code for successful transactions. A purpose code is issued by a market’s Clearing house and identifies the purpose of a transaction. The following tables list supported purpose code values for Real-Time Payments in select regions. Markets that do not appear on this page do not require purpose codes.
Canada (Interac e-Transfer)
The following table contains the supported purpose codes for Interac e-Transfer:
| Region | Purpose code | Name | Description |
|---|---|---|---|
NA |
BONU |
Bonus Payment | Payment of a bonus. |
CASH |
Cash Management Transfer | General cash-management instruction. | |
CCRD |
Credit Card Payment | Payment of a credit card. | |
DCRD |
Debit Card Payment | Payment of a debit card. | |
DIVID |
Dividend | Payment of a dividend. | |
GOVT |
Government Payment | Payment to or from a government department. | |
HEDG |
Hedging | Payment of a hedging operation. | |
ICCP |
Irrevocable Credit Card Payment | Reimbursement of a credit-card payment. | |
IDCP |
Irrevocable Debit Card Payment | Reimbursement of a debit-card payment. | |
INTC |
Intra-Company Payment | Intra-company payment, or a payment between two companies that belong to the same group. | |
INTE |
Interest | Payment of interest. | |
LOAN |
Loan | Transfer of a loan to a borrower. | |
OTHR |
Other Payment | Other payment purpose. | |
PENS |
Pension Payment | Payment of a pension. | |
SALA |
Salary Payment | Payment of salaries. | |
SECU |
Securities | Payment of securities. | |
SSBE |
Social Security Benefit | Payment of a Social Security benefit. | |
TAXS |
Tax Payment | Payment of taxes. | |
TRAD |
Trade Services | Payment of a trade finance transaction. | |
TREA |
Treasury Payment | Payment related to treasury operations, such as a financial contract settlement. | |
VATX |
Value Added Tax Payment | Payment of value added tax. | |
WHLD |
Withholding Tax | Payment of withholding tax. | |
AIRB |
Air | Payment for air transport-related business. | |
BUSB |
Bus | Payment for bus transport-related business. | |
FERB |
Ferry | Payment for ferry-related business. | |
RLWY |
Railway | Payment for railway transport-related business. | |
CBTV |
CableTV Bill | Payment of cable TV bill. | |
ELEC |
Electricity Bill | Payment of electricity bill. | |
ENRG |
Energies | Payment related to a utility operation. | |
GASB |
Gas Bill | Payment of gas bill. | |
NWCH |
Network Charge | Payment of network charges. | |
NWCM |
Network Communication | Payment of network communication. | |
OTLC |
Other Telecom Related Bill | Payment of other telecom-related bill. | |
PHON |
Telephone Bill | Payment of telephone bill. | |
UBIL |
Utilities | Payment to common utility provider that provides gas, water, and/or electricity. | |
WTER |
Water Bill | Payment of water bill. | |
BOND |
Bonds | Securities Lending-Settlement of Bond. | |
COLL |
Collateral Management | Relates to collateral management. | |
240 |
ANN/REN Annuity | ||
260 |
INV/PLA Investment | ||
308 |
CCB/ACE Canada Child Benefit | ||
311 |
OAS/SV Old Age Security | ||
318 |
EI/AE Employment Insurance | ||
330 |
INS/ASS Insurance | ||
370 |
MTG/HYP Mortgage | ||
400 |
RLS/LOY Rent/Leases | ||
430 |
BPY/FAC Bill Payment | ||
452 |
EXP/RDD Expense Payment | ||
460 |
AP/CC Accounts Payable | ||
480 |
DON/DON Donations |
Hong Kong (FPS)
Purpose code |
Description |
|---|---|
|
Salary and benefits payment Not applicable to dividend payment. For dividend payment, it would be classified as general business payment (“CXBSNS”) |
|
General business payment |
Purpose code |
Description |
|---|---|
|
Salary and benefits payment Not applicable to dividend payment. For dividend payment, it would be classified as general business payment (“CXBSNS”) |
|
General business payment |
|
FPS merchant payment |
|
Account top-up payment |
Malaysia (RPP)
Purpose code |
Description |
|---|---|
|
Food and live animals |
|
Beverages and tobacco |
|
Crude materials, inedible, except fuels |
|
Mineral fuels, lubricants, and related materials |
|
Animal and vegetable oils, fat, and waxes |
|
Chemicals and related products, not classified elsewhere |
|
Manufactured goods |
|
Machinery, non-customized packaged software, and transport equipment |
|
Power lines, pipelines, and undersea communication cables |
|
Miscellaneous manufactured articles |
|
Commodities and transactions not classified elsewhere |
|
Refunds relating to goods transactions |
|
Non-monetary gold |
|
Merchanting trade in Malaysia |
|
Merchanting trade abroad |
|
Goods for processing (manufacturing services) |
|
Repair and maintenance of aircraft, ships, and other transport equipment |
|
Freight by air |
|
Freight by sea |
|
Freight by other modes of transportation |
|
Passenger fare by air |
|
Passenger fare by sea |
|
Passenger fare by other modes of transportation |
|
Airport services |
|
Port services |
|
Other terminal facilities |
|
Charter of aircraft (with crews) |
|
Charter of ships and vessels (with crews) |
|
Charter of other modes of transport (with crews) |
|
Postal and courier services |
|
Fees for salvage operations |
|
Goods and services purchase by travelers |
|
Travel for pilgrimage and religious observances |
|
Travel for medical treatment |
|
Education-related |
|
Goods and services purchased through business and official travel |
|
Goods and services purchase by short-term workers |
|
Construction and installation services In Malaysia |
|
Construction and installation services abroad |
|
Premium paid/received on high-risk insurance/Takaful relating to fire, marine, aviation, etc. |
|
Premium paid/received on other general insurance/Takaful |
|
Premium paid/received on life insurance/Takaful |
|
Premium paid/received on reinsurance/Retakaful |
|
Premium paid/received on insurance/Takaful on goods |
|
Claims settlements on high-risk insurance/Takaful relating to fire, marine, aviation, etc. |
|
Claims settlements on other general insurance/Takaful |
|
Claims settlements on life insurance/Takaful |
|
Claims paid/received on reinsurance/Retakaful |
|
Claims paid/received on insurance/Takaful on goods |
|
Auxiliary insurance services |
|
Explicitly charged financial services |
|
Explicit margins on the buying and selling of financial instruments |
|
Explicitly charged asset management services |
|
Financial intermediation service charges indirectly measured (FISIM) |
|
Charges associated with intellectual property rights |
|
License fees to reproduce and distribute intellectual property |
|
Telecommunication services |
|
Computer services |
|
Information services |
|
Rentals/operating leasing of aircraft (without crews) |
|
Rentals/operating leasing of ships and vessels (without crews) |
|
Rentals/operating leasing of other transport equipment (without crews) |
|
Rentals/operating leasing of dwellings, other buildings and machinery |
|
Sharing of administrative expenses |
|
Research and development services |
|
Architectural, engineering, and other technical services |
|
Agricultural, mining, and on-site processing |
|
Trade-related services |
|
Waste treatment services |
|
Other business services |
|
Advertising, market research and public opinion polling services |
|
Legal services |
|
Accounting services |
|
Management consulting services |
|
Audio-visual and artistic related services |
|
Health services |
|
Education services |
|
Heritage and recreational services |
|
Other personal services |
|
Other services transactions |
|
Refunds relating to services transactions |
|
Wages and salaries in cash |
|
Wages and salaries in kind/benefits attributable to employees |
|
Employer's social contributions |
|
Taxes on products and productions |
|
Subsidies on products and productions |
|
Rental on natural resources |
Singapore (FAST)
Purpose code |
Description |
|---|---|
|
Business expenses |
|
Employee bonus |
|
Cable TV bill |
|
Credit card payment |
|
Charity |
|
Collection of funds initiated via a credit transfer or direct debit |
|
Commission |
|
Car park charges |
|
Cash disbursement |
|
Debit card payment |
|
Dividends payment |
|
Dental services |
|
Study/tuition fees |
|
Late fees and charges |
|
Foreign Worker Levy payment |
|
Purchase and sale of goods |
|
Government insurance |
|
Goods and services tax |
|
Hospital care services |
|
Installment/hire-purchase agreement |
|
Insurance premium |
|
Intra-company payment |
|
Interest payment |
|
Mutual funds, investment products, and shares |
|
Invoices |
|
Transfer of a loan to a borrower |
|
Medical care services |
|
Net income tax |
|
Other payment purposes |
|
Telephone bill |
|
Property tax |
|
Road tax |
|
Rebate |
|
Refund |
|
Rent |
|
Salaries |
|
Study/tuition costs |
|
Payment to a supplier |
|
Taxes |
|
Telecommunications-related bills |
|
Charges levied by a town council |
|
Trade services operation |
|
Treasury operations |
|
Payment to top-up prepaid card and electronic road pricing for the purpose of transportation |
|
Payment to common utility providers that provide gas, water, and/or electricity |
|
Withholding tax |
Payment limits
Real-Time Payments are subject to maximum payment amounts, which vary per market. The bank and the schemes periodically review these limits in response to market demands and conditions.
Market / Scheme |
Payment limits (per transaction) |
|---|---|
Australia (NPP) |
AUD 100,000 |
Brazil (PIX) |
BRL No limit |
| Canada (Interac e-Transfer) | CAD 25,000 |
Hong Kong (FPS) |
|
India (IMPS) |
INR 500,000 |
Malaysia (RPP) |
MYR 10,000,000 |
Mexico (SPEI) |
Monday to Friday:
Saturday & Sunday: MXN 11,400 |
SEPA Zone (SEPA Instant) |
EUR 100,000 |
Singapore (FAST) |
SGD 200,000 |
United Kingdom (UK FPS) |
GBP 1,000,000 |
United States (TCH) |
USD 1,000,000 |
United States (FedNow) |
USD 500,000 |
Beneficiary banks
A beneficiary bank is the bank that holds the account you are sending money to. The following table can help you identify a beneficiary bank in the region of your choice:
Region |
Reference link |
Notes |
|---|---|---|
Australia (NPP) |
||
Brazil (PIX) |
https://www.bcb.gov.br/content/estabilidadefinanceira/pix/ListadeparticipantesdoPix.pdf |
|
Canada (Interac e-Transfer) |
https://www.payments.ca/payment-resources/directories?field_directory_type=11 |
|
Hong Kong (FPS) |
https://www.hkicl.com.hk/eng/information_centre/clearing_code_and_branch_code_list.php |
|
India (IMPS) |
||
Malaysia (RPP) |
||
Mexico (SPEI) |
Accounts in Mexico, known as CLABE accounts, have 18 digits. The first three numbers indicate the beneficiary bank code. However, on Banxico´s web page, the bank codes are the last three digits of the institution code. |
|
SEPA Zone (SEPA Instant) |
https://www.ebaclearing.eu/services/rt1/participants/ and https://www.ecb.europa.eu/paym/target/tips/facts/html/index.en.html |
The bottom of each page contains a link to download a CSV file of all registered participants. |
Singapore (FAST) |
||
United Kingdom (UK FPS) |
Filter be "FPS". |
|
United States (TCH) |
https://www.theclearinghouse.org/payment-systems/rtp/rtp-participating-financial-institutions |
|
United States (FedNow) |
https://www.frbservices.org/financial-services/fednow/organizations |
Duplicate logic
Real-Time Payments transactions are irrevocable. If the same transaction is sent twice, the status of the original transaction is returned. To confirm the status of any transaction, get the status of a Real-Time Payments request.
How we handle duplicate transactions
The Global Payments API supports the ability for idempotent calls. This is useful in various scenarios, such as initiating payments or attempting to retry a failed request (for instance, due to network issues).
A Real-Time Payments transaction is deemed to be a duplicate by the Global Payments API if the original transaction has the same endToEndId. If two transactions are sent with the same endToEndId within 60 days, the transaction is identified as duplicate, and the status of the original transaction is returned.
How we handle duplicate transactions for Canada Interac e-Transfer
The Global Payments API supports the ability for idempotent calls, which is useful when you initiate a payment, create a client, make a change, or retry a failed request for some reason, such as a network issue.
If an Interac e-Transfer payment has the same endToEndId and debtor.account.accountNumber as another Interac e-Transfer payment within the last 30 days, the Global Payments API deems it duplicative.
Sanctions screening
J.P. Morgan screens all payment information to comply with United States OFAC regulations, applicable non-United States sanctions, and national and international anti-terrorism laws.
Character set restrictions
UK FPS
The UK Faster Payment System (FPS) character set is restricted to the following:
| Character | Note |
|---|---|
| A to Z | Uppercase |
| a to z | Lowercase |
| 0 to 9 | |
| / | Forward slash |
| - | Minus sign |
| ? | Question mark |
| : | Colon |
| ( | Left parantheses |
| ) | Right parantheses |
| . | Point |
| , | Comma |
| ’ | Right single quote |
| ' | Apostrophe |
| + | Plus sign |
| SPACE | |
| # | Hash |
| = | Equals |
| ! | Exclamation mark |
| ” | Right double quote |
| % | Percentage |
| & | Ampersand |
| * | Asterick |
| < | Less than |
| > | Greater than |
| ; | Semicolon |
| { | Left curly bracket |
| @ | Commercial at |
Mexico (SPEI)
Valid characters
| Code | Character | Code | Character | Code | Character | Code | Character |
|---|---|---|---|---|---|---|---|
| 32 | Espacio | 56 | 8 | 83 | S | 111 | o |
| 33 | ! | 57 | 9 | 84 | T | 112 | p |
| 34 | " | 58 | : | 85 | U | 113 | q |
| 35 | # | 59 | ; | 86 | V | 114 | r |
| 36 | $ | 63 | ? | 87 | W | 115 | s |
| 37 | % | 64 | @ | 88 | X | 116 | t |
| 38 | & | 65 | A | 89 | Y | 117 | u |
| 39 | ' | 66 | B | 90 | Z | 118 | v |
| 40 | ( | 67 | V | 92 | \ | 119 | w |
| 41 | ) | 68 | D | 95 | _ | 120 | x |
| 42 | * | 69 | E | 97 | a | 121 | y |
| 43 | + | 70 | F | 98 | b | 122 | z |
| 44 | , | 71 | G | 99 | c | ||
| 45 | - | 72 | H | 100 | d | ||
| 46 | . | 73 | I | 101 | e | ||
| 47 | / | 74 | J | 102 | f | ||
| 48 | 0 | 75 | K | 103 | g | ||
| 49 | 1 | 76 | L | 104 | h | ||
| 50 | 2 | 77 | M | 105 | i | ||
| 51 | 3 | 78 | N | 106 | j | ||
| 52 | 4 | 79 | O | 107 | k | ||
| 53 | 5 | 80 | P | 108 | l | ||
| 54 | 6 | 81 | Q | 109 | m | ||
| 55 | 7 | 82 | R | 110 | n |
Invalid characters
| Code | Character |
|---|---|
| 130 | é |
| 160 | á |
| 161 | í |
| 162 | ó |
| 163 | ú |
| 164 | ñ |
| 165 | Ñ |
| 168 | ¿ |
| 173 | ¡ |
Payment options (Canada Interac e-Transfer)
Interac e-Transfer payments can be sent to a beneficiary's fully formed bank account number, email address, or Canadian mobile phone number.
The following table provides more information about each of these options:
Payment option |
Notes |
|---|---|
Canadian bank account number |
|
Email address or Canadian mobile phone number |
|
Payment validation question and response
When sending an Interac e-Transfer payment to a beneficiary’s email address or Canadian mobile phone number, you must provide a payment validation question and response. The question may be sent in clear text, but the response must comply with the processing rules described in the following sections:
Input requirements
The answer to the security question (as provided by the customer) must:
- Be a single word, minimum 3 characters, up to 25 characters.
- Only include letters (a-z, A-Z), digits (0-9), hyphens, and French characters. Both lower- and upper-case letters are allowed.
- Must not include leading or trailing whitespace (trim before processing).
Disallowed Values
The answer must not contain:
- Spaces or multiple words.
- Special characters (except hyphens) are not allowed.
- Any form of code or URLs (e.g., “http:”, “https:”, “JavaScript”, “function”, “return”, “www”)
Processing the Security Response
- Trim leading and trailing whitespace from the answer.
- Convert the answer to uppercase.
- Append the hashSalt (if present) to the answer.
- Encode the result using ISO-8859-1.
- Hash the encoded string using Secure Hash Algorithm (SHA2).
- Base64 encode the hash output.
- The final security answer should be sent as: Base64(SHA-256(ISO-8859-1(Uppercase(answer)) + Hashsalt))
- The resulting encoded string can be up to 64 characters.
Hash salt
We will provide the salt. Contact your implementation manager for the current hash salt value. Hash salt may change over time; ensure your implementation can accommodate updates.
Example
- Question: What is your policy number?
- Answer: ABC123
- Hash salt: 98765421
- Encrypted answer: l88fqsH39/P2m7NaRZRB/Ko6DHXP2f24oNoFrBPhHyk=
Sample code for security responses
The following sample Java code illustrates the use of SHA2. The sample isn't created by us and without warranty, doesn't include validation and exception handling that would be expected in production.
Sample Java code to generate and encode the password using SHA2 algorithm
package com.acxsys.emt.interacServices;
import org.apache.commons.codec.binary.Base64;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
/* * This is a sample Java code to generate password (such as Answer) using SHA2 */
public class SHA2Encoder {
private final static int SALT_BYTE_SIZE = 32;
public static void main(String args[]){
String pwd = "testPwd";
String salt = null;
String encodedPwd = null;
Charset = Charset.defaultCharset();
System.out.println(" def charset:"+ charset.name());
try {
salt = getSalt();
encodedPwd = encodeSHA2(pwd.toUpperCase(), salt);
}
catch(Exception e){
System.out.println(" Exception encoding pwd." +e.getMessage()); e.printStackTrace(); }
System.out.println("encodedPwd: "+ encodedPwd);
}
/* * This method will encode the password using SHA2 algorithm. The hash is encoded using charset ISO-8859-1 * */
public static String encodeSHA2(String password, String saltString) throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest md = MessageDigest.getInstance("SHA-256"); System.out.println("using salt: "+saltString);
String encodedPwd= null;
encodedPwd = new String( Base64.encodeBase64( md.digest( (password+saltString).getBytes("ISO-8859-1") ) ) ,"ISO-8859-1");
System.out.println("encodedPwd: "+ encodedPwd); return encodedPwd;