Highnote Instant Network Transfer (INT) is a specific payment rail within Highnote's instant payments suite that enables your cardholders to make near real-time domestic money movements between cards, both personal and business.
The INT payment rail facilitates card-to-card transfers from Highnote-issued payment cards to eligible external debit and prepaid cards, operating through Visa Direct and Mastercard Send (a Mastercard Move platform).
Instant Network Transfers are implemented through Highnote's Unified Funds Transfer (UFT) framework, using the UnifiedFundsTransfer API object to handle the technical processing of these card-to-card transactions.
The Highnote platform sends notification events for the Unified Funds Transfer and its associated Instant Network Transfer. See the Events Reference (scroll to the bottom of the page if not taken there).
Creating an instant payment requires the following steps:
ENABLED
).The single-use PaymentMethodToken is valid for 3 hours.
Use the Highnote Secure Inputs SDK or Checkout SDK to tokenize a customer's card data as a single-use PaymentMethodToken.
Integrate either SDK in your application on the page where the customer enters their card and saves their payment method. When initializing the SDK, configure the submitButton
text to be "Submit" instead of "Pay":
After the customer enters their credit card and clicks "Submit", you will get a callback to onTokenizeSuccess
.
This callback is a PaymentMethodToken representing the customer's card data.
renderCheckout()
(with other configurations).onTokenizeSuccess
callback whereby the SDK tokenizes the card data and returns a PaymentMethodToken.You only need to create a reusable payment method token once per customer.
In this step, you associate the single-use PaymentMethodToken from Step 1 with the customer's ID, thereby making it a reusable token.
Use the mutation createReusablePaymentMethodToken and set paymentMethodTokenId
to the single-use PaymentMethodToken (e.g., "tkpmc_single_use_1"). The response returns a checkoutToken
(e.g., "tkpmc_1").
Note: The reusable PaymentMethodToken is only effective if capabilities status returns as ENABLED
. See Capabilities status below for details.
With the mutation createReusablePaymentMethodToken
(Step 2), the Highnote platform submits a verification request to the issuer through the card network.
This verification includes checks for:
The combined results determine the capabilities status of the payment card.
The verification must be approved to achieve ENABLED
or REQUIRES_REVIEW
status.
The createReusablePaymentMethodToken
mutation triggers the capability status enum which has 3 values:
Status | Issuer Verification | Name Matching |
---|---|---|
ENABLED | Approved | Full name match (first AND last), OR ANI not performed |
REQUIRES_REVIEW | Approved | Partial name match (first OR last) |
DISABLED | Approved | No name match (neither first NOR last) |
DISABLED | Declined | Any result |
You can simulate these values with the following card data. Currently, only Visa cards support simulating capabilities.
Card Network | PAN | CVV/CVC | Expiration | Name | Address |
---|---|---|---|---|---|
Visa | 4000 0000 0000 0010 | 111 | Any future date | John Doe | 1234 Visa St, Visa, CA 12345 |
To detect changes to the capabilities status after initial tokenization (e.g., from REQUIRES_REVIEW
→ ENABLED
), poll for the Customer object with the list of reusable payment methods (each will have a list of capabilities and their latest status). You can remove the checkoutToken
object from the query.
The following query demonstrates polling on the Customer object:
Ensure that your reusable payment methods token has capabilities status = ENABLED
.
You can get a unique single-use ScopedPaymentMethodToken by querying the Customer object with the reusable payment method token.
Set token
to the reusable PaymentMethodToken (e.g., "tkpmc_1").
Quotes are valid for 30 minutes. Once a quote has expired, you must generate a new one.
Before you can initiate a card-to-card Unified Funds Transfer, you must first request a quote for the fees to present to the user. All fees come out of the subscriber's financial account.
To create a quote for fees, set the following inputs:
source.id
as the ID of a Highnote FinancialAccount owned by user.source.amount
as the amount to send.destination.id
as the ScopedPaymentMethodToken.Each UnifiedFundsTransferQuote has an expiresAt
value indicating how long the quote is valid.
Reference that timestamp to ensure the quote is still valid when offering it to the user.
You are now ready to use the following mutation to create a UnifiedFundsTransferQuote in a quote state. You may get back multiple quotes depending on the fee and time estimate.
Once the user has chosen a quote, you can initiate the transfer. Use a UnifiedFundsTransferQuote.quoteIdentifier
that has not expired to start the transfer.
To look up an existing Instant Network Transfer, use the following query: