PNT APIs
Private Network Transactions (PNT) API Methods
Private Network Transactions (PNT) are a way for a partner to route a customer transaction to Green Dot in a way that bypasses the need to transmit this transaction over the typical Mastercard or Visa network rails.
Most of the checks and flows that are applicable to a regular transaction also apply to PNT transactions. These include balance check before authorizing a transaction, ability to reverse a transaction, instant debiting of funds from account, etc.
Green Dot currently supports these transactions for closed-loop accounts where funds can be added from any external bank account or debit card but can only be spent within the partner's ecosystem.
Pre-authorize a Closed Loop Transaction
This API serves as the authorization for a private network (closed loop) transaction.
Syntax
POST /programs/{programCode}/payments/authorize
Headers
| Field | Type | Description |
|---|---|---|
| programCode | string (path) | The program code assigned to the partner that the customer will belong |
| X-GD-RequestId | string (header) | Unique ID in GUID format used for identify the request |
Request
Request Body
Payload containing purchase details including merchant, POS and encrypted PAN information.
{
"messageType": "financialRequest (1200)",
"paymentInstumentIdentifier": "string",
"encryptedCardData": {
"version": "string",
"ephemeralPublicKey": "string",
"publicKeyHash": "string",
"data": "string"
},
"transactionIdentifier": "string",
"systemTraceNumber": "string",
"transactionCode": "purchase (00)",
"accountType": "current",
"posEntryMode": {
"cardInputCapability": "unknown",
"cardholderAuthenticationCapability": "noAuth",
"cardCaptureCapability": "none",
"operatingEnvironment": "noTerminal",
"cardholderPresence": "present",
"cardPresence": "notPresent",
"cardDataInputMode": "unspecified",
"cardholderAuthenticationMethod": "notAuth",
"cardholderAuthenticationEntity": "notAuth",
"cardDataOutputCapability": "unknown",
"terminalOutputCapability": "unknown",
"pinCaptureCapability": "noPin"
},
"transactionAmount": 0,
"transactionCurrency": "USD",
"transactionFeeAmount": 0,
"transmissionDateTime": "string",
"localDateTime": "string",
"settlementDateTime": "string",
"acquiringCountryCode": "840",
"cardSequenceNumber": "000",
"functionCode": "originalAuthAccurateAmt (100)",
"messageReasonCode": 0,
"merchant": {
"merchantId": "string",
"merchantName": "string",
"merchantIndustryCode": "string",
"merchantIndustryCategory": "string",
"merchantIndustryDescription": "string",
"addressLine1": "string",
"city": "string",
"postalCode": "string",
"stateProvReg": "string",
"country": "string"
},
"originalAmount": 0,
"acquirerId": "string",
"retrievalReferenceNumber": "string",
"terminalIdentifier": "string",
"originalTransactionForReveral": {
"messageType": "financialRequest (1200)",
"systemTraceNumber": "string",
"localDateTime": "string",
"acquirerId": "string"
},
"eCommerceIndicator": "notECommerceTx"
}
Request Parameters
Field | Type | Enum Values | Required | Description |
|---|---|---|---|---|
messageType | string | No | Request Message Type | |
paymentInstumentIdentifier | string | No | GUID returned by Green Dot representing the Payment Instrument | |
encryptedCardData | container | No | Container for encrypted data | |
version | string | No | Version of encryption algorithm used | |
ephemeralPublicKey | string | No | Ephemeral public key | |
publicKeyHash | string | No | Public key hash | |
data | string | No | Encrypted data payload | |
transactionIdentifier | string | No | 15 character alphanumber identifier | |
systemTraceNumber | string | Yes | Sequential Value from Terminal from 000001 - 999999 | |
transactionCode | string (enum) | No | Transaction code - debits goods and services | |
accountType | string (enum) | No | Type of account
| |
posEntryMode | container | No | POS Data | |
cardInputCapability | string (enum) | No | Contains a code indicating the primary means of getting the card information into the terminal. | |
cardholderAuthenticationCapability | string | No | Contains a code indicating the primary means of verifying the cardholder at this terminal. | |
cardCaptureCapability | string (enum) | No | Contains a code indicating whether the terminal has the ability to capture a card. | |
operatingEnvironment | string (enum) | No | Contains a code indicating whether the terminal is attended by the card acceptor and its location. | |
cardholderPresence | string (enum) | No | Contains a code indicating whether the cardholder is present at the point of service and if not, why not. | |
cardPresence | string (enum) | No | Contains a code indicating whether the card is present at the point of service. | |
cardDataInputMode | string (enum) | No | Contains a code indicating the method used to input the information from the card to the terminal. | |
cardholderAuthenticationMethod | string (enum) | No | Contains a code indicating the method for verifying the cardholder identity. | |
cardholderAuthenticationEntity | string (enum) | No | Contains a code indicating the entity verifying the cardholder identity. | |
cardDataOutputCapability | string (enum) | No | Contains a code indicating the ability of the terminal to update the card. | |
terminalOutputCapability | string (enum) | No | Contains a code indicating the ability of the terminal to print or display messages. | |
pinCaptureCapability | string (enum) | No | Contains a code indicating the length of PIN that the terminal is capable of capturing. | |
transactionAmount | number ($double) | No | Transaction amount in local currency. | |
transactionCurrency | string | Yes | Use USD for all transactions.
| |
transmissionDateTime | string | Yes | DateTime at which the transaction was initiated (in GMT). Format: YYMMDDhhmmss. | |
localDateTime | string | Yes | DateTime at which customer initiated transaction in timezone of customer. Format: YYMMDDhhmmss. | |
settlementDateTime | string | Yes | Settlement dateTime that partner adheres to. Format: YYMMDDhhmmss. | |
acquiringCountryCode | string | No | Acquiring Country code. Default value: 840 | |
cardSequenceNumber | string | No | 3-digit sequence number defaulted to 000.
| |
functionCode | string (enum) | No | Indicating the specific purpose of the message like Recurring Payment, Financial Message, Full Reversal, Partial Reversal | |
messageReasonCode | number | No | 4-digit number | |
merchant | container | No | Card acceptor | |
merchantId | string | No | 15 character alphanumeric string | |
merchantName | string | No | Name of the merchant | |
merchantIndustryCode | string (enum) | Category of Merchant like | No | Card acceptor business code |
merchantIndustryCategory | string | No | MCC value examples 5812: Eating Places and Restaurants 5462: Bakers 5499: Misc food store 5813: Drinking Places 5814: Fast food Restraurants | |
merchantIndustryDescription | string | No | Description of the card acceptor industry | |
addressLine1 | string | No | Address line 1 of the card acceptor Variable length, separated from the remaining data elements and from each other by a backslash (). | |
city | string | No | City name of the card acceptor as known to the cardholder. Variable length, separated from the remaining data elements and from each other by a backslash (). | |
postalCode | string | No | Postal code of the card acceptor as know to the cardholder | |
stateProvReg | string | No | ||
country | string | No | Country name of the card acceptor as known to the cardholder | |
originalAmount | number | No | Mandatory for reversals | |
acquirerId | string | Yes | Code assigned by the authorizing institution | |
retrievalReferenceNumber | string | Yes | Referal must provide the RRN of the original transaction. 12 digit alphanumeric | |
terminalIdentifier | string | Yes | 8 character alphanumeric code to uniquely identify a terminal | |
originalTransactionForReferral | container | No | Original transaction | |
messageType | string | No | Type of message sent | |
systemTraceNumber | string | Yes | Sequential Value from Terminal from 000001 - 999999 | |
localDateTime | string | Yes | DateTime at which customer initiated transaction in timezone of customer. Format: YYMMDDhhmmss. | |
acquirerId | string | Yes | Code assigned by the authorizing institution | |
eCommerceIndicator | string (enum) | No | A one-digit field that contains the e-commerce indicator. |
Response
Response Body
{
"messageType": "financialRequestResponse (1210)",
"paymentInstrumentIdentifier": "string",
"transactionIdentifier": "string",
"systemTraceNumber": "string",
"retrievalReferenceNumber": "string",
"transactionAmount": 0,
"transactionCurrency": "string",
"approvalCode": "string",
"actionCode": "string",
"responseDetails": {
"code": 0,
"subCode": 0,
"description": "string",
"url": "string"
},
"additionalAmount": 0
}
Response Parameters
Field | Type | Required | Description |
|---|---|---|---|
messageType | string | No | Response of the message type |
paymentInstrumentIdentifier | string | Yes | Response of the GUID returned by Green Dot representing the Payment Instrument |
transactionIdentifier | string | Yes | Response of the 15 character alphanumber identifier |
systemTraceNumber | string | Yes | Sequential Value from Terminal from 000001 - 999999 |
retrievalReferenceNumber | string | No | Response of the referral that must provide the RRN of the original transaction. 12 digit alphanumeric |
transactionAmount | number($double) | No | Response of the transaction amount in local currency. |
transactionCurrency | string | Yes | Response for transaction currency.
|
approvalCode | string | No | Contains the approval code if the tx is approved |
actionCode | string | Yes | Fixed length response code, ex. 000 - Approved, 002 - Partial Approve, 116 - Insufficient Funds |
responseDetails | container | No | Contains response details |
code | integer($int32) | No | Response code |
subCode | integer($int32) | No | Response sub code |
description | string | No | Response description |
url | string | No | Response url |
additionalAmount | number | No | Contains cash back, balance amounts, etc |
Response Codes
| Code | Description |
|---|---|
| 201 | Customer profile created successfully |
| 400 | When some customer parameter is missing or wrong, see response code reference (SubCode Schema) for all possible response subCodes and descriptions. |
| 401 | Unauthorized access, wrong token access or expired |
| 403 | Forbidden |
| 500 | Server Error |
| 503 | Service unavailable, try again later or contact IT support |
Get Status of a Closed Loop Transaction
This API gets the status of a private network (closed loop) transaction.
Syntax
GET /programs/{programCode}/payments/{paymentInstrumentIdentifier}/status/{retrievalReferenceNumber}
Headers
| Field | Type | Description |
|---|---|---|
| X-GD-RequestId | string (header) | Unique ID in GUID format used for identify the request |
| programCode | string (path) | The program code assigned to the partner that the customer will belong |
| paymentInstrumentIdentifier | string (path) | PaymentInstrumentIdentifier of the payment device used for the transaction |
| retrievalReferenceNumber | string (path) | retrievalReferenceNumber of the payment authorized in /payments/authorize API |
Response
Response Body
{
"messageType": "financialRequestResponse (1210)",
"paymentInstrumentIdentifier": "string",
"transactionIdentifier": "string",
"systemTraceNumber": "string",
"retrievalReferenceNumber": "string",
"transactionAmount": 0,
"transactionCurrency": "string",
"approvalCode": "string",
"actionCode": "string",
"responseDetails": {
"code": 0,
"subCode": 0,
"description": "string",
"url": "string"
},
"additionalAmount": 0
}
Response Parameters
Field | Type | Required | Description |
|---|---|---|---|
messageType | string | No | Response of the message type |
paymentInstrumentIdentifier | string | Yes | Response of the GUID returned by Green Dot representing the Payment Instrument |
transactionIdentifier | string | Yes | Response of the 15 character alphanumber identifier |
systemTraceNumber | string | Yes | Sequential Value from Terminal from 000001 - 999999 |
retrievalReferenceNumber | string | No | Response of the referral that must provide the RRN of the original transaction. 12 digit alphanumeric |
transactionAmount | number($double) | No | Response of the transaction amount in local currency. |
transactionCurrency | string | Yes | Response for transaction currency.
|
approvalCode | string | No | Contains the approval code if the tx is approved |
actionCode | string | Yes | Fixed length response code, ex. 000 - Approved, 002 - Partial Approve, 116 - Insufficient Funds |
responseDetails | No | Contains response details | |
code | integer($int32) | No | Response code |
subCode | integer($int32) | No | Response sub code |
description | string | No | Response description |
url | string | No | Response url |
additionalAmount | number | No | Contains cash back, balance amounts, etc |
Response Codes
| Code | Description |
|---|---|
| 200 | Payment information returned successfully |
| 400 | When some payment's required parameter is missing or wrong, see response code reference (SubCode Schema) for all possible response subCodes and descriptions. |
| 401 | Unauthorized access, wrong token access or expired |
| 403 | Forbidden |
| 500 | Server Error |
| 503 | Service unavailable, try again later or contact IT support |
Updated 7 days ago
