ACH Transfers Methods

ACH Transfers Methods

Making a Transfer

A simple workflow for making a transfer to an external bank account looks like:

  1. Make a POST /customers/{customerid} request as documented at POST /customers to create a new customer. If holding an existing account, retrieve its AccountID from the Registration API.
  2. Make a POST/customers/{customerid}/links/type/{fundingtype} request using CustomerID from the previous response to create a funding link. Make a second similar request to setup a destination link. If using a Green Dot bank account for either the source or destination, skip establishing that link.
  3. Make a POST/transfers/{transferid} request using CustomerID from the previous response to create a funding source.
  4. Make a POST/transfers/confirm/{transferId} request using TransferId from the previous response to confirm or void the associated Transfer. (This step is only used for a 2-phase commit or void Transfer Process).

POST /transfers/{transferId}

Creates a transfer request to move funds from a source link to a destination link. The transferId is optional. If transferId is not passed, the Disbursement Platform will create one. The partner generated transferid must be unique for a given partner program and meet the following format criteria:

  • Length = 6-40 and allowable characters include alphanumeric and , - _ ~

The transfer status can be in one of the following statuses. The status of a transfer can be retrieved by checking Status on the response object of GET /transfers/TransferID.

StatusDescription
PendingThe transfer request is pending, and the funds have NOT been deposited to the recipient.
CompletedThe transfer request is complete, and the funds have been deposited to the recipient.
FailedThe transfer request failed, and the funds have NOT been deposited to the recipient.
RejectedThe transfer request is rejected, and the funds have NOT been deposited to the recipient.

Request

Field

Type

Format

Required

Description

transferobjects:sourceuri

string

Max 255 characters

Yes

The LinkURI of the funding source.

transferobjects:destinationuri

string

Max 255 characters

Yes

The LinkURI of the destination.

transaction:amount

string

Max 8 characters (99999.99)

Yes

Amount to be transferred.

transaction:currency

string

Max 3 characters

Yes

USD - US Dollar.

transaction:description

string

Max 250 characters

No

Optional transaction description.

transaction:transactiondate

string

ISO 8601

Yes

Transaction date time of transfer.

options

string

Array of key/value pair

No

Array of Key/Value pair that partner can use to pass any special options for the transfer.

retailer:retailerkey

string

Max 5 characters

Conditional

Retailer object is mandatory for POS transactions.

Retailer identifier for this transaction (Provided by Green Dot). This field is Mandatory if retailer complex object is passed with a non-null value.

retailer:storenumber

string

Max 50 characters

No

Store number or Store ID of the retailer where the transaction was initiated.

retailer:terminalid

string

Max 10 characters

No

Register/Terminal ID of the POS system where the transaction was initiated.

retailer:statecode

string

Max 2 characters

No

State where the transaction was initiated.

retailer:storename

string

Max 50 characters

No

Store where the transaction was initiated.

Response

  • transferid: The unique identifier for this transfer.
  • status: See the status table above.
  • claimcode: Optional. For Cash transactions, the recipient will use this claim code to claim cash at the register.
  • claimexpirationdate: Optional. For Cash transactions, the date and time the claim code expires.
  • fees: Complex object. See example below.
  • allowedamount: Maximum amount allowed for this transfer.
  • fundsavailability: Funds availability can conditionally be any one of the following:
    • IMMEDIATE
    • NEXT_BUSINESS_DAY
    • TWO_TO_FIVE_BUSINESS_DAYS
  • externalreferenceid: The transaction reference ID shared with the Card Issuer.
  • responsecode: Response code associated to the Transfer.
    • If 0 – Success, refer to transaction status to confirm is ‘Completed’ or ‘Pending.’
    • If not 0 – Success, it provides the code explaining why transaction failed.
  • responsemessage: Description of response code.
  • responsedate: The response date and time.
  • responsedetailcode: Detail code associated to Transfer Request.
  • responsedetailcodedescription: Detail description of detail code.

Request Sample

Creates a transfer request from source to destination.

{
   "transferobjects":{
      "sourceuri":"https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e",
      "destinationuri":"https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/gdaccounts/0739196f-6d05-4dd2-b8c3-576cd997ce17"
   },
   "transaction":{
      "amount":"25.00",
      "currency":"USD",
      "description":"Payroll",
      "transactiondate":"2015-11-16T15:20:000Z"
   },
   "options":[
      {
         "key":"Sample-Key1",
         "value":"Sample-Value1"
      },
      {
         "key":"Sample-Key2",
         "value":"Sample-Value2"
      }
   ]
}

Response Sample (Success)

{
   "transferid":"a359722c-78a6-4034-b77a-a5745153f79b",
   "status":"Completed",
   "claimcode":"3f8a377d-c834-4a41-840a-db37a93f89c6",
   "claimexpirationdate":null,
   "fees":null,
   "allowedamount":null,
   "fundsavailability":"IMMEDIATE",
   "externalreferenceid":"710400478098",
   "responsecode":0,
   "responsemessage":"Success",
   "responsedate":"2017-04-14T23:35:23.7061123Z",
   "responsedetail":{
      "responsedetailcode":0,
      "responsedetaildescription":"Success"
    }
}

POST/transfers Request (ACH)

{
   "transferobjects":{
      "sourceuri":"https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e",
      "destinationuri":"https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/950e4868-9f51-4a08-96a7-fcad96c4458e"
   },
   "transaction":{
      "amount":"350.00",
      "currency":"USD",
      "description":"ACH deposit to customer X",
      "transactiondate":"2015-11-16T15:20:000Z"
   },
   "retailer":null,
   "options":[
      {
         "key":"Sample-Key1",
         "value":"Sample-Value1"
      },
      {
         "key":"Sample-Key2",
         "value":"Sample-Value2"
      }
   ]
}

POST/transfers Response (ACH) (Success)

{
   "transferid":"a359722c-78a6-4034-b77a-a5745153f79b",
   "status":"Completed",
   "claimcode":"3f8a377d-c834-4a41-840a-db37a93f89c6",
   "claimexpirationdate":null,
   "fees":null,
   "allowedamount":null,
   "fundsavailability":"IMMEDIATE",
   "externalreferenceid":"710400478098",
   "responsecode":0,
   "responsemessage":"Success",
   "responsedate":"2017-04-14T23:35:23.7061123Z",
   "responsedetail":{
      "responsedetailcode":0,
      "responsedetaildescription":"Success"
   }
}