Global Payment Service Developer Guide

Transcription

Global Payment Service Developer Guide
Title Page
CyberSource Global Payment Service
Developer Guide
For Bank Transfers,
Brazilian Boletos Bancários,
and Direct Debits
Simple Order API
SCMP API
March 2015
CyberSource Corporation HQ | P.O. Box 8999 | San Francisco, CA 94128-8999 | Phone: 800-530-9095
CyberSource Contact Information
For general information about our company, products, and services, go to
http://www.cybersource.com.
For sales questions about any CyberSource Service, email [email protected] or
call 650-432-7350 or 888-330-2300 (toll free in the United States).
For support information about any CyberSource Service, visit the Support Center at
http://www.cybersource.com/support.
Copyright
© 2015 CyberSource Corporation. All rights reserved. CyberSource Corporation ("CyberSource") furnishes this
document and the software described in this document under the applicable agreement between the reader of
this document ("You") and CyberSource ("Agreement"). You may use this document and/or software only in
accordance with the terms of the Agreement. Except as expressly set forth in the Agreement, the information
contained in this document is subject to change without notice and therefore should not be interpreted in any way
as a guarantee or warranty by CyberSource. CyberSource assumes no responsibility or liability for any errors
that may appear in this document. The copyrighted software that accompanies this document is licensed to You
for use only in strict accordance with the Agreement. You should read the Agreement carefully before using the
software. Except as permitted by the Agreement, You may not reproduce any part of this document, store this
document in a retrieval system, or transmit this document, in any form or by any means, electronic, mechanical,
recording, or otherwise, without the prior written consent of CyberSource.
Restricted Rights Legends
For Government or defense agencies. Use, duplication, or disclosure by the Government or defense agencies
is subject to restrictions as set forth the Rights in Technical Data and Computer Software clause at DFARS
252.227-7013 and in similar clauses in the FAR and NASA FAR Supplement.
For civilian agencies. Use, reproduction, or disclosure is subject to restrictions set forth in subparagraphs (a)
through (d) of the Commercial Computer Software Restricted Rights clause at 52.227-19 and the limitations set
forth in CyberSource Corporation's standard commercial agreement for this software. Unpublished rights
reserved under the copyright laws of the United States.
Trademarks
CyberSource, The Power of Payment, CyberSource Payment Manager, CyberSource Risk Manager,
CyberSource Decision Manager, CyberSource Connect, Authorize.Net, and eCheck.net are trademarks and/or
service marks of CyberSource Corporation. All other brands and product names are trademarks or registered
trademarks of their respective owners.
2
CONTENTS
Contents
Recent Revisions to This Document
About This Guide
8
10
Audience and Purpose
10
Conventions 10
Note and Important Statements 10
Text and Command Conventions 10
Related Documents
Chapter 1
11
Customer Support
11
Getting Started
12
Global Collect
12
Bank Account Requirements
12
API Versions for the XML Schema
12
Order Tracking 13
Reconciliation IDs and Transaction Reference Numbers
Request IDs 14
Payment Reference Numbers 14
Chapter 2
13
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Requesting Bank Transfers
15
15
Requesting Bank Transfer Refunds
Researching a Missing Payment
16
17
API Fields 18
Request Fields 18
Reply Fields 25
Request and Reply Examples 28
Bank Transfer Request 28
Bank Transfer Reply 29
Standalone Bank Transfer Refund Request 30
Standalone Bank Transfer Refund Reply 31
Global Payment Service Developer Guide | March 2015
3
Contents
Follow-On Bank Transfer Refund Request 31
Follow-On Bank Transfer Refund Reply 32
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Requesting Bank Transfers
33
33
Requesting Bank Transfer Refunds
Researching a Missing Payment
34
35
API Fields 36
Request Fields 36
Offer-Level Fields 41
Reply Fields 42
Reply Flags 45
Request and Reply Examples 46
Bank Transfer Request 46
Bank Transfer Reply 47
Standalone Bank Transfer Refund Request 48
Standalone Bank Transfer Refund Reply 49
Follow-On Bank Transfer Refund Request 49
Follow-On Bank Transfer Refund Reply 50
Chapter 4
Real-Time Bank Transfers Using the Simple Order API
51
Transaction Status 51
Sending the Query 51
Viewing the Response 53
Requesting Real-Time Bank Transfers
54
Requesting Real-Time Bank Transfer Refunds
API Fields 55
Request Fields 55
Bank Codes 60
Reply Fields 61
Additional Request Fields
63
Request and Reply Examples 64
Real-Time Bank Transfer Request 64
Real-Time Bank Transfer Reply 65
Real-Time Bank Transfer Refund 65
Real-Time Bank Transfer Refund Reply
Global Payment Service Developer Guide | March 2015
55
66
4
Contents
Chapter 5
Real-Time Bank Transfers Using the SCMP API
67
Transaction Status 67
Sending the Query 67
Viewing the Response 69
Requesting Real-Time Bank Transfers
70
Requesting Real-Time Bank Transfer Refunds
API Fields 71
Request Fields 71
Offer-Level Fields 75
Bank Codes 76
Reply Fields 78
Reply Flags 79
Additional Request Fields
71
80
Request and Reply Examples 81
Real-Time Bank Transfer Request 81
Real-Time Bank Transfer Reply 81
Real-Time Bank Transfer Refund Request 82
Real-Time Bank Transfer Refund Reply 83
Chapter 6
Boletos Bancários Using the Simple Order API
Requesting a Boleto Bancário
API Fields 84
Data Type Definitions
Request Fields 85
Reply Fields 86
84
84
84
Examples 88
Name-Value Pairs: Request 88
Name-Value Pairs: Reply 88
XML: Request 89
XML: Reply 89
Chapter 7
Boletos Bancários Using the SCMP API
Requesting a Boleto Bancário
90
90
API Fields 90
Request Fields 90
Reply Fields 92
Reply Flags 94
Request and Reply Examples
Request 95
Reply 95
Global Payment Service Developer Guide | March 2015
95
5
Contents
Chapter 8
Reports for Boletos Bancários
96
Boleto Bancário Unfulfilled Report 96
Viewing and Downloading Reports 96
XML Conventions and Data Types 97
Syntax for Report Declarations 97
Syntax for Element Declarations 98
Data Types and Lengths 98
Elements in the Report 99
<Report> 99
<Summary> 101
<Range> 103
<TransactionDetail> 104
<Transaction> 105
DTD 108
Example 109
Single Transaction Report
Chapter 9
112
Direct Debits and Direct Debit Refunds Using the Simple Order API
Requesting Direct Debits
115
115
Requesting Direct Debit Refunds
116
API Fields 118
Request Fields 118
Reply Fields 126
Request and Reply Examples 128
Direct Debit Request 128
Direct Debit Reply 129
Standalone Direct Debit Refund Request
Follow-On Direct Debit Refund 130
Chapter 10
129
Direct Debits and Direct Debit Refunds Using the SCMP API
Requesting Direct Debits
132
132
Requesting Direct Debit Refunds
133
API Fields 135
Request Fields 135
Offer-Level Fields 141
Reply Fields 142
Reply Flags 144
Request and Reply Examples 145
Direct Debit Request 145
Direct Debit Refund—Standalone 147
Direct Debit Refund—Follow-On 148
Global Payment Service Developer Guide | March 2015
6
Contents
Chapter 11
Testing
149
Sending Test Requests
149
Testing Bank Transfers, Direct Debits, and Refunds
149
Testing Real-Time Bank Transfers 151
Testing Your CyberSource Interface 151
Testing Your Network Interface 152
Going Live
153
Appendix A Product Codes
154
Appendix B Reason Codes
155
Reason Codes for the Simple Order API
155
Appendix C Researching a Missing Bank Transfer Payment
Index
158
161
Global Payment Service Developer Guide | March 2015
7
REVISIONS
Recent Revisions to This
Document
Release
Changes
March 2015

Updated Example 15. See page 54.

Updated Example 22. See page 70.
January 2015
Removed the Interac processor from the document.
December 2014
Removed requirement to send request token fields with follow-on bank
transfer and direct debit refunds. See the following sections:

Bank transfers:
 Simple Order API—"Requesting Bank Transfer Refunds," page 16


SCMP API—"Requesting Bank Transfer Refunds," page 34
Direct debits:
 Simple Order API—"Requesting Direct Debit Refunds," page 116

SCMP API—"Requesting Direct Debit Refunds," page 133
Updated customer company API request field length specifications and
added shipping name and phone number API request fields to the following
tables:

Bank transfers:
 Simple Order API—Table 5, page 18


SCMP API—Table 7, page 36
Real-time bank transfers:
 Simple Order API—Table 12, page 55

SCMP API—Table 17, page 71
Updated the response examples for Simple Order API real-time bank
transfer payments. See "Viewing the Response," page 53.
Added the request token API reply field to the following tables:

Real-time bank transfers:
 Simple Order API—Table 14, page 61

SCMP API—Table 20, page 78
Added the bank SWIFT code information to the following sections:

Direct debits:
 Simple Order API—"Requesting Direct Debits," page 115, Table 37,
page 118, and Example 41, page 128

SCMP API—"Requesting Direct Debits," page 132, Table 39,
page 135, Example 47, page 145, and Example 49, page 147
Global Payment Service Developer Guide | March 2015
8
Recent Revisions to This Document
Release
Changes
September 2014
This revision contains only editorial changes and no technical updates.
August 2014
Removed the following request fields for direct debits and direct debit
refunds:
July 2014

directDebitService_mandateID

direct_debit_mandate_id
Added examples to the following sections:

Bank transfers
 Simple Order API— page 28.


Real-time bank transfers
 Simple Order API—page 64.


SCMP API—page 46.
SCMP API—page 81.
Direct debits
 Simple Order API—page 128.

SCMP API—page 145.
Global Payment Service Developer Guide | March 2015
9
ABOUT GUIDE
About This Guide
Audience and Purpose
This guide is written for merchants who want to use the Global Collect processor to offer
the Global Payment services to customers. This guide describes the tasks a merchant
must complete in order to make bank transfers and bank transfer refunds, real-time bank
transfers, boleto bancario payments, and direct debits and direct debit refunds.
Conventions
Note and Important Statements
A Note contains helpful suggestions or references to material not contained in
the document.
Note
An Important statement contains information essential to successfully
completing a task or learning a concept.
Important
Text and Command Conventions
Convention
Usage
bold

Field and service names in text; for example:
Include the ics_applications field.

Items that you are instructed to act upon; for example:
Click Save.
Global Payment Service Developer Guide | March 2015
10
About This Guide
Convention
Usage
monospace

XML elements.

Code examples and samples.

Text that you enter in an API environment; for example:
Set the davService_run field to true.
Related Documents

The Global Payment Service Planning Guide (PDF | HTML) describes the business
and technical implementations a merchant must complete in order to make bank
transfers and bank transfer refunds, real-time bank transfers, boleto bancario
payments, and direct debits and direct debit refunds.

Credit Card Services Using the Simple Order API (PDF | HTML) describes the tasks
you must complete to integrate the credit card services into your existing management
system.

Credit Card Services Using the SCMP API (PDF | HTML) describes the tasks you
must complete to integrate the credit card services into your existing order
management system.

Getting Started with CyberSource Advanced for the Simple Order API (PDF | HTML)
describes how to get started using the Simple Order API.

Getting Started with CyberSource Advanced for the SCMP API (PDF | HTML)
describes how to get started using the SCMP API.

The Reporting Developer Guide (PDF | HTML) describes how to download reports.
Refer to the Support Center for complete CyberSource technical documentation:
http://www.cybersource.com/support_center/support_documentation
Customer Support
For support information about any CyberSource service, visit the Support Center:
http://www.cybersource.com/support
Global Payment Service Developer Guide | March 2015
11
CHAPTER
1
Getting Started
Global Collect
The Global Payment Service supports the Global Collect processor. This processor
supports all the countries mentioned in the Global Payment Service Planning Guide
(PDF | HTML)
Bank Account Requirements
Become familiar with the bank account requirements for the countries in which you will be
processing payments. Contact CyberSource Customer Support for required countryspecific bank account information.
API Versions for the XML Schema
For general information about the API versions, see Getting Started with CyberSource
Advanced for the Simple Order API. The following table shows which Simple Order API
version to use for new payment methods.
Table 1
Choosing a Simple Order API Version
Payment Method
Version
Boletos Bancários
1.42 or later
Real-time bank transfers
1.23 or later
Global Payment Service Developer Guide | March 2015
12
Chapter 1
Getting Started
Order Tracking
For general information about order tracking, see Getting Started with CyberSource
Advanced for the Simple Order API or Getting Started with CyberSource Advanced for the
SCMP API.
Reconciliation IDs and Transaction Reference
Numbers
The following table lists the field names for the reconciliation IDs and transaction
reference numbers for the Global Payment Service payment methods.
Table 2
Reconciliation IDs and Transaction Reference Numbers
Payment Method
Service
Field Names
Bank transfers
Bank transfer

Simple Order API: bankTransferReply_reconciliationID

SCMP API: bank_transfer_trans_ref_no
Bank transfer
refund

Simple Order API: bankTransferRefundReply_reconciliationID

SCMP API: bank_transfer_refund_trans_ref_no
Real-time bank
transfer

Simple Order API: bankTransferRealTimeReply_
reconciliationID

SCMP API: bank_transfer_real_time_trans_ref_no
Boleto Bancário
payment

Simple Order API: boletoPaymentReply_reconciliationID

SCMP API: boleto_payment_trans_ref_no
Direct debit

Simple Order API: directDebitReply_reconciliationID

SCMP API: direct_debit_trans_ref_no

Simple Order API: directDebitRefundReply_reconciliationID

SCMP API: direct_debit_refund_trans_ref_no
Boletos Bancários
Direct debits
Direct debit refund
Global Payment Service Developer Guide | March 2015
13
Chapter 1
Getting Started
Request IDs
For all Global Payment Services, the request ID is returned in the reply message in:

requestID for the Simple Order API

request_id for the SCMP API
The following table lists the field names for the Global Payment Service request IDs in the
request messages.
Table 3
Reconciliation IDs and Transaction Reference Numbers
Payment Method
Service
Field Names
Bank transfers
Bank transfer
refund for a bank
transfer

Simple Order API:
bankTransferRefundService_bankTransferRequestID

SCMP API: bank_transfer_request_id
Bank transfer
refund for a realtime bank transfer

Simple Order API:
bankTransferRefundService_
bankTransferRealTimeRequestID

SCMP API: bank_transfer_real_time_request_id

Simple Order API: directDebitRefundService_
directDebitRequestID

SCMP API: direct_debit_request_id
Direct debits
Direct debit refund
Payment Reference Numbers
The payment reference number is a unique value for each bank transfer. CyberSource
returns this value in the bank transfer reply message, and you must display it prominently
to the customer. The customer must send in the number with the bank transfer so that the
payment can be matched to the order.
The following table lists the field names for the payment reference numbers.
Table 4
Payment Reference Numbers
Service
Field Names
Bank transfer

Simple Order API: bankTransferReply_paymentReference

SCMP API: bank_transfer_payment_reference

Simple Order API: bankTransferRealTimeReply_
paymentReference

SCMP API: bank_transfer_real_time_payment_reference
Real-time bank
transfer
Global Payment Service Developer Guide | March 2015
14
CHAPTER
Bank Transfers and Bank
Transfer Refunds Using the
Simple Order API
2
Requesting Bank Transfers
To request a bank transfer, set the bankTransferService_run field to true. See Table 5,
page 18, for a list of the fields to use when requesting the service.
When requesting a bank transfer, you may not request any other ICS service except Tax
Calculation. For more information about the service, see Tax Calculation Service Using
the Simple Order API.
In the bank transfer reply, you receive fields containing information about the bank and
bank account that the customer should transfer funds to. Display this information to
customers so that they can easily transcribe it or print it and give it to their banks.
The information includes the bank’s name, bank’s country, the account holder’s name, and
so on. The primary field containing the bank account information is bankTransferReply_
accountNumber. This field contains the bank account number information you need to
display, including a bank code or sort code, branch code or check digit, if any of those are
used for the particular country. You can display the contents of the field as you receive it in
the reply from CyberSource.
You might also receive the bankTransferReply_iban field with the International Bank
Account Number (IBAN). The IBAN is an international standard for bank account numbers
that the EU is adopting. In the future, the EU is planning to switch to using only the IBAN
format and not the original format presented in bankTransferReply_accountNumber. If
the IBAN is present in the reply, display it to the customer along with the other bank
information, and identify it as the IBAN.
Depending on the country, you might also receive the bank’s SWIFT code, which is
another bank identifier. When the bankTransferReply_bankSwiftCode field is present,
display the SWIFT code to the customer along with the other bank information, and
identify it as the SWIFT code.
Global Payment Service Developer Guide | March 2015
15
Chapter 2
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Requesting Bank Transfer
Refunds
Important
From August 1, 2016, for euro countries and from October 31, 2016, for noneuro countries, the IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN, and this conversion process will continue
only until August 1, 2016.
a
Important
A follow-on refund must occur within 60 days of the request for the bank
transfer. After the time limit expires, only a stand-alone refund can be
requested. To refund a bank transfer, wait 1 to 3 days after the bank transfer
request is processed by CyberSource. When you attempt to request a followon refund before the initial bank transfer is processed into your merchant bank
account, the error ORDER WITHOUT REFUNDABLE PAYMENTS is
displayed. This error could also mean that your account is not configured for
standalone refunds with Global Collect. To configure your account, please
contact CyberSource Customer Support.
There are two types of bank transfer refunds: follow-on refunds and stand-alone refunds.
A follow-on refund uses information from a previous bank transfer. A stand-alone refund
does not depend on a previous transaction.
To request a bank transfer refund:

Set the bankTransferRefundService_run field to true.

Do not request any other ICS services except Tax Calculation, which is optional. For
more information about this service, see Tax Calculation Service Using the Simple
Order API.

Send the fields required for a bank transfer refund request as described in Table 5,
page 18. For a follow-on refund, the fields and values must match the fields and
values you sent in the bank transfer request.

For a stand-alone refund, the bankTransferRefundService_
bankTransferRequestID field is optional. See page 30.

For a follow-on refund, include one of these fields from the original request with the
request ID (see page 31):


bankTransferRefundService_bankTransferRequestID

bankTransferRefundService_bankTransferRealTimeRequestID
The easiest way to implement bank transfer refunds is to always send the request ID
from the original bank transfer with every bank transfer refund request.
Global Payment Service Developer Guide | March 2015
16
Chapter 2

Bank Transfers and Bank Transfer Refunds Using the Simple Order API
CyberSource recommends that when you request a refund, you use the same value
for merchantReferenceCode that you used for the bank transfer. This makes it
easier for you to link the refund to the original bank transfer in your own system as
well as in CyberSource reports and transaction search screens.
CyberSource validates basic checks the format of the bank account number before
performing the bank transfer refund. If the account number does not pass the validation,
CyberSource rejects the request with reasonCode=244 instead of processing the bank
transfer refund. CyberSource recommends that you then confirm that the customer
entered the number correctly, and if it is incorrect, request the refund again with the
correct number.
You may perform multiple partial refunds against a bank transfer. The sum of the refunds
may not exceed the amount of the payment.
You do not receive an error in the reply for either of the following conditions:

The bankTransferRefundService_bankTransferRequestID field is invalid.

The customer’s payment has not yet been received.
Instead, CyberSource does not process the refund, and the transaction appears in the
daily Transaction Exception Detail Report. You should monitor this report daily for
transactions problems. For descriptions of the reason codes that can appear in the report,
see "Reason Codes," page 155. For information about the report and how to use it, see
the Global Payment Service Planning Guide. For details about downloading the report and
its format, see the Reporting Developer Guide.
Researching a Missing Payment
If CyberSource cannot match the customer’s payment information to the information you
submit in the original bank transfer request (typically because the customer made a
mistake), a situation could arise in which a customer makes a bank transfer payment but
does not receive the goods, and CyberSource’s report and your bank account statement
do not show that you received the payment. You can make a payment inquiry in the
Business Center and have CyberSource research the missing payment and try to match
your request with the customer’s payment.
Note
You must wait at least five days after the funds are debited from the customer’s
account before initiating an inquiry because it can take that long for the funds to
appear in your account and in CyberSource’s reports. CyberSource does not
allow you to perform an inquiry within five days of submitting the initial bank
transfer request.
For instructions on using the Business Center to research a lost payment, see
Appendix C, "Researching a Missing Bank Transfer Payment," on page 158.
Global Payment Service Developer Guide | March 2015
17
Chapter 2
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
API Fields
For information about the data types, see Getting Started with CyberSource Advanced for
the Simple Order API.
Request Fields
The following table lists the fields to use in requests for bank transfers and bank transfer
refunds.
Table 5
Request Fields for Bank Transfers and Bank Transfer Refunds
for the Simple Order API
Request Field
Description
Used By and
Required (R) or
Optional (O)
Data Type
& Length
bankInfo_address
Bank’s address.
Refund (O)
String (255)
bankInfo_bankCode
Bank's code. Used for some countries
when you are not using the IBAN. Contact
CyberSource Customer Support for
required country-specific bank account
information.
Refund (See
description)
String (See
description)
Note This is a required field if the
bankInfo_country field is GB, AT, FR, or
DE. For more information see the twocharacter ISO Standard Country Codes.
bankInfo_branchCode
Code that identifies the branch of the
customer's bank when you are not using
the IBAN.
Refund (O)
String (15)
bankInfo_city
City in which the bank is located.
Refund (O)
String (40)
Bank Transfer
(See description)
String (2)
Some banks validate the bank account
information, so consider sending this field
if the bank is not located in the same city
of the billing address.
bankInfo_country
Country in which the bank is located. Use
the two-character ISO Standard Country
Codes.
Refund (R)
Note If bankInfo_country is not set,
CyberSource uses billTo_country to
determine the country in which the bank
transfer is taking place.
1. Required if billTo_country value is US or CA
2. Required if any shipping information is included
3. Required if shipTo_country value is US or CA
Global Payment Service Developer Guide | March 2015
18
Chapter 2
Table 5
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Request Fields for Bank Transfers and Bank Transfer Refunds
for the Simple Order API (Continued)
Request Field
Description
Used By and
Required (R) or
Optional (O)
Data Type
& Length
bankInfo_name
Bank's name.
Refund (See
description)
String (40)
Bank Transfer (O)
String (30)
Note This is a required field if the
bankInfo_country field is AU, FI, FR, IT,
NO, ES, SE, or CH. For more information
see the two-character ISO Standard
Country Codes.
bankInfo_swiftCode
Bank’s SWIFT code. Unique address of
the bank. Also known as the Bank
Identification Code (BIC).
Refund (O)
Note This field is required when the
IBAN is included in the request.
bankTransferRefundService_
bankTransferRequestID
The requestID value returned from a
previous request for the bank transfer
service.
Refund (R)
String (26)
bankTransferRefundService_
reconciliationID
Unique identifier for the order submitted to
Global Collect.
Refund (R for
standalone
refunds)
String (60)
Note If you do not include this field in a
refund request, CyberSource will
generate the value.
bankTransferRefundService_
run
Set to true to include the bank transfer
refund service in your request.
Refund (R)
String (5)
bankTransferService_run
Set to true to include the bank transfer
service in your request.
Bank Transfer (R)
String (5)
billTo_city
City of the billing address.
Bank Transfer (R)
String (50)
Refund (R)
billTo_company
Name of the customer’s company.
Bank Transfer (O)
String (60)
billTo_country
Billing address country. Use the ISO
Standard Country Codes.
Bank Transfer (R)
String (2)
Customer’s email address, including the
full domain name. For example:
[email protected]
Bank Transfer (R)
Customer’s first name.
Bank Transfer (R)
billTo_email
billTo_firstName
Refund (R)
String (255)
Refund (R)
String (60)
Refund (R)
billTo_lastName
Customer’s last name.
Bank Transfer (R)
String (60)
Refund (R)
1. Required if billTo_country value is US or CA
2. Required if any shipping information is included
3. Required if shipTo_country value is US or CA
Global Payment Service Developer Guide | March 2015
19
Chapter 2
Table 5
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Request Fields for Bank Transfers and Bank Transfer Refunds
for the Simple Order API (Continued)
Request Field
Description
Used By and
Required (R) or
Optional (O)
Data Type
& Length
billTo_phoneNumber
Customer’s telephone number.
Bank Transfer (O)
String (15)
Refund (O)
billTo_postalCode
Postal code for the billing address. The
postal code must consist of 5 to 9 digits.
Bank Transfer (R)
String (10)
Refund (R)
If the value of billTo_country is US, the
9-digit postal code must follow this format:
[5 digits][dash][4 digits]
Example: 12345-6789
If the value of billTo_country is CA, the
6-digit postal code must follow this format:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C3
billTo_state
Billing address state.
Bank Transfer
(R)1
String (2)
Refund (R)1
billTo_street1
Billing address street address.
Bank Transfer (R)
String (60)
Refund (R)
billTo_street2
Additional address information.
Bank Transfer (O)
String (60)
Refund (O)
fundTransfer_accountName
Name used on the bank account. If you do
not send this field, it is assumed the last
name on the account is the billTo_
lastName value. Some banks validate the
name on the bank account, so consider
sending this field if the bank account
owner is not the customer. This scenario
might happen, for example, if a husband
places the order, but the wife’s name is on
the bank account.
Refund (O)
String (50)
Contact CyberSource Customer Support
for required country-specific bank account
information.
1. Required if billTo_country value is US or CA
2. Required if any shipping information is included
3. Required if shipTo_country value is US or CA
Global Payment Service Developer Guide | March 2015
20
Chapter 2
Table 5
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Request Fields for Bank Transfers and Bank Transfer Refunds
for the Simple Order API (Continued)
Request Field
Description
Used By and
Required (R) or
Optional (O)
Data Type
& Length
fundTransfer_accountNumber
Bank account number.
Refund (O)
String (See
description)
Note From August 1, 2016, for euro
countries and from October 31, 2016, for
non-euro countries, the IBAN must be
included in each request. If you provide a
BBAN it will be converted to an IBAN, and
this conversion process will continue only
until August 1, 2016.
Note Do not use the IBAN in this field.
include the IBAN in the fundTransfer_
iban field.
fundTransfer_bankCheckDigit
Code used to validate the customer's
account number when you are not using
the IBAN. Contact CyberSource Customer
Support for required country-specific bank
account information.
Refund (O)
String (2)
fundTransfer_iban
International Bank Account Number
(IBAN) for the bank account.
Refund (See
description)
String (30)
Bank Transfer (O)
String (30)
Note Required for specific countries.
Contact CyberSource Customer Support
for required country-specific bank account
information.
item_#_productCode
Type of product, which is also used to
determine the product category:
electronic, handling, physical, service, or
shipping. The default value is default.
See "Product Codes," page 154, for a list
of valid values.
Refund (O)
For bank transfers, if you set this field to a
value other than default, stored_
value, or any of the values related to
shipping and/or handling, the item_#_
quantity, item_#_productName, and
item_#_productSKU fields are required.
item_#_productName
Name of the product. For bank transfers,
required if item_#_productCode is NOT
default, stored_value, or one of
the values related to shipping and/or
handling.
Bank Transfer
(See description)
String (30)
Refund (O)
1. Required if billTo_country value is US or CA
2. Required if any shipping information is included
3. Required if shipTo_country value is US or CA
Global Payment Service Developer Guide | March 2015
21
Chapter 2
Table 5
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Request Fields for Bank Transfers and Bank Transfer Refunds
for the Simple Order API (Continued)
Request Field
Description
Used By and
Required (R) or
Optional (O)
Data Type
& Length
item_#_productSKU
Product identifier code. For bank
transfers, required if item_#_
productCode is NOT default,
stored_value, or one of the values
related to shipping and/or handling.
Bank Transfer
(See description)
String (30)
Quantity of the product being purchased.
For bank transfers, required if item_#_
productCode is NOT default,
stored_value, or one of the values
related to shipping and/or handling.
Bank Transfer
(See description)
Tax amount associated with this item. The
item_#_taxAmount field is additive. For
example, if you send one item with
unitPrice of 10.00 and taxAmount of
0.80, and you send another item with
unitPrice of 20.00 and taxAmount of
1.60, the total amount authorized will be
for 32.40, not 30.00 with 2.40 of tax
included.
Bank Transfer (O)
item_#_quantity
item_#_taxAmount
Refund (O)
Integer (10)
Refund (O)
String (15)
Refund (O)
The item_#_taxAmount and the item_#_
unitPrice must be in the same currency.
If you include item_#_taxAmount, and
you also include taxService in your
request, taxService does not calculate
tax for the item. Instead, it returns the
value in the item_#_taxAmount field.
item_#_unitPrice
Per-item price of the product. You must
include either this field or
purchaseTotals_grandTotalAmount in
your request. This value cannot be
negative. For more information, see
Getting Started with CyberSource
Advanced for the Simple Order API.
Bank Transfer
String (15)
Refund
(See description)
You can include a decimal point (.) in this
field, but you cannot include any other
special characters. The amount will be
truncated at the request level to the
correct number of decimal places.
1. Required if billTo_country value is US or CA
2. Required if any shipping information is included
3. Required if shipTo_country value is US or CA
Global Payment Service Developer Guide | March 2015
22
Chapter 2
Table 5
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Request Fields for Bank Transfers and Bank Transfer Refunds
for the Simple Order API (Continued)
Request Field
Description
Used By and
Required (R) or
Optional (O)
Data Type
& Length
linkToRequest
Value that links the current request to a
previous authorization request for a debit
card or prepaid card. This value is useful
when multiple payment methods are used
to complete an order. For more
information, see Credit Card Services
Using the Simple Order API.
Bank Transfer (O)
String (26)
merchantID
Your CyberSource merchant ID.
Bank Transfer (R)
String (30)
Note When opening your account with
Refund (R)
CyberSource, be sure to inform
CyberSource if you plan to use multiple
CyberSource merchant IDs. For example,
if you have separate business units within
your company, each with a separate
CyberSource merchant ID. You must have
a separate processor merchant ID for
each CyberSource merchant ID. For more
information, contact CyberSource
Customer Support.
Merchant-generated order reference or
tracking number. For more information,
see Getting Started with CyberSource
Advanced for the Simple Order API.
Bank Transfer (R)
Currency used for the order. Use the ISO
Standard Currency Codes.
Bank Transfer (R)
Grand total for the order. You must include
either this field or item_#_unitPrice in
your request. For more information, see
Getting Started with CyberSource
Advanced for the Simple Order API.
Bank Transfer
shipTo_city
City of the shipping address.
Bank Transfer
(O)2
String (50)
shipTo_country
Country of the shipping address. Use the
two-character ISO Standard Country
Codes.
Bank Transfer (O)
String (2)
shipTo_firstName
First name of the person receiving the
product.
Bank Transfer (O)
String (60)
shipTo_lastName
Last name of the person receiving the
product.
Bank Transfer (O)
String (60)
merchantReferenceCode
purchaseTotals_currency
purchaseTotals_
grandTotalAmount
String (50)
Refund (R)
String (5)
Refund (R)
String (15)
Refund
See description
1. Required if billTo_country value is US or CA
2. Required if any shipping information is included
3. Required if shipTo_country value is US or CA
Global Payment Service Developer Guide | March 2015
23
Chapter 2
Table 5
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Request Fields for Bank Transfers and Bank Transfer Refunds
for the Simple Order API (Continued)
Request Field
Description
Used By and
Required (R) or
Optional (O)
Data Type
& Length
shipTo_phoneNumber
Phone number for the shipping address.
Bank Transfer (O)
String (15)
shipTo_postalCode
Postal code for the shipping address. The
postal code must consist of 5 to 9 digits.
Bank Transfer
(O)3
String (10)
If the value of shipTo_country is US, the
9-digit postal code must follow these
rules:
[5 digits][dash][4 digits]
Example: 12345-6789
If the value of shipTo_country is CA, the
6-digit postal code must follow these
rules:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C4
If the postal code for the shipping address
is not included in the request message,
CyberSource uses the postal code from
the billing address. If the postal code for
the billing address is not included in the
request message, the postal code for the
shipping address is required.
shipTo_state
State or province of the shipping address.
Use the State, Province, and Territory
Codes for the United States and Canada.
Bank Transfer
(O)3
String (2)
shipTo_street1
First line of the shipping address.
Bank Transfer
(O)2
String (60)
shipTo_street2
Second line of the shipping address.
Bank Transfer (O)
String (60)
1. Required if billTo_country value is US or CA
2. Required if any shipping information is included
3. Required if shipTo_country value is US or CA
Global Payment Service Developer Guide | March 2015
24
Chapter 2
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Reply Fields
The following table lists the fields returned in a reply from bankTransferService or
bankTransferRefundService service request.
Table 6
Bank Transfer and Bank Transfer Refund Reply Fields
for the Simple Order API
Reply Field
Description
Returned By
Data Type
& Length
bankTransferRefundReply_
amount
Total amount for the bank transfer refund.
Refund
String (15)
bankTransferRefundReply_
iban
International Bank Account Number (IBAN)
for the bank account.
Refund
Alphanumeric
(50)
bankTransferRefundReply_
processorResponse
Response code from the processor.
Refund
String (10)
bankTransferRefundReply_
reasonCode
A numeric value corresponding to the result
of the bank transfer refund request. See
"Reason Codes," page 155, for a list of
possible values.
Refund
Integer (5)
bankTransferRefundReply_
reconciliationID
Unique value generated by CyberSource. For
more information, see Getting Started with
CyberSource Advanced for the Simple Order
API.
Refund
String (60)
bankTransferRefundReply_
requestDateTime
Time the bank transfer refund was requested.
Format: YYYY-MM-DDThh:mm:ssZ.
Example: 2007-08-11T22:47:57Z, which is
August 11, 2007, at 10:47:57 P.M. The T
separates the date and the time. The Z
indicates UTC.
Refund
String (20)
bankTransferReply_
accountHolder
Name of the account holder.
Bank Transfer
String (50)
bankTransferReply_
accountNumber
Bank account number. Use the contents of
this field along with the contents of the
bankTransferReply_bankSpecialID field to
display the country’s traditional
representation of the full bank account
number on the bank transfer confirmation
page.
Bank Transfer
String (30)
Contact CyberSource Customer Support for
required country-specific bank account
information.
bankTransferReply_amount
Total amount for the bank transfer.
Bank Transfer
String (15)
bankTransferReply_bankCity
City in which the bank is located.
Bank Transfer
String (50)
bankTransferReply_
bankCountry
Country in which the bank is located.
Bank Transfer
String (50)
Global Payment Service Developer Guide | March 2015
25
Chapter 2
Table 6
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Bank Transfer and Bank Transfer Refund Reply Fields
for the Simple Order API (Continued)
Reply Field
Description
Returned By
Data Type
& Length
bankTransferReply_
bankName
Name of the bank.
Bank Transfer
String (50)
bankTransferReply_
bankSpecialID
Special ID used for the bank. For example,
the sort code for U.K. banks. This field is only
for the Global Collect processor. Use the
contents of this field along with the contents
of the bankTransferReply_accountNumber
field to display the country’s traditional
representation of the full bank account
number on the bank transfer confirmation
page. Contact CyberSource Customer
Support for required country-specific bank
account information.
Bank Transfer
String (50)
bankTransferReply_
bankSwiftCode
Bank’s SWIFT code. Unique address of the
bank. Also known as the Bank Identification
Code (BIC). If this field is in the reply, display
the value to the customer along with the other
bank information.
Bank Transfer
String (50)
bankTransferReply_iban
International Bank Account Number (IBAN)
for the bank account. If this field is in the
reply, display the value to the customer along
with the other bank information.
Bank Transfer
String (30)
Note Required for specific countries.
Contact CyberSource Customer Support for
required country-specific bank account
information.
bankTransferReply_
paymentReference
Payment reference number that you must
display to the customer. For more
information, see Getting Started with
CyberSource Advanced for the Simple Order
API. In Italy, this is called the Numero di
riferimento.
Bank Transfer
String (16)
bankTransferReply_
processorResponse
Response code from the processor.
Bank Transfer
String (10)
bankTransferReply_
reasonCode
A numeric value corresponding to the result
of the bank transfer request. See "Reason
Codes," page 155, for a list of possible
values.
Bank Transfer
Integer (5)
bankTransferReply_
reconciliationID
Unique value generated by CyberSource. For
more information, see Getting Started with
CyberSource Advanced for the Simple Order
API.
Bank Transfer
String (60)
Global Payment Service Developer Guide | March 2015
26
Chapter 2
Table 6
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Bank Transfer and Bank Transfer Refund Reply Fields
for the Simple Order API (Continued)
Reply Field
Description
Returned By
Data Type
& Length
bankTransferReply_
requestDateTime
Time the bank transfer was requested.
Format: YYYY-MM-DDThh:mm:ssZ.
Example: 2005-08-11T22:47:57Z, which is
August 11, 2005, at 10:47:57 P.M. The T
separates the date and the time. The Z
indicates UTC.
Bank Transfer
String (20)
decision
Summarizes the result of the overall request.
Possible values:
Bank Transfer
and Refund
String (6)

ACCEPT

ERROR

REJECT
invalidField_0...N
Fields in the request that contained invalid
data. These reply fields are included as an
aid to software developers only. No attempt
should be made to use these fields for end
user interaction. For more information, see
Getting Started with CyberSource Advanced
for the Simple Order API.
Bank Transfer
and Refund
String (100)
merchantReferenceCode
Order reference or tracking number that you
provided in the request. If you included multibyte characters in this field in the request, the
returned value might contain corrupted
characters.
Bank Transfer
and Refund
String (50)
missingField_0...N
Required fields that were missing from the
request. These reply fields are included as an
aid to software developers only. No attempt
should be made to use these fields for end
user interaction. For more information, see
Getting Started with CyberSource Advanced
for the Simple Order API.
Bank Transfer
and Refund
String (100)
purchaseTotals_currency
Currency used for the order. Uses the ISO
Standard Currency Codes.
Bank Transfer
and Refund
String (5)
reasonCode
Numeric value corresponding to the result of
the overall request. See "Reason Codes,"
page 155, for a list of possible values.
Bank Transfer
and Refund
Integer (5)
requestID
Identifier for the request.
Bank Transfer
and Refund
String (26)
Global Payment Service Developer Guide | March 2015
27
Chapter 2
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Request and Reply Examples
Bank Transfer Request
Example 1
Bank Transfer Request
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.23">
<merchantID>infodev</merchantID>
<merchantReferenceCode>482046C3A7E94F5</merchantReferenceCode>
<billTo>
<firstName>John</firstName>
<lastName>Smith</lastName>
<street1>Boschdijk 987</street1>
<city>Eindhoven</city>
<postalCode>5600 PB</postalCode>
<country>NL</country>
<email>[email protected]</email>
</billTo>
<bankInfo>
<bankCountry>NL</bankCountry>
<bankCity>Amsterdam</bankCountry>
<bankName>ABN Amro Bank N.V</bankName>
<swiftCode>ABNA NL 2A</swiftCode>
</bankInfo>
<fundTransfer>
<accountNumber>440339464</accountNumber>
</fundTransfer>
<item id="0">
<unitPrice>49.95</unitPrice>
<quantity>1</quantity>
</item>
<purchaseTotals>
<currency>GBP</currency>
</purchaseTotals>
<bankTransferService run="true"/>
</requestMessage>
Global Payment Service Developer Guide | March 2015
28
Chapter 2
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Bank Transfer Reply
Example 2
Bank Transfer Reply
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.23">
<c:merchantReferenceCode>482046C3A7E94F5</c:merchantReferenceCode>
<c:requestID>0305782650000167905080</c:requestID>
<c:decision>ACCEPT</c:decision>
<c:reasonCode>100</c:reasonCode>
<c:purchaseTotals>
<c:currency>EUR</c:currency>
</c:purchaseTotals>
<c:bankTransferReply>
<c:reasonCode>100</c:reasonCode>
<c:accountHolder>Global Collect BV</c:accountHolder>
<c:accountNumber>440339464</c:accountNumber>
<c:amount>49.95</c:amount>
<c:bankName>ABN Amro Bank N.V</c:bankName>
<c:bankCity>Amsterdam</c:bankCity>
<c:bankCountry>NL</c:bankCountry>
<c:paymentReference>106157214759</c:paymentReference>
<c:bankSwiftCode>ABNA NL 2A</c:bankSwiftCode>
<c:bankSpecialID>20-00-00</c:bankSpecialID>
<c:requestDateTime>2012-01-28T23:44:27Z</c:requestDateTime>
<c:reconciliationID>0308014624</c:reconciliationID>
</c:bankTransferReply>
</c:replyMessage>
Global Payment Service Developer Guide | March 2015
29
Chapter 2
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Standalone Bank Transfer Refund Request
Example 3
Standalone Bank Transfer Refund Request
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.103">
<merchantID>demo123</merchantID>
<merchantReferenceCode>demoRef</merchantReferenceCode>
<billTo>
<firstName>Orlando</firstName>
<lastName>Bloom</lastName>
<street1>33, rue Dauphine</street1>
<city>Bergheim</city>
<postalCode>75006</postalCode>
<country>DE</country>
<phoneNumber>33 3 69 20 45 63</phoneNumber>
<email>[email protected]</email>
</billTo>
<purchaseTotals>
<currency>EUR</currency>
<grandTotalAmount>112</grandTotalAmount>
</purchaseTotals>
<fundTransfer>
<accountNumber>0044497071</accountNumber>
<accountName>BRADFORD NICKLES</accountName>
</fundTransfer>
<bankInfo>
<bankCode>79050000</bankCode>
<name>SloveniaBank_testing</name>
<country>DE</country>
<swiftCode>BSLJSI2X</swiftCode>
</bankInfo>
<bankTransferRefundService run="true">
<reconciliationID>33552111</reconciliationID>
</bankTransferRefundService>
</requestMessage>
Global Payment Service Developer Guide | March 2015
30
Chapter 2
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
Standalone Bank Transfer Refund Reply
Example 4
Standalone Bank Transfer Refund Reply
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.103">
<c:merchantReferenceCode>demoRef</c:merchantReferenceCode>
<c:requestID>4024435525740181551532</c:requestID>
<c:decision>ACCEPT</c:decision>
<c:reasonCode>100</c:reasonCode>
<c:purchaseTotals>
<c:currency>eur</c:currency>
</c:purchaseTotals>
<c:bankTransferRefundReply>
<c:reasonCode>100</c:reasonCode>
<c:amount>112.00</c:amount>
<c:requestDateTime>2014-06-10T23:39:14Z</c:requestDateTime>
<c:reconciliationID>33552111</c:reconciliationID>
<c:iban>DE58790500000044497071</c:iban>
</c:bankTransferRefundReply>
</c:replyMessage>
Follow-On Bank Transfer Refund Request
Example 5
Follow-On Bank Transfer Refund Request
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.103">
<merchantID>demo123</merchantID>
<merchantReferenceCode>demoRef</merchantReferenceCode>
<billTo>
<firstName>Orlando</firstName>
<lastName>Bloom</lastName>
<street1>33, rue Dauphine</street1>
<city>Bergheim</city>
<postalCode>75006</postalCode>
<country>DE</country>
<phoneNumber>33 3 69 20 45 63</phoneNumber>
<email>[email protected]</email>
</billTo>
<purchaseTotals>
<currency>EUR</currency>
<grandTotalAmount>74</grandTotalAmount>
</purchaseTotals>
<fundTransfer>
<accountNumber>0044497071</accountNumber>
<accountName>BRADFORD NICKLES</accountName>
</fundTransfer>
Global Payment Service Developer Guide | March 2015
31
Chapter 2
Bank Transfers and Bank Transfer Refunds Using the Simple Order API
<bankInfo>
<bankCode>79050000</bankCode>
<name>SloveniaBank_testing</name>
<country>DE</country>
<swiftCode>BSLJSI2X</swiftCode>
</bankInfo>
<bankTransferService run="true"/>
</requestMessage>
Follow-On Bank Transfer Refund Reply
Example 6
Follow-On Bank Transfer Refund Reply
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.103">
<c:merchantReferenceCode>demoRef</c:merchantReferenceCode>
<c:requestID>4024436180000181551532</c:requestID>
<c:decision>ACCEPT</c:decision>
<c:reasonCode>100</c:reasonCode>
<c:purchaseTotals>
<c:currency>eur</c:currency>
</c:purchaseTotals>
<c:bankTransferReply>
<c:reasonCode>100</c:reasonCode>
<c:accountHolder>Global Collect B.V.</c:accountHolder>
<c:accountNumber>115241904</c:accountNumber>
<c:amount>74.00</c:amount>
<c:bankName>Postbank AG</c:bankName>
<c:bankCity>Leipzig</c:bankCity>
<c:bankCountry>Germany</c:bankCountry>
<c:paymentReference>256210123719</c:paymentReference>
<c:bankSwiftCode>PBNKDEFF</c:bankSwiftCode>
<c:bankSpecialID>BLZ|86010090</c:bankSpecialID>
<c:requestDateTime>2014-06-10T23:40:19Z</c:requestDateTime>
<c:reconciliationID>2149560850</c:reconciliationID>
<c:iban>DE53860100900115241904</c:iban>
</c:bankTransferReply>
</c:replyMessage>
Global Payment Service Developer Guide | March 2015
32
CHAPTER
Bank Transfers and Bank
Transfer Refunds Using the
SCMP API
3
Requesting Bank Transfers
Use the ics_bank_transfer service to request a bank transfer. See Table 7, page 36, for a
list of the fields to use when requesting the service.
When requesting a bank transfer, you may not request any of the other ICS services
except ics_tax. For more information about the service, see Tax Calculation Service
Using the SCMP API.
In the bank transfer reply, you will receive fields containing information about the bank and
bank account that the customer should transfer funds to. You need to display this
information to customers so that they can easily transcribe it or print it and give it to their
banks.
The information includes the bank’s name, bank’s country, the account holder’s name, and
so on. The primary field containing the bank account information is bank_transfer_
account_number. This field contains the necessary bank account number information
you need to display, including a bank code or sort code, branch code, or check digit, if any
of those are used for the particular country. You can display the contents of the field as you
receive it in the reply from CyberSource.
You might also receive bank_transfer_iban with the International Bank Account Number
(IBAN). The IBAN is a international standard for bank account numbers that the EU is
adopting. In the future, the EU is planning to switch to using only the IBAN format and not
the original format presented in bank_transfer_account_number. If the IBAN is present
in the reply, display it to the customer along with the other bank information, and identify it
as the IBAN.
Depending on the country, you might also receive the bank’s SWIFT code, which is
another bank identifier. If the bank_transfer_swiftcode field is present, display it to the
customer along with the other bank information, and identify it as the SWIFT code.
Global Payment Service Developer Guide | March 2015
33
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Requesting Bank Transfer
Refunds
Important
Important
From August 1, 2016, for euro countries and from October 31, 2016, for noneuro countries, the IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN, and this conversion process will continue
only until August 1, 2016.
A follow-on refund must occur within 60 days of the request for the bank
transfer. After the time limit expires, only a stand-alone refund can be
requested. To refund a bank transfer, wait 1 to 3 days after the bank transfer
request is processed by CyberSource. When you attempt to request a followon refund before the initial bank transfer is processed into your merchant bank
account, the error ORDER WITHOUT REFUNDABLE PAYMENTS is
displayed. This error could also mean that your account is not configured for
standalone refunds with Global Collect. To configure your account, please
contact CyberSource Customer Support.
There are two types of bank transfer refunds: follow-on refunds and stand-alone refunds.
A follow-on refund uses information from a previous bank transfer. A stand-alone refund
does not depend on a previous transaction.
To request a bank transfer refund:

Use the ics_bank_transfer_refund service to request a bank transfer refund.

Do not request any other ICS services except Tax Calculation, which is optional. For
more information about this service, see Tax Calculation Service Using the SCMP
API.

Send the fields required for a bank transfer refund request as described in Table 7,
page 36. For a follow-on refund, the fields and values must match the fields and
values that you sent in the bank transfer request.

For a follow-on refund, include one of these fields from the original request with the
request ID:

bank_transfer_request_id

bank_transfer_real_time_request_id

For a stand-alone refund, the bank_transfer_request_id field is optional.

The easiest way to implement bank transfer refunds is to always send the request ID
from the original bank transfer with every bank transfer refund request.
Global Payment Service Developer Guide | March 2015
34
Chapter 3

Bank Transfers and Bank Transfer Refunds Using the SCMP API
CyberSource recommends that when you request a refund, you use the same value
for merchant_ref_number that you used for the bank transfer. This makes it easier
for you to link the refund to the original bank transfer in your own system as well as in
CyberSource reports and Transaction Search Screens.
CyberSource validates the bank account number before processing the bank transfer
refund. If the account number does not pass the validation check, CyberSource rejects the
request with a rflag=DINVALIDACCOUNT. CyberSource recommends that you then
confirm the customer entered the number correctly, and if it was incorrect, request the
refund again with the correct number.
You may perform multiple partial refunds against a bank transfer. The sum of the refunds
may not exceed the amount of the payment.
You will not receive an error in the reply for any of the following conditions:

The bank_transfer_request_id is invalid.

The customer’s payment has not yet been received.
Instead, CyberSource will not process the refund and the transaction will appear in the
daily Transaction Exception Detail Report. You should monitor this report daily to
determine if any of your transactions have problems. For information about the report and
how to use it, see the Global Payment Service Planning Guide. For details about
downloading the report and its format, see the Reporting Developer Guide.
Researching a Missing Payment
If a customer calls to say that they have made the bank transfer payment but have not
received the goods, and CyberSource’s report or your bank account statement does not
show that you have received the payment, you can make a payment inquiry in the
Business Center and have CyberSource research the lost payment.
Note
You must wait at least five days after the funds are debited from the customer’s
account before initiating an inquiry because it can take that long before the
funds appear in your account and in CyberSource’s reports. CyberSource will
not allow you to perform an inquiry within five days of submitting the initial bank
transfer request.
For instructions on how to research a lost payment in the Business Center, see
Appendix C, "Researching a Missing Bank Transfer Payment," on page 158.
Global Payment Service Developer Guide | March 2015
35
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
API Fields
The following table lists the fields to use in requests for bank transfers and bank transfer
refunds. See the information about data types in Getting Started with CyberSource
Advanced for the SCMP API.
Request Fields
The following table lists the fields to use in a request for ics_bank_transfer or ics_bank_
transfer_refund.
Table 7
Request-Level Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API
Request-Level
Field
Description
Used by and
Required (R) or
Optional (O)
Data Type
& Length
bank_account_name
Name used on the bank account. If you do not
send this field, it is assumed the last name on the
account is customer_lastname. Some banks
validate the name on the bank account, so
consider sending this field if the bank account
owner is not the customer.This scenario might
happen, for example, if a husband places the
order, but the wife’s name is on the bank account.
Refund (O)
String (50)
Refund (O)
String (See
description)
Refund (O)
String (255)
Contact CyberSource Customer Support for
required country-specific bank account
information.
bank_account_
number
Bank account number. Contact CyberSource
Customer Support for required country-specific
bank account information.
Note From August 1, 2016, for euro countries and
from October 31, 2016, for non-euro countries, the
IBAN must be included in each request. If you
provide a BBAN it will be converted to an IBAN,
and this conversion process will continue only until
August 1, 2016.
Note Do not use the IBAN in this field. Use only
the traditional account number information. For the
IBAN, use the bank_iban field.
bank_address
Bank’s address.
1. Required if bill_country value is US or CA
2. Required if any shipping information is included
3. Required if ship_to_country value is US or CA
Global Payment Service Developer Guide | March 2015
36
Chapter 3
Table 7
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Request-Level Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API (Continued)
Request-Level
Field
Description
Used by and
Required (R) or
Optional (O)
Data Type
& Length
bank_check_digit
Code used to validate the customer's account
number when you are not using the IBAN. Contact
CyberSource Customer Support for required
country-specific bank account information.
Refund (O)
String (2)
bank_city
City where the bank is located. Some banks
validate the bank account information, so consider
sending this field if the bank is not located in bill_
city.
Refund (O)
String (40)
bank_code
Bank's code. Used for some countries when you
are not using the IBAN. Contact CyberSource
Customer Support for required country-specific
bank account information.
Refund (See
description)
String (See
description)
Country where the bank is located. Use the twocharacter ISO Standard Country Codes.
Bank Transfer (See
description)
String (2)
Note If bank_country is not set, CyberSource
Refund (R)
Note This is a required field if the bank_country
field is GB, AT, FR, or DE. For more information
see the two-character ISO Standard Country
Codes.
bank_country
uses bill_country to determine the country in
which the bank transfer is taking place.
bank_iban
Refund (See
description)
String (30)
Refund (See
description)
String (40)
Bank’s SWIFT code. Unique address of the bank.
Also known as the Bank Identification Code (BIC).
Bank Transfer (See
description)
String (30)
Note This field is required when the IBAN field is
Refund (O)
International Bank Account Number (IBAN) for the
bank account.
Note Required for specific countries. Contact
CyberSource Customer Support for required
country-specific bank account information.
bank_name
Bank's name.
Note This is a required field if the bank_country
field is AU, FI, FR, IT, NO, ES, SE, or CH. For more
information see the two-character ISO Standard
Country Codes.
bank_swiftcode
included in the request.
bank_transfer_
request_id
The request_id value returned from a previous
request for ics_bank_transfer.
Refund (R)
String (26)
1. Required if bill_country value is US or CA
2. Required if any shipping information is included
3. Required if ship_to_country value is US or CA
Global Payment Service Developer Guide | March 2015
37
Chapter 3
Table 7
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Request-Level Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API (Continued)
Request-Level
Field
Description
Used by and
Required (R) or
Optional (O)
Data Type
& Length
bank_transfer_trans_
ref_no
Unique identifier for the order submitted to Global
Collect.
Refund (R for
standalone refunds)
String (60)
Bank Transfer (R)
String (60)
Note If you do not include this field in a refund
request, CyberSource will generate the value.
bill_address1
Billing street address.
Refund (R)
bill_address2
Additional billing address information.
Bank Transfer (O)
String (60)
Refund (O)
bill_city
Billing address city.
Bank Transfer (R)
String (50)
Refund (R)
bill_country
Billing address country.
Bank Transfer (R)
String (2)
Refund (R)
bill_state
Billing address state.
Bank Transfer (R) 1
Refund (R)
bill_zip
Zip code for the shipping address. The zip code
must consist of 5 to 9 digits.
If the value of bill_country is US, the 9-digit zip
code must follow this format:
[5 digits][dash][4 digits]
Example:12345-6789
String (2)
1
Bank Transfer (R if
bill_country is US
or CA)
String (10)
Refund (R if bill_
country is US or
CA)
If the value of bill_country is CA, the 6-digit zip
code must follow this format:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C3
branch_code
Code that identifies the branch of the customer's
bank when you are not using the IBAN.
Refund (O)
String (15)
Contact CyberSource Customer Support for
required country-specific bank account
information.
company_name
Name of the customer’s company.
Bank Transfer (O)
String (60)
currency
Currency used for the order. Use the ISO Standard
Currency Codes.
Bank Transfer (R)
String (5)
Customer’s email address. For example:
[email protected]
Bank Transfer (R)
customer_email
Refund (R)
String (255)
Refund (R)
1. Required if bill_country value is US or CA
2. Required if any shipping information is included
3. Required if ship_to_country value is US or CA
Global Payment Service Developer Guide | March 2015
38
Chapter 3
Table 7
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Request-Level Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API (Continued)
Request-Level
Field
Description
Used by and
Required (R) or
Optional (O)
Data Type
& Length
customer_firstname
Customer’s first name.
Bank Transfer (R)
String (60)
Refund (R)
customer_lastname
Customer’s last name.
Bank Transfer (R)
String (60)
Refund (R)
customer_phone
Customer’s telephone number.
Bank Transfer (O)
String (15)
Refund (O)
grand_total_amount
ics_applications
Grand total for the order. You must include either
this field or offer0 and the offer-level field amount.
See the information about offers and grand totals in
Getting Started with CyberSource Advanced for
the SCMP API.
Bank Transfer
ICS services to process for the request.
Bank Transfer (R)
Refund
Decimal
(15)
See description
String (255)
Refund (R)
link_to_request
Value that links the current request to a previous
authorization request for a debit card or prepaid
card. This value is useful when using multiple
payment methods to complete an order. For
details, see the information about partial
authorizations in Credit Card Services Using the
SCMP API.
Bank Transfer (O)
String (26)
merchant_id
Your CyberSource merchant ID.
Bank Transfer (R)
String (30)
Note When opening your account with
Refund (R)
CyberSource, make sure to inform CyberSource if
you plan to use multiple CyberSource merchant
IDs. For example, if you have separate business
units within your company, each with a separate
CyberSource merchant ID. You must have a
separate processor merchant ID for each
CyberSource merchant ID. For more information,
contact CyberSource Customer Support.
merchant_ref_
number
Merchant-generated order reference or tracking
number. See the information about tracking orders
in Getting Started with CyberSource Advanced for
the SCMP API.
Bank Transfer (R)
offer0...N
Offers for the request. An offer is a line item for the
order.
Bank Transfer (O)
String (50)
Refund (R)
String (50)
Refund (O)
1. Required if bill_country value is US or CA
2. Required if any shipping information is included
3. Required if ship_to_country value is US or CA
Global Payment Service Developer Guide | March 2015
39
Chapter 3
Table 7
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Request-Level Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API (Continued)
Request-Level
Field
Description
Used by and
Required (R) or
Optional (O)
Data Type
& Length
ship_to_address1
First line of the address to which to ship the
product.
Bank Transfer (O) 2
String (60)
ship_to_address2
Second line of the address to which to ship the
product.
Bank Transfer (O)
String (60)
ship_to_city
City to which to ship the product.
Bank Transfer (O) 2
String (50)
ship_to_country
Country to which to ship the product. Use the twocharacter ISO Standard Country Codes.
Bank Transfer (O)
String (2)
ship_to_firstname
First name of person receiving the product.
Bank Transfer (O)
String (60)
ship_to_lastname
Last name of person receiving the product.
Bank Transfer (O)
String (60)
ship_to_phone
Phone number for the shipping address.
Bank Transfer (O)
String (15)
3
ship_to_state
State or province to which to ship the product. Use
the State, Province, and Territory Codes for the
United States and Canada.
Bank Transfer (O)
ship_to_zip
Zip code for the shipping address.
Bank Transfer (O) 3
String (10)
Bank Transfer (O)
Positive
integer (3)
String (2)
If the value of ship_to_country is US, the 9-digit
zip code must follow this format:
[5 digits][dash][4 digits]
Example: 12345-6789
If the value of ship_to_country is CA, the 6-digit
zip code must follow this format:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C3
If the postal code for the shipping address is not
included in the request message, CyberSource will
use the postal code for the billing address. If the
postal code for the billing address is not included in
the request message, the postal code for the
shipping address is required.
timeout
Number of seconds until the transaction times out.
The default is 110 seconds.
Refund (O)
1. Required if bill_country value is US or CA
2. Required if any shipping information is included
3. Required if ship_to_country value is US or CA
Global Payment Service Developer Guide | March 2015
40
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Offer-Level Fields
The following table lists the offer-level fields to use in a request for ics_bank_transfer or
ics_bank_transfer_refund.
Table 8
Offer-Level Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API
Offer-Level Field
Description
Used by and
Required (R) or
Optional (O)
Data Type
& Length
amount
Per-item price of the product. You must include
either offer0 and this field, or the request-level field
grand_total_amount in your request. This value
cannot be negative. See the information about
offers and grand totals in Getting Started with
CyberSource Advanced for the SCMP API.
Bank Transfer
(See description)
Decimal (15)
Refund
(See description)
You can include a decimal point (.) in this field, but
you cannot include any other special characters.
The amount will be truncated at the request level to
the correct number of decimal places.
merchant_product_
sku
product_code
Product identifier code. It is required for bank
transfers if product_code is not default,
stored_value, or one of the values related to
shipping and/or handling.
Bank Transfer (See
description)
Type of product that the offer contains, which is
also used to determine the category that the
product falls under: electronic, handling, physical,
service, or shipping. The default value is
default. See "Product Codes," page 154, for a
list of valid values.
Bank Transfer (O)
String (30)
Refund (O)
String (30)
Refund (O)
For bank transfers, if you set this to a value other
than default, stored_value, or any of the
values related to shipping and/or handling, the
quantity, product_name, and merchant_
product_sku fields are required.
product_name
quantity
Name of the product. For bank transfers, required
if product_code is NOT default, stored_
value, or one of the values related to shipping
and/or handling.
Bank Transfer (See
description)
Quantity of the product being purchased. The
default value is 1. For bank transfers, required if
product_code is NOT default, stored_
value or one of the values related to shipping
and/or handling.
Bank Transfer (See
description)
Global Payment Service Developer Guide | March 2015
String (30)
Refund (O)
Refund (O)
Nonnegative
integer (10)
41
Chapter 3
Table 8
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Offer-Level Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API (Continued)
Offer-Level Field
Description
Used by and
Required (R) or
Optional (O)
Data Type
& Length
tax_amount
Tax amount associated with this item. The tax_
amount field is additive. For example, if you send
these offer lines:
Bank Transfer (O)
Decimal (15)
Refund (O)
offer0=amount:10.00^
quantity:1^tax_amount:0.80
offer1=amount:20.00^
quantity:1^tax_amount:1.60
the total amount authorized will be for 32.40, not
30.00 with 2.40 of tax included.
The tax_amount and the amount must be in the
same currency.
If you include tax_amount, and you request the
ics_tax service, ics_tax will not calculate tax for
the offer. Instead, it will return the value in the tax_
amount field.
Reply Fields
The following table lists the fields returned in a reply from ics_bank_transfer or ics_
bank_transfer_refund.
Table 9
Reply Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API
Reply Field
Description
Returned
By
Data Type
& Length
bank_transfer_account_
holder
Name of the account holder.
Bank Transfer
String (50)
bank_transfer_account_
number
Bank account number. Use the contents of this field
along with the contents of the bank_transfer_
special_id field to display on the bank transfer
confirmation page the country’s traditional
representation of the full bank account number.
Contact CyberSource Customer Support for
required country-specific bank account information.
Bank Transfer
String (30)
bank_transfer_amount
Total amount for the bank transfer.
Bank Transfer
Decimal (15)
bank_transfer_bank_city
City in which the bank is located.
Bank Transfer
String (50)
bank_transfer_bank_
country
Country in which the bank is located.
Bank Transfer
String (50)
Global Payment Service Developer Guide | March 2015
42
Chapter 3
Table 9
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Reply Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API (Continued)
Reply Field
Description
Returned
By
Data Type
& Length
bank_transfer_bank_
name
Bank’s name.
Bank Transfer
String (50)
bank_transfer_iban
International Bank Account Number (IBAN) for the
bank account. If this field is in the reply, display the
value to the customer along with the other bank
information.
Bank Transfer
String (30)
Note Contact CyberSource Customer Support for
required country-specific bank account information.
bank_transfer_
payment_reference
Payment reference number that you must display to
the customer. For more information, see Getting
Started with CyberSource Advanced for the SCMP
API. In Italy, this is called the Numero di riferimento.
Bank Transfer
String (16)
bank_transfer_rcode
One-digit code that indicates whether the ics_
bank_transfer request was successful.
Bank Transfer
Integer (1)
bank_transfer_refund_
amount
Amount of the bank transfer refund.
Refund
Decimal (15)
bank_transfer_refund__
iban
International Bank Account Number (IBAN) for the
bank account.
Refund
Alphanumeric
(50)
bank_transfer_refund_
rcode
One-digit code that indicates whether the ics_
bank_transfer_refund request was successful.
Refund
Integer (1)
bank_transfer_refund_
response_code
Response code from the processor.
Refund
String (10)
bank_transfer_refund_
rflag
One-word description of the result of the ics_bank_
transfer_refund request.
Refund
String (50)
bank_transfer_refund_
rmsg
Message that explains the reply flag bank_
transfer_refund_rflag.
Refund
String (255)
bank_transfer_refund_
time
Time of bank transfer refund request in UTC format.
For more information, see Getting Started with
CyberSource Advanced for the SCMP API.
Refund
Date and
time (20)
bank_transfer_refund_
trans_ref_no
Unique value generated by CyberSource. See the
information about tracking orders in Getting Started
with CyberSource Advanced for the SCMP API.
Refund
String (60)
bank_transfer_request_
time
Time of the bank transfer request in UTC format. For
more information, see Getting Started with
CyberSource Advanced for the SCMP API.
Bank Transfer
Date and
time (20)
bank_transfer_
response_code
Response code from the processor.
Bank Transfer
String (10)
bank_transfer_rflag
One-word description of the result of the ics_bank_
transfer request.
Bank Transfer
String (50)
bank_transfer_rmsg
Message that explains the reply flag bank_
transfer_rflag.
Bank Transfer
String (255)
Global Payment Service Developer Guide | March 2015
43
Chapter 3
Table 9
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Reply Fields for Bank Transfers and Bank Transfer Refunds
for the SCMP API (Continued)
Reply Field
Description
Returned
By
Data Type
& Length
bank_transfer_special_
id
Contains any special ID used for the bank. For
example, the sort code for U.K. banks. This field is
only for the Global Collect processor. Use the
contents of this field along with the contents of the
bank_transfer_account_number field to display
on the bank transfer confirmation page the country’s
traditional representation of the full bank account
number. Contact CyberSource Customer Support
for required country-specific bank account
information.
Bank Transfer
String (50)
bank_transfer_swiftcode
Bank’s SWIFT code. Unique address of the bank. If
this field is in the reply, display the value to the
customer along with the other bank information.
Bank Transfer
String (50)
bank_transfer_trans_
ref_no
Unique value generated by CyberSource. For more
information, see Getting Started with CyberSource
Advanced for the SCMP API.
Bank Transfer
String (60)
client_lib_version
Information about the client library used to request
the transaction.
Bank Transfer
and Refund
String (50)
currency
Currency used for the order. Uses the ISO Standard
Currency Codes.
Bank Transfer
and Refund
String (5)
ics_rcode
One-digit code that indicates whether the entire
request was successful. The field will contain one of
the following values:
Bank Transfer
and Refund
Integer (1)

-1: An error occurred

0: The request was declined

1: The request was successful
ics_rflag
One-word description of the result of the entire
request.
Bank Transfer
and Refund
String (50)
ics_rmsg
Message that explains the reply flag ics_rflag.
Bank Transfer
and Refund
String (255)
merchant_ref_number
Order reference or tracking number that you
provided in the request. If you included multi-byte
characters in this field in the request, the returned
value might contain corrupted characters.
Bank Transfer
and Refund
String (50)
request_id
Identifier for the request generated by CyberSource.
Bank Transfer
and Refund
String (26)
Global Payment Service Developer Guide | March 2015
44
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Reply Flags
The following table lists the reply flags for ics_bank_transfer and ics_bank_transfer_
refund.
Table 10
Reply Flags for Bank Transfer and Bank Transfer Refunds for the SCMP API
Reply Flag
Description
Returned by
DINVALIDACCOUNT
The bank account number did not pass the validation check.
Verify with the customer that the account number is correct;
if it was incorrect, request the service again with the
corrected information. Applies to bank transfer refunds with
banks in France, Germany, and the United Kingdom.
Bank Transfer Refund
DINVALIDDATA
Data provided is not consistent with the request.
Bank Transfer and Refund
DMISSINGFIELD
The request is missing a required field.
Bank Transfer and Refund
ESYSTEM
System error. You must design your transaction
management system to correctly handle CyberSource
system errors. Depending on the payment processor
handling the transaction, the error may indicate a valid
CyberSource system error or a processor rejection due to
invalid data. In either case, CyberSource recommends that
you do not design your system to endlessly retry sending a
transaction. For important information on handling system
errors and retries, see the documentation for your
CyberSource client.
Bank Transfer and Refund
ETIMEOUT
The request timed out.
Bank Transfer and Refund
SOK
The transaction was successful.
Bank Transfer and Refund
Global Payment Service Developer Guide | March 2015
45
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Request and Reply Examples
Bank Transfer Request
Example 7
Bank Transfer Request
bill_address1=Boschdijk 987
bill_city=Eindhoven
bill_country=NL
bill_zip=5600 PB
currency=EUR
[email protected]
customer_firstname=John
customer_lastname=Smith
bank_country=NL
bank_city=Amsterdam
bank_name=ABN Amro
bank_swiftCode=ABNA NL 2A
bank_account_number=440339464
ics_applications=ics_bank_transfer
merchant_id=infodev
merchant_ref_number=482046C3A7E94F5BD1FE3C66C
offer0=amount:49.95^quantity:1
Global Payment Service Developer Guide | March 2015
46
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Bank Transfer Reply
Example 8
Bank Transfer Reply
merchant_ref_number=482046C3A7E94F5BD1FE3C66C
currency=EUR
ics_rcode=1
ics_rflag=SOK
ics_rmsg=Request was processed successfully.
request_id=0305782650000167905080
bank_transfer_trans_ref_no=0308014624
bank_transfer_amount=49.95
bank_transfer_bank_country=NL
bank_transfer_account_holder=Global Collect BV
bank_transfer_bank_name=ABNA NL 2A
bank_transfer_bank_city=Amsterdam
bank_transfer_swiftcode=ABNA NL 2A
bank_transfer_time=2003-08-22T170910Z
bank_transfer_payment_reference=106157214759
bank_transfer_response_code=800
bank_transfer_special_id=20-00-00
bank_transfer_account_number=440339464
bank_transfer_rcode=1
bank_transfer_rflag=SOK
bank_transfer_rmsg=Request was processed successfully.
client_lib_version=Perl3.2/MSWin324.0/NT4.0/WIN32/C/3.4.5
Global Payment Service Developer Guide | March 2015
47
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Standalone Bank Transfer Refund Request
Example 9
Standalone Bank Transfer Refund Request
ics_applications=ics_bank_transfer_refund
bank_account_name=nette
bank_account_number=30004 00819 00010023116 61
bank_check_digit=12
bank_city=Paris
bank_code=0440339464
bank_country=France
bank_name=BNP Paribas
bill_address1=1ere Avenue
bill_address2=14eme Rue BP 148
bill_city=Carros Cedex
bill_country=FR
bill_zip=06513
branch_code=1234567890ABCDE
currency=EUR
[email protected]
customer_firstname=antoi
customer_lastname=nette
customer_phone=33-04-9208-2846
merchant_id=mercid123
merchant_ref_number=merRef123
offer0=product_code:electronic_software^merchant_product_
sku:testdl^quantity:1^amount:1.56^tax_amount:0.25^product_
name:PName1^offer_id:0
request_id=4024360078230179087451
ship_to_address1=37 se main street
ship_to_address2=suite 2-5A
ship_to_city=bloomington
ship_to_country=US
ship_to_state=indiana
ship_to_zip=47404
Global Payment Service Developer Guide | March 2015
48
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
Standalone Bank Transfer Refund Reply
Example 10
Standalone Bank Transfer Refund Reply
bank_transfer_refund_amount=1.81
bank_transfer_refund_iban=IE64BOFI30004 00819 00010023116 61
bank_transfer_refund_rcode=1
bank_transfer_refund_rflag=SOK
bank_transfer_refund_rmsg=Request was processed successfully.
bank_transfer_refund_time=2014-06-10T213327Z
bank_transfer_refund_trans_ref_no=2147997003
currency=eur
ics_rcode=1
ics_rflag=SOK
ics_rmsg=Request was processed successfully.
merchant_ref_number=merRef123
request_id=4024360078230179087451
Follow-On Bank Transfer Refund Request
Example 11
Follow-On Bank Transfer Refund Request
ics_applications=ics_bank_transfer_refund
bank_account_name=nette
bank_account_number=30004 00819 00010023116 61
bank_check_digit=12
bank_city=Paris
bank_code=0440339464
bank_country=France
bank_name=BNP Paribas
bank_swiftcode=BNPA FR PP PLZ
bank_transfer_request_id=4024360037900179087451
bill_address1=1ere Avenue
bill_address2=14eme Rue BP 148
bill_city=Carros Cedex
bill_country=FR
bill_zip=06513
branch_code=1234567890ABCDE
currency=EUR
[email protected]
customer_firstname=antoi
customer_lastname=nette
customer_phone=33-04-9208-2846
merchant_id=mercid123
merchant_ref_number=merRef123
offer0=product_code:electronic_software^merchant_product_
sku:testdl^quantity:1^amount:1.56^tax_amount:0.25^product_
name:PName1^offer_id:0
request_id=4024360039900179087451
sender_id=gc_btr_sepa_1
Global Payment Service Developer Guide | March 2015
49
Chapter 3
Bank Transfers and Bank Transfer Refunds Using the SCMP API
ship_to_address1=37 se main street
ship_to_address2=suite 2-5A
ship_to_city=bloomington
ship_to_country=US
ship_to_state=indiana
ship_to_zip=47404
Follow-On Bank Transfer Refund Reply
Example 12
Follow-On Bank Transfer Refund Reply
bank_transfer_account_holder=Global Collect BV
bank_transfer_account_number=30004 00819 00010023116 61
bank_transfer_amount=1.81
bank_transfer_bank_city=Paris
bank_transfer_bank_country=France
bank_transfer_bank_name=BNP Paribas
bank_transfer_iban=FR7630004008190001002311661
bank_transfer_payment_reference=140243600385
bank_transfer_rcode=1
bank_transfer_rflag=SOK
bank_transfer_rmsg=Request was processed successfully.
bank_transfer_swiftcode=BNPA FR PP PLZ
bank_transfer_time=2014-06-10T213323Z
Global Payment Service Developer Guide | March 2015
50
CHAPTER
Real-Time Bank Transfers
Using the Simple Order API
4
Transaction Status
You can perform an on-demand query to get the status of a transaction. CyberSource
recommends that you wait at least 5 minutes after the customer has completed a
transaction before sending an on-demand query. If you need to request the status more
than once, you must wait at least 10 minutes between queries for the same transaction.
For China, real-time bank transfer settlements are not posted until the next
business day.
Note
Sending the Query
To send the query, send the fields described in the following table in an HTTP POST
request to the following URL:
https://ebc.cybersource.com/ebc/Query
After you send the query, CyberSource prompts you for your username and password to
verify that you have access to the merchant ID.
Table 11
Required Data for an On-Demand Transaction Status Query
Field
Description
Required (R)
or Optional (O)
Data Type
& Length
merchantID
Your CyberSource merchant ID.
R
String (30)
Type of query. The only possible value is
R
String (30)
type
transaction.
subtype
Query subtype. The only possible value is
transactionStatus.
R
String (30)
requestID
Request ID returned in the real-time bank
transfer reply.
R
String (26)
Global Payment Service Developer Guide | March 2015
51
Chapter 4
Table 11
Real-Time Bank Transfers Using the Simple Order API
Required Data for an On-Demand Transaction Status Query (Continued)
Field
Description
Required (R)
or Optional (O)
Data Type
& Length
transRefNo
Transaction reference number (SCMP
API) or reconciliation ID (Simple Order
API) returned in the real-time bank
transfer reply.
R
String (60)
requestToken
Request token data generated by
CyberSource for each transaction reply.
R
String (256)
This example shows an on-demand query for a transaction status.
Example 13
On-Demand Transaction Status Query
<html>
<body>
<form action="https://ebc.cybersource.com/ebc/Query" method="POST">
<input type="hidden" name="type" value="transaction">
<input type="hidden" name="subtype" value="transactionStatus">
<table>
<tr>
<td>merchant ID <font color=red>*</font>:</td>
<td><input type="text" name="merchantID" value="dm_ptech"></td>
</tr>
<tr>
<td>Request ID: </td>
<td><input type="text" name="requestID" value=""></td>
</tr>
<tr>
<td>Transaction Reference Number:</td>
<td><input type="text" name="transRefNo" value=""></td>
</tr>
<tr>
<td>Request Token:</td>
<td><input type="text" name="requestToken" value=""></td>
</tr>
<tr><td colspan=2>&nbsp;</td></tr>
<tr><td colspan=2><input type="submit" value="submit"></td></tr>
</table>
</form>
</body>
</html>
Global Payment Service Developer Guide | March 2015
52
Chapter 4
Real-Time Bank Transfers Using the Simple Order API
Viewing the Response
You receive a response immediately. There are two possible outcomes:

If the query is successful, the results appear as a document of mime type application/
xml. To use this document, you must write a program to save or process the XML data
of the document.

If your POST data contains an error, you receive a system error. If the system error
persists, contact CyberSource Customer Support.
The DTD for a successful query result:
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
xml (Request, Response)>
Request (MerchantID, RequestID, RequestDate)>
MerchantID (#PCDATA)>
RequestID (#PCDATA)>
RequestDate (#PCDATA)>
Response (PaymentStatus?)>
PaymentStatus (Status, ProcessorMessage?)>
Status (#PCDATA)>
ProcessorMessage (#PCDATA)>
This example shows on-demand query results for a successful real-time bank transfer
payment.
Example 14
Successful Payment
<xml>
<Request>
<MerchantID>okgo123</MerchantID>
<RequestID>4146924260000171399092</RequestID>
<RequestDate>Oct 30, 2014</RequestDate>
<Response>
<PaymentStatus>
<Status>Payment</Status>
<ProcessorMessage>The payment instruction has been accepted.
</ProcessorMessage>
</PaymentStatus>
</Response>
</Request>
</xml>
Global Payment Service Developer Guide | March 2015
53
Chapter 4
Real-Time Bank Transfers Using the Simple Order API
This example shows on-demand query results for a failed real-time bank transfer
payment.
Example 15
Failed Payment
<xml>
<Request>
<MerchantID>OKGo1234</MerchantID>
<RequestID>1545412404130167905103</RequestID>
<Response>
<PaymentStatus>
<Status>Failed</Status>
<ProcessorMessage>Payment instruction has been rejected</ProcessorMessage>
</PaymentStatus>
</Response>
</Request>
</xml>
Requesting Real-Time Bank
Transfers
To request a real-time bank transfer, set the bankTransferRealTimeService_run field to
true. See Table 12, page 55, for a list of the fields to use when requesting the service.
Table 14, page 61, describes the fields that the service returns to you.
When requesting a real-time bank transfer, you may not request any other ICS service
except Tax Calculation, which is optional. For more information about the service, see Tax
Calculation Service Using the Simple Order API.
Global Payment Service Developer Guide | March 2015
54
Chapter 4
Real-Time Bank Transfers Using the Simple Order API
Requesting Real-Time Bank
Transfer Refunds
Important
From August 1, 2016, for euro countries and from October 31, 2016, for noneuro countries, the IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN, and this conversion process will continue
only until August 1, 2016.
Except for a few additional fields, refunds for real-time bank transfers are the same as
refunds for other bank transfers. See "Requesting Bank Transfer Refunds," page 16. The
additional fields are identifiers that have been re-named for real-time bank transfers. See
Table 15, page 63.
API Fields
For information about the data types, see Getting Started with CyberSource Advanced for
the Simple Order API.
Request Fields
The following table lists the fields to use in a request for real-time bank transfers.
Table 12
Request Fields for Real-Time Bank Transfers Using the Simple Order API
Request Field
Description
Required (R) or
Optional (O)
Data Type
& Length
bankInfo_bankCode
Code for the customer’s bank.
Real-Time Bank
Transfer (O)
String (8)
bankInfo_country
Country in which the bank is located. Use the
two-character ISO Standard Country Codes.
Real-Time Bank
Transfer (R)
String (2)
bankTransferRealTime
Service_bankTransfer
RealTimeType
Code that indicates which payment method or
bank to use for this transaction. See Table 13,
page 60.
Real-Time Bank
Transfer (R)
String (2)
bankTransferRealTime
Service_run
Set to true to include the real-time bank
transfer service in your request.
Real-Time Bank
Transfer (R)
String (5)
billTo_city
Billing address city.
Real-Time Bank
Transfer (R)
String (50)
billTo_company
Name of the customer’s company.
Real-Time Bank
Transfer (O)
String (60)
Global Payment Service Developer Guide | March 2015
55
Chapter 4
Table 12
Real-Time Bank Transfers Using the Simple Order API
Request Fields for Real-Time Bank Transfers Using the Simple Order API (Continued)
Request Field
Description
Required (R) or
Optional (O)
Data Type
& Length
billTo_country
Billing address country.
Real-Time Bank
Transfer (R)
String (2)
billTo_email
Customer’s email address, including the full
domain name. For example:
[email protected]
Real-Time Bank
Transfer (R)
String (255)
billTo_firstName
Customer’s first name.
Real-Time Bank
Transfer (R)
String (60)
billTo_language
Language used for the order. Use the ISO
standard language codes.
Real-Time Bank
Transfer (O)
String (2)
billTo_lastName
Customer’s last name.
Real-Time Bank
Transfer (R)
String (60)
billTo_phoneNumber
Customer’s telephone number.
Real-Time Bank
Transfer (O)
String (15)
billTo_postalCode
Postal code for the billing address. The postal
code must consist of 5 to 9 digits.
Real-Time Bank
Transfer (R if
billing country is
US or CA)
String (10)
If the value of billTo_country is US, the 9-digit
postal code must follow this format:
[5 digits][dash][4 digits]
Example: 12345-6789
If the value of billTo_country is CA, the 6-digit
postal code must follow this format:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C3
billTo_state
Billing address state. This field is required if the
billTo_country value is US or CA.
Real-Time Bank
Transfer (See
description)
String (2)
billTo_street1
Billing address street address.
Real-Time Bank
Transfer (R)
String (60)
billTo_street2
Additional address information.
Real-Time Bank
Transfer (O)
String (60)
fundTransfer_
accountNumber
Customer’s bank account number.
Real-Time Bank
Transfer (O)
String (10)
fundTransfer_iban
International Bank Account Number (IBAN) for
the bank account.
Real-Time Bank
Transfer (See
description)
String (30)
Note Required for specific countries. Contact
CyberSource Customer Support for required
country-specific.
Global Payment Service Developer Guide | March 2015
56
Chapter 4
Table 12
Real-Time Bank Transfers Using the Simple Order API
Request Fields for Real-Time Bank Transfers Using the Simple Order API (Continued)
Request Field
Description
Required (R) or
Optional (O)
Data Type
& Length
invoiceHeader_
merchantDescriptor
Merchant descriptor that is displayed on the
customer’s statement for each real-time bank
transfer.
Real-Time Bank
Transfer (O)
String (50)
Real-Time Bank
Transfer (O)
String (30)
For iDEAL:
String (32)
To enable this field and to optionally set a
default descriptor for all real-time bank
transfers, contact CyberSource Customer
Support.
item_#_productCode
Type of product. This value is used to determine
the product category: electronic, handling,
physical, service, or shipping. The default value
is default. See "Product Codes," page 154,
for a list of valid values.
If you set it to a value other than default,
stored_value, or any of the values related
to shipping and/or handling, the item_#_
quantity, item_#_product_name, and item_#_
productSKU fields are required.
item_#_productName
Name of the product. This field is required if
item_#_productCode is not default,
stored_value, or one of the values related
to shipping and/or handling.
Real-Time Bank
Transfer (See
description)
String (30)
item_#_productSKU
Product identifier code. It is required if item_#_
productCode is not default, stored_
value, or one of the values related to shipping
and/or handling.
Real-Time Bank
Transfer (See
description)
String (30)
item_#_quantity
Quantity of the product being purchased. The
default value is 1. This field is required if item_
#_productCode is not default, stored_
value, or one of the values related to shipping
and/or handling.
Real-Time Bank
Transfer (See
description)
Integer (10)
Global Payment Service Developer Guide | March 2015
57
Chapter 4
Table 12
Real-Time Bank Transfers Using the Simple Order API
Request Fields for Real-Time Bank Transfers Using the Simple Order API (Continued)
Request Field
Description
Required (R) or
Optional (O)
Data Type
& Length
item_#_taxAmount
Tax amount associated with this item. This field
is additive. For example, if you send these offer
lines:
Real-Time Bank
Transfer (O)
String (15)
Real-Time Bank
Transfer (See
description)
String (15)
offer0=amount:10.00^
quantity:1^tax_amount:0.80
offer1=amount:20.00^
quantity:1^tax_amount:1.60
the total amount authorized will be for 32.40, not
30.00 with 2.40 of tax included.
The item_#_taxAmount and the item_#_
unitPrice values must be in the same currency.
If you include item_#_taxAmount and you
include taxService in your request, taxService
does not calculate the tax for the offer. Instead,
it returns the value in the item_#_taxAmount
field.
item_#_unitPrice
Per-item price of the product. You must include
either this field or the purchaseTotals_
grandTotalAmount field in your request. This
value cannot be negative. See the information
about items and grand totals in Getting Started
with CyberSource Advanced for the Simple
Order API.
You can include a decimal point (.) in this field,
but you cannot include any other special
characters. The amount will be truncated at the
request level to the correct number of decimal
places.
linkToRequest
Value that links the current request to a previous
authorization request for a debit card or prepaid
card. This value is useful when using multiple
payment methods to complete an order. For
more information about partial authorizations,
see Credit Card Services Using the Simple
Order API.
Real-Time Bank
Transfer (O)
String (26)
merchantID
Your CyberSource merchant ID.
Real-Time Bank
Transfer (R)
String (30)
merchantReferenceCode
Merchant-generated order reference or tracking
number. If this field includes multi-byte
characters, it might be corrupted when it is
returned to you in the reply. For more
information about tracking orders, see Getting
Started with CyberSource Advanced for the
Simple Order API.
Real-Time Bank
Transfer (R)
String (50)
Global Payment Service Developer Guide | March 2015
58
Chapter 4
Table 12
Real-Time Bank Transfers Using the Simple Order API
Request Fields for Real-Time Bank Transfers Using the Simple Order API (Continued)
Request Field
Description
Required (R) or
Optional (O)
Data Type
& Length
purchaseTotals_currency
Currency used for the order. Use the ISO
Standard Currency Codes.
Real-Time Bank
Transfer (R)
String (5)
purchaseTotals_
grandTotalAmount
Grand total for the order. You must include
either this field or item_#_unitPrice in your
request. For more information about items and
grand totals, see Getting Started with
CyberSource Advanced for the Simple Order
API.
Real-Time Bank
Transfer (See
description)
String (15)
returnURL
URL that returns the customer to your Web site
after the transaction. You are required to
provide this value using one of the following
methods:
Real-Time Bank
Transfer (See
description)
String (512)

Send this field with every request.

Provide the URL when you register for the
service, and CyberSource will store it in a
database.
shipTo_city
City of shipping address. This field is required if
any shipping information is included in the
request.
Real-Time Bank
Transfer (See
description)
String (50)
shipTo_country
Country of shipping address. Use the twocharacter ISO Standard Country Codes.
Real-Time Bank
Transfer (O)
String (2)
shipTo_firstName
First name of the person receiving the product.
Real-Time Bank
Transfer (O)
String (60)
shipTo_lastName
Last name of the person receiving the product.
Real-Time Bank
Transfer (O)
String (60)
shipTo_phoneNumber
Phone number for the shipping address.
Real-Time Bank
Transfer (O)
String (15)
shipTo_postalCode
Postal code for the shipping address. The postal
code must consist of 5 to 9 digits.
Real-Time Bank
Transfer (R if
shipTo_country is
US or CA)
String (10)
If the value of shipTo_country is US, the 9-digit
postal code must follow these rules:
[5 digits][dash][4 digits]
Example: 12345-6789
If the value of shipTo_country is CA, the 6-digit
postal code must follow these rules:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C4
If the postal code for the shipping address is not
included in the request message, CyberSource
uses the postal code from the billing address. If
the postal code for the billing address is not
included in the request message, the postal
code for the shipping address is required.
Global Payment Service Developer Guide | March 2015
59
Chapter 4
Table 12
Real-Time Bank Transfers Using the Simple Order API
Request Fields for Real-Time Bank Transfers Using the Simple Order API (Continued)
Request Field
Description
Required (R) or
Optional (O)
Data Type
& Length
shipTo_state
State or province of shipping address. Use the
State, Province, and Territory Codes for the
United States and Canada. This field is required
if the shipTo_country value is US or CA.
Real-Time Bank
Transfer (See
description)
String (2)
shipTo_street1
First line of shipping address. This field is
required if any shipping information is included
in the request.
Real-Time Bank
Transfer (See
description)
String (60)
shipTo_street2
Second line of shipping address.
Real-Time Bank
Transfer (O)
String (60)
Bank Codes
The following table describes the bank codes that indicate the payment method or bank to
use for a real-time bank transfer.
Table 13
Bank Transfer Real Time Type
Bank
Code
Bank or
Payment Type
Country
Bank or Network
1
ING Home Pay
Belgium
Single bank
2
Nordea e-maksu
Finland
Single bank
3
Nordea e-betaling
Denmark
Single bank
5
Nordea e-betalning
Sweden
Single bank
7
iDEAL
Netherlands
Banking network. The customer selects the
specific bank on your payment page.
9
GiroPay
Germany
Banking network. The customer selects the
specific bank on a web page that you do not
control.
11
eCard
Poland
Banking network. The customer selects the
specific bank on a web page that you do not
control.
12
eNets
Singapore
Banking network. The customer selects the
specific bank on a web page that you do not
control.
17
Akita
Finland
Banking network. The customer selects the
specific bank on a web page that you do not
control.
18
Sofortuberweisung
Germany
Banking network. The customer selects the
specific bank on a web page that you do not
control.
Global Payment Service Developer Guide | March 2015
60
Chapter 4
Table 13
Real-Time Bank Transfers Using the Simple Order API
Bank Transfer Real Time Type (Continued)
Bank
Code
Bank or
Payment Type
Country
Bank or Network
20
Poli
Australia
Banking network. The customer selects the
specific bank on a web page that you do not
control.
Reply Fields
The following table lists the fields returned in a reply from the
bankTransferRealTimeService service request.
Table 14
Reply Fields for Real-Time Bank Transfers Using the Simple Order API
Reply Field
Description
Data Type &
Length
bankTransferRealTimeReply_
amount
Total amount for the real-time bank transfer.
String (15)
bankTransferRealTimeReply_
formAction
URL that will be used to re-direct the customer’s browser
window back to your web site.
String (4000)
bankTransferRealTimeReply_
formMethod
Method that redirects the customer’s browser window to
your web site. The possible values are:
String (4)

GET

POST
bankTransferRealTimeReply_
paymentReference
Payment reference number that you must display to the
customer. For more information about tracking orders, see
Getting Started with CyberSource Advanced for the Simple
Order API. In Italy, this number is called the Numero di
riferimento.
String (16)
bankTransferRealTimeReply_
reasonCode
A numeric value corresponding to the result of the real-time
bank transfer request. See "Reason Codes," page 155, for a
list of possible values.
Integer (5)
bankTransferRealTimeReply_
reconciliationID
Unique value generated by CyberSource. See the
information about tracking orders in Getting Started with
CyberSource Advanced for the Simple Order API.
String (60)
bankTransferRealTimeReply_
requestDateTime
Time the real-time bank transfer was requested.
Format: YYYY-MM-DDThh:mm:ssZ.
Example: 2007-08-11T22:47:57Z, which is August 11, 2007,
at 10:47:57 P.M.
The T separates the date and the time. The Z indicates UTC.
String (20)
bankTransferRefundReply_iban
International Bank Account Number (IBAN) for the bank
account.
Alphanumeric
(50)
Global Payment Service Developer Guide | March 2015
61
Chapter 4
Table 14
Real-Time Bank Transfers Using the Simple Order API
Reply Fields for Real-Time Bank Transfers Using the Simple Order API (Continued)
Reply Field
Description
Data Type &
Length
decision
Summarizes the result of the overall request. The possible
values are:
String (6)
invalidField_0...N

ACCEPT

ERROR

REJECT
Fields in the request that contained invalid data. These reply
fields are included as an aid to software developers only.
String (100)
Note Do not attempt to use these fields for interacting with
end users.
For more information about missing and invalid fields, see
Getting Started with CyberSource Advanced for the Simple
Order API.
merchantReferenceCode
Order reference or tracking number that you provided in the
request. If you included multi-byte characters in this field in
the request, the returned value might contain corrupted
characters.
String (50)
missingField_0...N
Required fields that were missing from the request. These
reply fields are included as an aid to software developers
only.
String (100)
Note Do not attempt to use these fields for interacting with
end users.
For more information about missing and invalid fields, see
Getting Started with CyberSource Advanced for the Simple
Order API.
purchaseTotals_currency
Currency used for the order. Use the ISO Standard Currency
Codes.
String (5)
reasonCode
Numeric value corresponding to the result of the overall
request. See "Reason Codes," page 155, for a list of
possible values.
Integer (5)
requestID
Identifier for the request generated by CyberSource.
String (26)
requestToken
Request token data created by CyberSource for each reply.
The field is an encoded string that contains no confidential
information such as an account number. The string can
contain a maximum of 256 characters.
String (256)
Global Payment Service Developer Guide | March 2015
62
Chapter 4
Real-Time Bank Transfers Using the Simple Order API
Additional Request Fields
The following table lists the additional fields to use in a request for the
bankTransferRefundService service. In addition to these fields, you must use the fields
specified for refunds in "Request Fields," page 18.
Table 15
Additional Request Fields for Bank Transfer Refunds
for the Simple Order API
Request Field
Description
Required (R) or
Optional (O)
Data
Type &
Length
bankTransferRefund
Service_bankTransfer
RealTimeReconciliationID
Unique identifier for the order submitted to
Global Collect.
Bank Transfer
Refund (R for
standalone
refunds)
String (60)
Bank Transfer
Refund (R)
String (26)
bankTransferRefund
Service_bankTransfer
RealTimeRequestID
Note If you do not include this field in a
refund request, CyberSource will generate
the value.
The requestID field returned from a
previous request for the
bankTransferRealTimeService service.
Send this field instead of the
bankTransferRefundService_
bankTransferRequestID field.
Global Payment Service Developer Guide | March 2015
63
Chapter 4
Real-Time Bank Transfers Using the Simple Order API
Request and Reply Examples
Real-Time Bank Transfer Request
Example 16
Real-Time Bank Transfer Request
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.23">
<bankTransferRealTimeService run="true"/>
<merchantID>demo</merchantID>
<merchantReferenceCode>482046</merchantReferenceCode>
<billTo>
<firstName>John</firstName>
<lastName>Smith</lastName>
<street1>Boschdijk 987</street1>
<city>Eindhoven</city>
<country>NL</country>
<language>nl</language>
<postalCode>5600 PB</postalCode>
<email>[email protected]</email>
<phoneNumber>040-5551212</phoneNumber>
</billTo>
<purchaseTotals>
<currency>EUR</currency>
</purchaseTotals>
<item id="0">
<unitPrice>49.95</unitPrice>
<quantity>1</quantity>
</item>
<bankTransferRealTimeService>
<bankTransferRealTimeType>7</bankTransferRealTimeType>
</bankTransferRealTimeService>
<bankInfo>
<country>NL</country>
</bankInfo>
</requestMessage>
Global Payment Service Developer Guide | March 2015
64
Chapter 4
Real-Time Bank Transfers Using the Simple Order API
Real-Time Bank Transfer Reply
Example 17
Real-Time Bank Transfer Reply
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.23">
<c:requestID>0305782650000167905080</c:requestID>
<c:merchantReferenceCode>482046</c:merchantReferenceCode>
<c:purchaseTotals>
<c:currency>EUR</c:currency>
</c:purchaseTotals>
<c:decision>ACCEPT</c:decision>
<c:reasonCode>100</c:reasonCode>
<c:bankTransferRealTimeReply>
<c:reconciliationID>0308014624</c:reconciliationID>
<c:amount>49.95</c:amount>
<c:requestDateTime>2012-01-28T23:44:27Z</c:requestDateTime>
<c:paymentReference>106157214759</c:paymentReference>
<c:reasonCode>100</c:reasonCode>
<c:formMethod>GET</c:formMethod>
<c:formAction>http://www.cybs.com?REF=124&MAC=346o+123</c:formAction>
</c:bankTransferRealTimeReply>
</c:replyMessage>
Real-Time Bank Transfer Refund
Example 18
Real-Time Bank Transfer Refund Request
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.103">
<merchantID>demo123</merchantID>
<merchantReferenceCode>demoRef</merchantReferenceCode>
<billTo>
<firstName>Orlando</firstName>
<lastName>Bloom</lastName>
<street1>33, rue Dauphine</street1>
<city>Bergheim</city>
<postalCode>75006</postalCode>
<country>DE</country>
<phoneNumber>33 3 69 20 45 63</phoneNumber>
<email>[email protected]</email>
</billTo>
<purchaseTotals>
<currency>EUR</currency>
<grandTotalAmount>74</grandTotalAmount>
</purchaseTotals>
<fundTransfer>
<accountNumber>0044497071</accountNumber>
<accountName>BRADFORD NICKLES</accountName>
</fundTransfer>
Global Payment Service Developer Guide | March 2015
65
Chapter 4
Real-Time Bank Transfers Using the Simple Order API
<bankInfo>
<bankCode>79050000</bankCode>
<name>SloveniaBank_testing</name>
<country>DE</country>
<swiftCode>BSLJSI2X</swiftCode>
</bankInfo>
<bankTransferRefundService run="true">
<reconciliationID>21223345</reconciliationID>
</bankTransferRefundService>
</requestMessage>
Real-Time Bank Transfer Refund Reply
Example 19
Real-Time Bank Transfer Refund Reply
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.103">
<c:merchantReferenceCode>demoRef</c:merchantReferenceCode>
<c:requestID>4024431863670181551532</c:requestID>
<c:decision>ACCEPT</c:decision>
<c:reasonCode>100</c:reasonCode>
<c:purchaseTotals>
<c:currency>eur</c:currency>
</c:purchaseTotals>
<c:bankTransferRefundReply>
<c:reasonCode>100</c:reasonCode>
<c:amount>74.00</c:amount>
<c:requestDateTime>2014-06-10T23:33:08Z</c:requestDateTime>
<c:reconciliationID>21223345</c:reconciliationID>
<c:iban>DE58790500000044497071</c:iban>
</c:bankTransferRefundReply>
</c:replyMessage>
Global Payment Service Developer Guide | March 2015
66
CHAPTER
Real-Time Bank Transfers
Using the SCMP API
5
Transaction Status
You can perform an on-demand query to get the status of a transaction. CyberSource
recommends that you wait at least 5 minutes after the customer has completed a
transaction before sending an on-demand query. If you need to request the status more
than once, you must wait at least 10 minutes between queries for the same transaction.
For China, real-time bank transfer settlements are not posted until the next
business day.
Note
Sending the Query
To send the query, send the fields described in the following table in an HTTP POST
request to the following URL:
https://ebc.cybersource.com/ebc/Query
After you send the query, CyberSource will prompt you for your username and password
to verify that you have access to the merchant ID.
Table 16
Required Data for the On-Demand Transaction Status Query
Field
Description
Required (R)
or Optional (O)
Data Type
& Length
merchantID
Your CyberSource merchant ID.
R
String (30)
Type of query. The only possible value is
R
String (30)
type
transaction.
subtype
Query subtype. The only possible value is
transactionStatus.
R
String (30)
requestID
Request ID returned in the real-time bank
transfer reply.
R
String (26)
transRefNo
Transaction reference number (SCMP API)
or reconciliation ID (Simple Order API)
returned in the real-time bank transfer reply.
R
String (60)
Global Payment Service Developer Guide | March 2015
67
Chapter 5
Table 16
Real-Time Bank Transfers Using the SCMP API
Required Data for the On-Demand Transaction Status Query (Continued)
Field
Description
Required (R)
or Optional (O)
Data Type
& Length
requestToken
Request token data generated by
CyberSource for each transaction reply.
R
String (256)
This example shows an on-demand query for a transaction’s status:
Example 20
On-Demand Transaction Status Query
<html>
<body>
<form action="https://ebc.cybersource.com/ebc/Query" method="POST">
<input type="hidden" name="type" value="transaction">
<input type="hidden" name="subtype" value="transactionStatus">
<table>
<tr>
<td>merchant ID <font color=red>*</font>: </td>
<td><input type="text" name="merchantID" value="dm_ptech"></td>
</tr>
<tr>
<td>Request ID: </td>
<td><input type="text" name="requestID" value=""></td>
</tr>
<tr>
<td>Transaction Reference Number: </td>
<td><input type="text" name="transRefNo" value=""></td>
</tr>
<tr>
<td>Request Token: </td>
<td><input type="text" name="requestToken" value=""></td>
</tr>
<tr><td colspan=2>&nbsp;</td></tr>
<tr><td colspan=2><input type="submit" value="submit"></td></tr>
</table>
</form>
</body>
</html>
Global Payment Service Developer Guide | March 2015
68
Chapter 5
Real-Time Bank Transfers Using the SCMP API
Viewing the Response
You receive a response immediately. There are two possible outcomes:

If the query is successful, the results appear as a document of mime type application/
xml. To use this document, you need to write a program to save or process the XML
data of the document.

If your POST data contains an error, you receive a system error. If the system error
persists, contact CyberSource Customer Support.
The DTD for a successful query result:
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
xml (Request, Response)>
Request (MerchantID, RequestID)>
MerchantID (#PCDATA)>
RequestID (#PCDATA)>
Response (PaymentStatus?)>
PaymentStatus (Status, ProcessorMessage?)>
Status (#PCDATA)>
ProcessorMessage (#PCDATA)>
This example shows on-demand query results for a successful real-time bank transfer
payment:
Example 21
Successful Payment
<xml>
<Request>
<MerchantID>OKGo1234</MerchantID>
<RequestID>1688722776730008402433</RequestID>
<Response>
<PaymentStatus>
<Status>Payment</Status>
</PaymentStatus>
</Response>
</Request>
</xml>
Global Payment Service Developer Guide | March 2015
69
Chapter 5
Real-Time Bank Transfers Using the SCMP API
This example shows on-demand query results for a failed real-time bank transfer
payment:
Example 22
Failed Payment
<xml>
<Request>
<MerchantID>OKGo1234</MerchantID>
<RequestID>1545412404130167905103</RequestID>
<Response>
<PaymentStatus>
<Status>Failed</Status>
<ProcessorMessage>Payment instruction has been rejected</ProcessorMessage>
</PaymentStatus>
</Response>
</Request>
</xml>
Requesting Real-Time Bank
Transfers
Use the ics_bank_transfer_real_time service to request a real-time bank transfer. See
Table 17, page 71, and Table 18, page 75, for fields to use when requesting the service.
Table 20, page 78, describes the fields that the service returns to you.
When requesting a real-time bank transfer, you may not request any of the other ICS
services except ics_tax, which is optional. For more information about the service, see
Tax Calculation Service Using the SCMP API.
Global Payment Service Developer Guide | March 2015
70
Chapter 5
Real-Time Bank Transfers Using the SCMP API
Requesting Real-Time Bank
Transfer Refunds
Important
From August 1, 2016, for euro countries and from October 31, 2016, for noneuro countries, the IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN, and this conversion process will continue
only until August 1, 2016.
Except for a few additional fields, refunds for real-time bank transfers are the same as
refunds for traditional bank transfers. See "Requesting Bank Transfer Refunds," page 34.
The additional fields are identifiers that have been re-named for real-time bank transfers.
See Table 22, page 80.
API Fields
For information about the data types, see Getting Started with CyberSource Advanced for
the SCMP API.
Request Fields
The following table lists the fields to use in a request for the ics_bank_transfer_real_
time field.
Table 17
Request-Level Fields for Real-Time Bank Transfers Using the SCMP API
Request-Level Field
Description
Required (R) or
Optional (O)
Data
Type &
Length
bank_account_number
Customer’s bank account number.
Real-Time Bank
Transfer (O)
String (10)
bank_code
Code for the customer’s bank.
Real-Time Bank
Transfer (O)
String (8)
bank_country
Country where the bank is located. Use the
two-character ISO Standard Country Codes.
Real-Time Bank
Transfer (R)
String (2)
bank_iban
International Bank Account Number (IBAN) for
the bank account.
Real-Time Bank
Transfer (See
description)
String (30)
Note Required for specific countries. Contact
CyberSource Customer Support for required
country-specific requirements.
Global Payment Service Developer Guide | March 2015
71
Chapter 5
Table 17
Real-Time Bank Transfers Using the SCMP API
Request-Level Fields for Real-Time Bank Transfers Using the SCMP API (Continued)
Request-Level Field
Description
Required (R) or
Optional (O)
Data
Type &
Length
bank_transfer_real_time_
type
Code that indicates the payment method or
bank to use for this transaction. See Table 19,
page 76.
Real-Time Bank
Transfer (R)
String (2)
bill_address1
Billing street address.
Real-Time Bank
Transfer (R)
String (60)
bill_address2
Additional billing address information.
Real-Time Bank
Transfer (O)
String (60)
bill_city
Billing address city.
Real-Time Bank
Transfer (R)
String (50)
bill_country
Billing address country.
Real-Time Bank
Transfer (R)
String (2)
bill_state
Billing address state. This field is required if the
value of bill_country is US or CA.
Real-Time Bank
Transfer (See
description)
String (2)
bill_zip
Zip code for the shipping address. The zip
code must consist of 5 to 9 digits.
Real-Time Bank
Transfer (R if bill_
country is US or
CA)
String (10)
If the value of bill_country is US, the 9-digit
zip code must follow this format:
[5 digits][dash][4 digits]
Example:12345-6789
If the value of bill_country is CA, the 6-digit
zip code must follow this format:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C3
company_name
Name of the customer’s company.
Real-Time Bank
Transfer (O)
String (60)
currency
Currency used for the order. Use the ISO
Standard Currency Codes.
Real-Time Bank
Transfer (R)
String (5)
customer_email
Customer’s email address. For example:
[email protected]
Real-Time Bank
Transfer (R)
String
(255)
customer_firstname
Customer’s first name.
Real-Time Bank
Transfer (R)
String (60)
customer_language
Language used for the order. Use the ISO
standard language codes.
Real-Time Bank
Transfer (O)
String (2)
customer_lastname
Customer’s last name.
Real-Time Bank
Transfer (R)
String (60)
customer_phone
Customer’s telephone number.
Real-Time Bank
Transfer (O)
String (15)
Global Payment Service Developer Guide | March 2015
72
Chapter 5
Table 17
Real-Time Bank Transfers Using the SCMP API
Request-Level Fields for Real-Time Bank Transfers Using the SCMP API (Continued)
Request-Level Field
Description
Required (R) or
Optional (O)
Data
Type &
Length
grand_total_amount
Grand total for the order. You must include
either this field or offer0 and the offer-level
field amount. See the information about offers
and grand totals in Getting Started with
CyberSource Advanced for the SCMP API.
Real-Time Bank
Transfer (See
description)
Decimal
(15)
ics_applications
ICS services to process for the request.
Real-Time Bank
Transfer (R)
String
(255)
link_to_request
Value that links the current request to a
previous authorization request for a debit card
or prepaid card. This value is useful when
using multiple payment methods to complete
an order. For details, see the information about
partial authorizations in Credit Card Services
Using the SCMP API.
Real-Time Bank
Transfer (O)
String (26)
merchant_descriptor
Merchant descriptor that is displayed on the
customer’s statement for each real-time bank
transfer.
Real-Time Bank
Transfer (O)
String (50)
For iDEAL:
String (32)
To enable this field and to optionally set a
default descriptor for all real-time bank
transfers, contact CyberSource Customer
Support.
merchant_id
Your CyberSource merchant ID.
Real-Time Bank
Transfer (R)
String (30)
merchant_ref_number
Merchant-generated order reference or
tracking number. If this field includes multi-byte
characters, it might be corrupted when it is
returned to you in the reply. See the
information about tracking orders in Getting
Started with CyberSource Advanced for the
SCMP API.
Real-Time Bank
Transfer (R)
String (50)
offer0...N
Offers for the request. An offer is a line item for
the order.
Real-Time Bank
Transfer (O)
String (50)
return_url
URL that will be used to return the customer to
your web site after the transaction. You are
required to provide this value using one of the
following methods:
Real-Time Bank
Transfer (See
description)
String
(512)
Real-Time Bank
Transfer (See
description)
String (60)
ship_to_address1

Send this field with every request.

Provide the URL when you sign up for the
service, and CyberSource will store it in a
database.
First line of the address to which the product
will be shipped. This field is required if any
shipping information is included in the request.
Global Payment Service Developer Guide | March 2015
73
Chapter 5
Table 17
Real-Time Bank Transfers Using the SCMP API
Request-Level Fields for Real-Time Bank Transfers Using the SCMP API (Continued)
Request-Level Field
Description
Required (R) or
Optional (O)
Data
Type &
Length
ship_to_address2
Second line of the address to which the
product will be shipped.
Real-Time Bank
Transfer (O)
String (60)
ship_to_city
City to which the product will be shipped. This
field is required if any shipping information is
included in the request.
Real-Time Bank
Transfer (See
description)
String (50)
ship_to_country
Country to which the product will be shipped.
Use the two-character ISO Standard Country
Codes.
Real-Time Bank
Transfer (O)
String (2)
ship_to_firstname
First name of person receiving the product.
Real-Time Bank
Transfer (O)
String (60)
ship_to_lastname
Last name of person receiving the product.
Real-Time Bank
Transfer (O)
String (60)
ship_to_phone
Phone number for the shipping address.
Real-Time Bank
Transfer (O)
String (15)
ship_to_state
State or province to which the product will be
shipped. Use the State, Province, and Territory
Codes for the United States and Canada. This
field is required if the value ship_to_country is
US or CA.
Real-Time Bank
Transfer (See
description)
String (2)
ship_to_zip
Zip code for the shipping address.
Real-Time Bank
Transfer (R is if
ship_to_country
is US or CA)
String (10)
Real-Time Bank
Transfer (O)
Positive
integer (3)
If the value of ship_to_country is US, the 9digit zip code must follow this format:
[5 digits][dash][4 digits]
Example: 12345-6789
If the value of ship_to_country is CA, the 6digit zip code must follow this format:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C3
If the postal code for the shipping address is
not included in the request message,
CyberSource will use the postal code for the
billing address. If the postal code for the billing
address is not included in the request
message, the postal code for the shipping
address is required.
timeout
Number of seconds until the transaction times
out. The default is 110 seconds.
Global Payment Service Developer Guide | March 2015
74
Chapter 5
Real-Time Bank Transfers Using the SCMP API
Offer-Level Fields
The following table lists the offer-level fields for the ics_bank_transfer_real_time field.
Table 18
Offer-Level Fields for Real-Time Bank Transfers for the SCMP API
Offer-Level Field
Description
Required (R) or
Optional (O)
Data
Type &
Length
amount
Per-item price of the product. You must
include either offer0 and this field, or the
request-level field grand_total_amount in
your request. This value cannot be negative.
See the information about offers and grand
totals in Getting Started with CyberSource
Advanced for the SCMP API.
Real-Time Bank
Transfer (See
description)
Decimal
(15)
You can include a decimal point (.) in this
field, but you cannot include any other
special characters. The amount will be
truncated at the request level to the correct
number of decimal places.
merchant_product_sku
Product identifier code. It is required if
product_code is not default, stored_
value, or one of the values related to
shipping and/or handling.
Real-Time Bank
Transfer (See
description)
String (30)
product_code
Type of product the offer contains. This
value is used to determine the category that
the product falls under: electronic, handling,
physical, service, or shipping. The default
value is default. See "Product Codes,"
page 154, for a list of valid values.
Real-Time Bank
Transfer (O)
String (30)
If you set this to a value other than
default, stored_value, or any of the
values related to shipping and/or handling,
the quantity, product_name and
merchant_product_sku fields are required.
product_name
Name of the product. This field is required if
product_code is not default, stored_
value or one of the values related to
shipping and/or handling.
Real-Time Bank
Transfer (See
description)
String (30)
quantity
Quantity of the product being purchased.
The default value is 1. This field is required if
product_code is not default, stored_
value or one of the values related to
shipping and/or handling.
Real-Time Bank
Transfer (See
description)
Nonnegative
integer (10)
Global Payment Service Developer Guide | March 2015
75
Chapter 5
Table 18
Real-Time Bank Transfers Using the SCMP API
Offer-Level Fields for Real-Time Bank Transfers for the SCMP API (Continued)
Offer-Level Field
Description
Required (R) or
Optional (O)
Data
Type &
Length
tax_amount
Tax amount associated with this item. This
field is additive. For example, if you send
these offer lines:
Real-Time Bank
Transfer (O)
Decimal
(15)
offer0=amount:10.00^
quantity:1^tax_amount:0.80
offer1=amount:20.00^
quantity:1^tax_amount:1.60
the total amount authorized will be for 32.40,
not 30.00 with 2.40 of tax included.
The tax_amount and the amount values
must be in the same currency.
If you include tax_amount and you request
the ics_tax service, ics_tax will not
calculate tax for the offer. Instead, it will
return the value in the tax_amount field.
Bank Codes
The following table describes the values for the bank transfer real-time type.
Table 19
Bank Transfer Real-Time Type
Bank
Code
Bank or
Payment Type
Country
Bank or Network
1
ING Home Pay
Belgium
Single bank
2
Nordea e-maksu
Finland
Single bank
3
Nordea e-betaling
Denmark
Single bank
5
Nordea e-betalning
Sweden
Single bank
7
iDEAL
Netherlands
Banking network. The customer selects the
specific bank on your payment page.
9
GiroPay
Germany
Banking network. The customer selects the
specific bank on a web page that you do not
control.
11
eCard
Poland
Banking network. The customer selects the
specific bank on a web page that you do not
control.
12
eNets
Singapore
Banking network. The customer selects the
specific bank on a web page that you do not
control.
Global Payment Service Developer Guide | March 2015
76
Chapter 5
Table 19
Real-Time Bank Transfers Using the SCMP API
Bank Transfer Real-Time Type (Continued)
Bank
Code
Bank or
Payment Type
Country
Bank or Network
17
Akita
Finland
Banking network. The customer selects the
specific bank on a web page that you do not
control.
18
Sofortuberweisung
Germany
Banking network. The customer selects the
specific bank on a web page that you do not
control.
20
Poli
Australia
Banking network. The customer selects the
specific bank on a web page that you do not
control.
Bank
Code
Bank or
Payment Type
Country
Bank or Network
1
ING Home Pay
Belgium
Single bank
2
Nordea e-maksu
Finland
Single bank
3
Nordea e-betaling
Denmark
Single bank
5
Nordea e-betalning
Sweden
Single bank
7
iDEAL
Netherlands
Banking network. The customer selects the
specific bank on your payment page.
Global Payment Service Developer Guide | March 2015
77
Chapter 5
Real-Time Bank Transfers Using the SCMP API
Reply Fields
The following table lists the fields returned in a reply from the ics_bank_transfer_real_
time request.
Table 20
Reply Fields for Real-Time Bank Transfers Using the SCMP API
Reply Field
Description
Data Type &
Length
bank_transfer_refund_iban
International Bank Account Number (IBAN) for the bank
account.
Alphanumeric
(50)
bank_transfer_real_time_amount
Total amount for the real-time bank transfer.
Decimal (15)
bank_transfer_real_time_form_
action
URL that will be used to re-direct the customer’s browser
window back to your web site.
String (4000)
bank_transfer_real_time_form_
method
Method that will be used to re-direct the customer’s browser
window back to your web site. The possible values are:
String (4)

GET

POST
bank_transfer_real_time_
payment_reference
Payment reference number that you must display to the
customer. See the information about tracking orders in
Getting Started with CyberSource Advanced for the SCMP
API. In Italy, this is called the Numero di riferimento.
String (16)
bank_transfer_real_time_rcode
One-digit code that indicates whether the ics_bank_
transfer_real_time request was successful.
Integer (1)
bank_transfer_real_time_rflag
One-word description of the result of the ics_bank_
transfer_real_time request.
String (50)
bank_transfer_real_time_rmsg
Message that explains the reply flag bank_transfer_real_
time_rflag.
String (255)
bank_transfer_real_time_time
Time of the real-time bank transfer request in UTC. For the
format, see the information about data types in Getting
Started with CyberSource Advanced for the SCMP API.
Date and time
(20)
bank_transfer_real_time_trans_
ref_no
Unique value generated by CyberSource. See the
information about tracking orders in Getting Started with
CyberSource Advanced for the SCMP API.
String (60)
client_lib_version
Information about the client library used to request the
transaction.
String (50)
currency
Currency used for the order. Use the ISO Standard
Currency Codes.
String (5)
ics_rcode
One-digit code that indicates whether the entire request was
successful. The possible values are:
Integer (1)
ics_rflag

-1: An error occurred

0: The request was declined

1: The request was successful
One-word description of the result of the entire request.
Global Payment Service Developer Guide | March 2015
String (50)
78
Chapter 5
Table 20
Real-Time Bank Transfers Using the SCMP API
Reply Fields for Real-Time Bank Transfers Using the SCMP API (Continued)
Reply Field
Description
Data Type &
Length
ics_rmsg
Message that explains the reply flag ics_rflag.
String (255)
merchant_ref_number
Order reference or tracking number that you provided in the
request. If you included multi-byte characters in this field in
the request, the returned value might contain corrupted
characters.
String (50)
request_id
Identifier for the request generated by CyberSource.
String (26)
request_token
Request token data created by CyberSource for each reply.
The field is an encoded string that contains no confidential
information such as an account number. The string can
contain a maximum of 256 characters.
String (256)
Reply Flags
The following table lists the reply flags for the ics_bank_transfer_real_time request.
Table 21
Reply Flags for Real-Time Bank Transfers for the SCMP API
Reply Flag
Description
DINVALIDDATA
Data provided is not consistent with the request.
DMISSINGFIELD
The request is missing a required field.
ESYSTEM
System error. You must design your transaction management system to
correctly handle CyberSource system errors. Depending on the payment
processor handling the transaction, the error may indicate a valid
CyberSource system error or a processor rejection due to invalid data. In
either case, CyberSource recommends that you do not design your
system to endlessly retry sending a transaction. For important
information on handling system errors and retries, see the documentation
for your CyberSource client.
ETIMEOUT
The request timed out.
SOK
The transaction was successful.
Global Payment Service Developer Guide | March 2015
79
Chapter 5
Real-Time Bank Transfers Using the SCMP API
Additional Request Fields
The following table lists the additional fields to use in a request for the ics_bank_
transfer_refund service. In addition to these fields, you must use the fields specified for
refunds in "Request Fields," page 36.
Table 22
Additional Request Fields for Bank Transfer Refunds Using the SCMP API
Request Field
Description
Required (R) or
Optional (O)
Data Type
& Length
bank_transfer_real_time_
request_id
The request_id value returned from a
previous request for the ics_bank_
transfer_real_time service. Send this field
instead of the bank_transfer_request_id
field.
Bank Transfer
Refund (R)
String (26)
bank_transfer_real_time_
trans_ref_no
Unique identifier for the order submitted to
Global Collect.
Bank Transfer
Refund (R for
standalone
refunds)
String (60)
Note If you do not include this field in a
refund request, CyberSource will generate
the value.
Global Payment Service Developer Guide | March 2015
80
Chapter 5
Real-Time Bank Transfers Using the SCMP API
Request and Reply Examples
Real-Time Bank Transfer Request
Example 23
Real-Time Bank Transfer Request
ics_applications=ics_bank_transfer_real_time
bank_country=NL
bank_transfer_real_time_type=12
bill_address1=1276VicenteDRAptH
bill_city=Eindhoven
bill_country=NL
bill_zip=5600 PB
currency=EUR
[email protected]
customer_firstname =john
customer_lastname=smith
customer_language=nl
grand_total_amount=10.00
merchant_id=demo
merchant_ref_number=C299792458C
Real-Time Bank Transfer Reply
Example 24
Real-Time Bank Transfer Reply
request_id=0305782650000167905080
merchant_ref_number=C299792458C
currency=EUR
ics_rcode=1
ics_rflag=SOK
ics_rmsg=Request was processed successfully.
bank_transfer_real_time_trans_ref_no=0308014624
bank_transfer_real_time_amount=10.00
bank_transfer_real_time_time=2012-01-22T170910Z
bank_transfer_real_time_payment_reference=106157214759
bank_transfer_real_time_rcode=1
bank_transfer_real_time_rflag=SOK
bank_transfer_real_time_rmsg=Request was processed successfully.
bank_transfer_real_time_form_method=GET
Global Payment Service Developer Guide | March 2015
81
Chapter 5
Real-Time Bank Transfers Using the SCMP API
Real-Time Bank Transfer Refund Request
Example 25
Real-Time Bank Transfer Refund Request
bank_account_name=nette
bank_account_number=30004 00819 00010023116 61
bank_check_digit=12
bank_city=Paris
bank_code=0440339464
bank_country=France
bank_name=BNP Paribas
bank_swiftcode=BNPA FR PP PLZ
bank_transfer_real_time_request_id=4024360119000179087451
bill_address1=1ere Avenue
bill_address2=14eme Rue BP 148
bill_city=Carros Cedex
bill_country=FR
bill_zip=06513
branch_code=1234567890ABCDE
currency=EUR
[email protected]
customer_firstname=antoi
customer_lastname=nette
customer_phone=33-04-9208-2846
ics_applications=ics_bank_transfer_refund
merchant_id=demo
merchant_ref_number=C299792458C
offer0=product_code:electronic_software^merchant_product_
sku:testdl^quantity:1^amount:1.56^tax_amount:0.25^product_
name:PName1^offer_id:0
ship_to_address1=37 se main street
ship_to_address2=suite 2-5A
ship_to_city=bloomington
ship_to_country=US
ship_to_state=indiana
ship_to_zip=47404
Global Payment Service Developer Guide | March 2015
82
Chapter 5
Real-Time Bank Transfers Using the SCMP API
Real-Time Bank Transfer Refund Reply
Example 26
Real-Time Bank Transfer Refund Reply
bank_transfer_refund_amount=1.81
bank_transfer_refund_iban=IE64BOFI30004 00819 00010023116 61
bank_transfer_refund_rcode=1
bank_transfer_refund_rflag=SOK
bank_transfer_refund_rmsg=Request was processed successfully.
bank_transfer_refund_time=2014-06-10T213332Z
bank_transfer_refund_trans_ref_no=2149563030
currency=eur
ics_rcode=1
ics_rflag=SOK
ics_rmsg=Request was processed successfully.
merchant_ref_number=C299792458C
request_id=4024360120420179087451
Global Payment Service Developer Guide | March 2015
83
CHAPTER
Boletos Bancários Using the
Simple Order API
6
Requesting a Boleto Bancário
Use the boletoPaymentService service to request the Boleto Bancário payment service.
See Table 23, page 85, for a list of the fields to use.
In the Boleto Bancário reply, you receive a URL for a form that contains information about
the Boleto Bancário. Display the information in this form to your customer exactly as you
received it so that the customer can easily transcribe it or print it and give it to their bank.
Note
You are responsible for storing the Boleto Bancário form URL. You might want
to present the URL or its contents to the customer if you have to remind them
that their payment is unexpectedly late and that the Boleto Bancário will time
out soon. CyberSource does not store the URL.
API Fields
This section provides detailed information about the Simple Order API fields for the Boleto
Bancário payment service. For information about the data types, see Getting Started with
CyberSource Advanced for the Simple Order API.
Data Type Definitions
For more information about these data types, see the World Wide Web Consortium (W3C)
XML Schema Part 2: DataTypes specification.

Integer—Whole number {..., -3, -2, -1, 0, 1, 2, 3, ...}.

String—Sequence of letters, numbers, spaces, and special characters, such as @
and #.
Global Payment Service Developer Guide | March 2015
84
Chapter 6
Boletos Bancários Using the Simple Order API
Request Fields
The following table describes the fields to use in a request for the boletoPaymentService
service.
Table 23
Request Fields for Boletos Bancários for the Simple Order API
Request Field
Description
Required or
Optional
Data Type
& Length
billTo_firstName
Customer’s first name.
Required
String (60)
billTo_lastName
Customer’s last name.
Required
String (60)
billTo_personalID
Personal identifier. For CyberSource Latin
American Processing, you can use this field
for the Cadastro de Pessoas Fisicas (CPF).
Optional
String (18)
boletoPaymentService_
expirationDate
Expiration date of the Boleto Bancário in
GMT in ISO format: YYYY-MM-DD.
Optional
String (10)
boletoPaymentService_
instruction
Text instructions for the Boleto Bancário.
This field allows you to specify the text that
will be printed in the customer message
field on the Boleto form. The customer
message field is often used to remind the
customer to submit the Boleto promptly.
Optional
String (512)
boletoPaymentService_run
Whether to include boletoPaymentService
in your request. Possible values:
Required
String (50)
Optional
Decimal
(15)
Optional
String (26)
item_#_unitPrice

true: Include the service in your request.

false (default): Do not include the service
in your request.
Per-item price of the product. You must
include either this field or purchaseTotals_
grandTotalAmount in your request. For
more information about items and grand
totals, see Getting Started with
CyberSource Advanced for the Simple
Order API.
This value cannot be negative. You can
include a decimal point (.) in this field, but
you cannot include any other special
characters. The amount will be truncated at
the request level to the correct number of
decimal places.
linkToRequest
Value that links the current request to a
previous authorization request for a debit
card or prepaid card. This value is useful
when using multiple payment methods to
complete an order. For more information
about partial authorizations, see Credit
Card Services Using the Simple Order API.
Global Payment Service Developer Guide | March 2015
85
Chapter 6
Table 23
Boletos Bancários Using the Simple Order API
Request Fields for Boletos Bancários for the Simple Order API (Continued)
Request Field
Description
Required or
Optional
Data Type
& Length
merchantID
Your CyberSource merchant ID.
Required
String (30)
Note When opening your account with
CyberSource, be sure to inform
CyberSource if you plan to use multiple
CyberSource merchant IDs. For example, if
you have separate business units within
your company, each with a separate
CyberSource merchant ID, you must have a
separate processor merchant ID for each
CyberSource merchant ID. For more
information, contact Customer Support.
merchantReferenceCode
Merchant-generated order reference or
tracking number. For more information, see
Getting Started with CyberSource
Advanced for the Simple Order API.
Required
String (50)
purchaseTotals_
grandTotalAmount
Grand total for the order. You must include
either this field or item_#_unitPrice in your
request. For more information, see Getting
Started with CyberSource Advanced for the
Simple Order API.
Required
Decimal
(15)
Reply Fields
The following table describes the fields returned in a reply from boletoPaymentService.
Table 24
Reply Fields for Boletos Bancários for the Simple Order API
Reply Field
Description
Data Type
& Length
boletoPaymentReply_
amount
Total amount of the Boleto Bancário payment.
Decimal
(15)
boletoPaymentReply_
boletoNumber
Boleto Bancário payment number.
String (6)
boletoPaymentReply_
expirationDate
Expiration date of the Boleto Bancário in GMT. On the face of the
Boleto Bancário, the date is in the European format: DD-MM-YYYY.
For this expiration date field, the date is mapped to an ISO format:
YYYY-MM-DD hh:mm:ss.
String (20)
Note There is a space between the date and the time.
boletoPaymentReply_
reasonCode
Numeric value corresponding to the result of the Boleto Bancário
request. See Appendix B, "Reason Codes," on page 155.
Integer (5)
boletoPaymentReply_
reconciliationID
Unique value generated by CyberSource. For more information
about tracking orders, see Getting Started with CyberSource
Advanced for the Simple Order API.
String (60)
Global Payment Service Developer Guide | March 2015
86
Chapter 6
Table 24
Boletos Bancários Using the Simple Order API
Reply Fields for Boletos Bancários for the Simple Order API (Continued)
Reply Field
Description
Data Type
& Length
boletoPaymentReply_
requestDateTime
Time of the Boleto Bancário request in UTC.
Format: YYYY-MM-DDThh:mm:ssZ.
Example: 2007-08-11T22:47:57Z which is August 11, 2007 at
10:47:57 P.M.
The T separates the date and the time. The Z indicates UTC.
Date and
time (20)
boletoPaymentReply_url
URL of the Boleto Bancário form.
String (255)
decision
Summarizes the result of the overall request. Possible values:
String (6)

ACCEPT

ERROR

REJECT
For more information about decision values, see Getting Started
with CyberSource Advanced for the Simple Order API.
invalidField_0…N
Fields in the request that contained invalid data. These reply fields
are included as an aid to software developers only. Do not attempt
to use these fields for end user interaction. For more information
about missing and invalid fields, see Getting Started with
CyberSource Advanced for the Simple Order API.
String (100)
merchantReferenceCode
Order reference or tracking number that you provided in the
request. If you included multi-byte characters in this field in the
request, the returned value might contain corrupted characters. For
more information about tracking orders, see Getting Started with
CyberSource Advanced for the Simple Order API.
String (50)
missingField_0...N
Required fields that were missing from the request. These reply
fields are included as an aid to software developers only. Do not
attempt to use these fields for end user interaction. For more
information about missing and invalid fields, see Getting Started
with CyberSource Advanced for the Simple Order API.
String (100)
purchaseTotals_currency
Currency used for the order. The only possible value is BRL.
String (5)
reasonCode
Numeric value corresponding to the result of the overall request.
See Appendix B, "Reason Codes," on page 155.
Integer (5)
requestID
Identifier for the request. For more information about request
tokens, see Getting Started with CyberSource Advanced for the
Simple Order API.
String (26)
Global Payment Service Developer Guide | March 2015
87
Chapter 6
Boletos Bancários Using the Simple Order API
Examples
Name-Value Pairs: Request
Example 27
Boleto Bancário Request
billTo_firstName=Jane
billTo_lastName=Smith
billTo_personalID=1111
merchantID=okgo
merchantReferenceCode=1234567
item_0_unitPrice=10.00
boletoPaymentService_run=true
boletoPaymentService_instruction=this is a test
boletoPaymentService_expirationDate=2008-11-22
Name-Value Pairs: Reply
Example 28
Boleto Bancário Reply
decision=ACCEPT
reasonCode=100
requestID=12345678901234567890
merchantReferenceCode=1234567
purchaseTotals_currency=BRL
boletoPaymentReply_reasonCode=100
boletoPaymentReply_reconciliationID=12345678
boletoPaymentReply_amount=10.00
boletoPaymentReply_boletoNumber=123456
boletoPaymentReply_expirationDate=2008-11-22 23:59:59
boletoPaymentReply_url=https://www.pagador.com.br/pagador/
reenvia.asp?Id_Transacao=93b5668a-6129-48d5-ad95-76308d997479
Global Payment Service Developer Guide | March 2015
88
Chapter 6
Boletos Bancários Using the Simple Order API
XML: Request
Example 29
Boleto Bancário Request
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.42">
<billTo>
<firstName>Jane</firstName>
<lastName>Smith</lastName>
<personalID>1111</personalID>
</billTo>
<merchantID>okgo</merchantID>
<merchantReferenceCode>1234567</merchantReferenceCode>
<item id="0"><unitPrice>10.00</unitPrice></item>
<boletoPaymentService run="true">
<instruction>this is a test</instruction>
<expirationDate>2008-11-22</expirationDate>
</boletoPaymentService>
</requestMessage>
XML: Reply
Example 30
Boleto Bancário Reply
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.42">
<c:decision>ACCEPT</c:decision>
<c:reasonCode>100</c:reasonCode>
<c:requestID>12345678901234567890</c:requestID>
<c:merchantReferenceCode>1234567</c:merchantReferenceCode>
<c:purchaseTotals><c:currency>BRL</c:currency></c:purchaseTotals>
<c:boletoPaymentReply>
<c:reasonCode>100</c:reasonCode>
<c:reconciliationID>12345678</c:reconciliationID>
<c:amount>10.00</c:amount>
<c:boletoNumber>123456</c:boletoNumber>
<c:expirationDate>2008-11-22 23:59:59</c:expirationDate>
<c:url>https://www.pagador.com.br/pagador/reenvia.asp?
Id_Transacao=93b5668a-6129-48d5-ad95-76308d997479</c:url>
</c:boletoPaymentReply>
</c:replyMessage>
Global Payment Service Developer Guide | March 2015
89
CHAPTER
7
Boletos Bancários Using the
SCMP API
Requesting a Boleto Bancário
Use the ics_boleto_payment field to request the Boleto Bancário payment service. See
Table 25, page 90, for a list of the fields.
In the Boleto Bancário reply, you receive a URL for a form that contains information about
the Boleto Bancário. Display the information in this form to your customer exactly as you
received it so that the customer can easily transcribe it or print it and give it to their bank.
Note
You are responsible for storing the Boleto Bancário form URL. You might want
to present the URL or its contents to the customer if you have to remind them
that their payment is unexpectedly late and that the Boleto Bancário will time
out soon. CyberSource does not store the URL.
API Fields
This section provides detailed information about the SCMP API fields for the Boleto
Bancário payment service. For information about the data types, see Getting Started with
CyberSource Advanced for the SCMP API.
Request Fields
The following table describes the fields to use in a request for the ics_boleto_payment
service.
Table 25
Request-Level Fields for Boletos Bancários for the SCMP API
Request-Level
Field
Description
Required or
Optional
Data Type
& Length
boleto_payment_
expiration_date
Expiration date of the Boleto Bancário in GMT in
ISO format: YYYY-MM-DD.
Optional
String (10)
Global Payment Service Developer Guide | March 2015
90
Chapter 7
Table 25
Boletos Bancários Using the SCMP API
Request-Level Fields for Boletos Bancários for the SCMP API (Continued)
Request-Level
Field
Description
Required or
Optional
Data Type
& Length
boleto_payment_
instruction
Text instructions for the Boleto Bancário. This field
allows you to specify the text that will be printed in
the customer message field on the Boleto
Bancários form. The customer message field is
often used to remind the customer to submit the
Boleto Bancários promptly.
Optional
String (512)
customer_firstname
Customer’s first name.
Required
String (60)
customer_lastname
Customer’s last name.
Required
String (60)
grand_total_amount
Grand total for the order. You must include either
this field or offer0 and the offer-level field amount.
For more information about offers and grand totals,
see Getting Started with CyberSource Advanced
for the SCMP API.
Required
Decimal
(15)
ics_applications
Service to process for the request. For a Boleto
Bancário request, this value must be ics_boleto_
payment.
Required
String (255)
link_to_request
Value that links the current request to a previous
authorization request for a debit card or prepaid
card. This value is useful when using multiple
payment methods to complete an order. For more
information about partial authorizations, see Credit
Card Services Using the SCMP API.
Optional
String (26)
merchant_id
Your CyberSource merchant ID.
Required
String (30)
Required
String (50)
Note When opening your account with
CyberSource, make sure that you inform
CyberSource if you plan to use multiple
CyberSource merchant IDs. For example, when
you have separate business units within your
company, each with a separate CyberSource
merchant ID, you must have a separate processor
merchant ID for each CyberSource merchant ID.
For more information, contact Customer Support.
merchant_ref_
number
Merchant-generated order reference or tracking
number. For more information about tracking
orders, see Getting Started with CyberSource
Advanced for the SCMP API.
Global Payment Service Developer Guide | March 2015
91
Chapter 7
Table 25
Boletos Bancários Using the SCMP API
Request-Level Fields for Boletos Bancários for the SCMP API (Continued)
Request-Level
Field
Description
Required or
Optional
Data Type
& Length
offerN: amount
Per-item price of the product. You must include this
field, the offer0 field, or the request-level field
grand_total_amount in your request. This value
cannot be negative. For more information about
offers and grand totals, see Getting Started with
CyberSource Advanced for the SCMP API.
Optional
Decimal
(15)
Optional
String (18)
You can include a decimal point (.) in this field, but
you cannot include any other special characters.
The amount will be truncated at the request level to
the correct number of decimal places.
personal_id
Personal identifier. For CyberSource Latin
American Processing, you can use this field for the
Cadastro de Pessoas Fisicas (CPF).
Reply Fields
The following table describes the fields returned in a reply from the ics_boleto_payment
service request.
Table 26
Reply Fields for Boletos Bancários for the SCMP API
Reply Field
Description
Data Type
& Length
boleto_payment_amount
Total amount of the Boleto Bancário payment.
Decimal
(15)
boleto_payment_boleto_
number
Boleto Bancário payment number.
String (6)
boleto_payment_expiration_
date
Expiration date of the Boleto Bancário in GMT. On the face of the
Boleto Bancário, the date is in the European format: DD-MM-YYYY.
For this expiration date field, the date is mapped to an ISO format:
YYYY-MM-DD hh:mm:ss.
String (20)
Note There is a space between the date and the time.
boleto_payment_rcode
One-digit code that indicates whether the ics_boleto_payment
request was successful:

-1: An error occurred

0: The request was declined

1: The request was successful
Integer (1)
For more information about handling replies, see Getting Started
with CyberSource Advanced for the SCMP API.
boleto_payment_request_
time
Time of the Boleto Bancário request in UTC. For more information
about the format, see the data type information in Getting Started
with CyberSource Advanced for the SCMP API.
Global Payment Service Developer Guide | March 2015
Date and
time (20)
92
Chapter 7
Table 26
Boletos Bancários Using the SCMP API
Reply Fields for Boletos Bancários for the SCMP API (Continued)
Reply Field
Description
Data Type
& Length
boleto_payment_rflag
One-word description of the result of the ics_boleto_payment
request. See "Reply Flags," page 94, and for more information, see
Getting Started with CyberSource Advanced for the SCMP API.
String (50)
boleto_payment_rmsg
Message that explains the reply flag boleto_payment_rflag. Do
not display this message to the customer and do not use this field
to write an error handler. For more information, see Getting Started
with CyberSource Advanced for the SCMP API.
String (255)
boleto_payment_trans_ref_
no
Unique value generated by CyberSource. For more information,
see Getting Started with CyberSource Advanced for the SCMP API.
String (60)
boleto_payment_url
URL of the Boleto Bancário form.
String (255)
currency
Currency used for the order. The only possible value is BRL.
String (5)
ics_rcode
One-digit code that indicates whether the entire request was
successful:
Integer (1)

-1: An error occurred

0: The request was declined

1: The request was successful
For more information, see Getting Started with CyberSource
Advanced for the SCMP API.
ics_rflag
One-word description of the result of the entire request. See "Reply
Flags," page 94, and for more information, see Getting Started with
CyberSource Advanced for the SCMP API.
String (50)
ics_rmsg
Message that explains the reply flag ics_rflag. Do not display this
message to the customer, and do not use this field to write an error
handler. For more information, see Getting Started with
CyberSource Advanced for the SCMP API.
String (255)
merchant_ref_number
Order reference or tracking number that you provided in the
request. If you included multi-byte characters in this field in the
request, the returned value might contain corrupted characters. For
more information about tracking orders, see Getting Started with
CyberSource Advanced for the SCMP API.
String (50)
request_id
Unique identifier generated by CyberSource for the transaction. For
more information about request IDs, see Getting Started with
CyberSource Advanced for the SCMP API.
String (26)
Global Payment Service Developer Guide | March 2015
93
Chapter 7
Boletos Bancários Using the SCMP API
Reply Flags
The following table describes the reply flags for the ics_boleto_payment service request.
Table 27
Reply Flags for Boletos Bancários for the SCMP API
Reply Flag
Description
DBOLETODECLINED
When CyberSource sent a Boleto Bancário request to CyberSource
Latin American Processing, the processor returned an error to
CyberSource.
DINVALIDDATA
Data provided is not consistent with the request.
DMISSINGFIELD
The request is missing a required field.
ESYSTEM
System error. You must design your transaction management system
to correctly handle CyberSource system errors. Depending on the
payment processor handling the transaction, the error may indicate a
valid CyberSource system error or a processor rejection caused by
invalid data. In either case, CyberSource recommends that you do not
design your system to endlessly retry sending a transaction. For
important information on handling system errors and retries, see the
SDK for your CyberSource client.
ETIMEOUT
The request timed out.
SOK
The transaction was successful.
Global Payment Service Developer Guide | March 2015
94
Chapter 7
Boletos Bancários Using the SCMP API
Request and Reply Examples
Request
Example 31
Boleto Bancário Request
bill_city=Louisville
bill_country=BRA
currency=BRL
customer_firstname=Joe
customer_lastname=Doe
ics_applications=ics_boleto_payment
merchant_id=philpot2
merchant_ref_number=1234567
offer0=product_code:electronic_software^merchant_product_
sku:testdl^quantity:1^amount:1.18^tax_amount:0.00^product_name:Clorox
Wipes^offer_id:0
boleto_payment_instruction=my test
boleto_payment_expiration_date=2008-11-22
personal_id=1111
Reply
Example 32
Boleto Bancário Reply
boleto_payment_url=https://www.pagador.com.br/pagador/reenvia.asp?Id_
Transacao=93b5668a-6129-48d5-ad95-76308d997479
ics_rcode=1
ics_rmsg=Request was processed successfully.
request_id=2259925521130170394179
boleto_payment_rcode=1
boleto_payment_boleto_number=100000
boleto_payment_rmsg=Request was processed successfully.
boleto_payment_trans_ref_no=10992551
ics_rflag=SOK
boleto_payment_rflag=SOK
merchant_ref_number=1654291
boleto_payment_expiration_date=2008-11-22 23:59:59
Global Payment Service Developer Guide | March 2015
95
CHAPTER
Reports for Boletos
Bancários
8
Boleto Bancário Unfulfilled Report
The Boleto Bancário Unfulfilled Report provides information about Boleto Bancário
transactions that have been issued but not fulfilled. The reasons for an unfulfilled Boleto
Bancário are:

The customer has not submitted the Boleto Bancário.

The Boleto Bancário is still in the Brazilian clearing system.
A transaction continues to be included in the Boleto Bancário Unfulfilled Report every day
until:

CyberSource Latin American Processing confirms that the transaction has been
funded.

The Boleto Bancário expires.
To view the Boleto Bancário Unfulfilled Report, you must subscribe to it on the Business
Center.
Viewing and Downloading Reports
There are two ways to view and download Boleto Bancário Unfulfilled reports:

Through an API
See the first chapter in the Reporting Developer Guide, which is available at the
Support Center, for information about requesting a report with a client application.

On the CyberSource Business Center
For information about downloading the Boleto Bancário Unfulfilled Report from the
Business Center, see the Business Center help topic “Downloading Detail Reports”.
Global Payment Service Developer Guide | March 2015
96
Chapter 8
Reports for Boletos Bancários
To view and download reports:
Step 1
Navigate to the Boleto Bancário Unfulfilled Report.
Step 2
Click I need help with this page.
A help topic for the Boleto Bancário Unfulfilled Report opens.
Step 3
In the help topic, click Downloading Reports.
The “Downloading Detail Reports” topic opens. The Boleto Bancário Unfulfilled Report is a
detail report, and you can download it the same way that you download other reports.
For additional information, see the first chapter in the Reporting Developer Guide, which is
available at the Support Center.
XML Conventions and Data Types
Syntax for Report Declarations
A report declaration has this syntax:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Report SYSTEM URIreference>
<Report Name=CDATA
Version=NMTOKEN
xmlns=CDATA
MerchantID=CDATA
ReportDate=CDATA>
The value of the URIreference tag is the same as the value of the xmlns tag. Whether
you are operating in test or live mode, the namespace always refers to ebctest instead
of ebc.
Global Payment Service Developer Guide | March 2015
97
Chapter 8
Reports for Boletos Bancários
Syntax for Element Declarations
An element declaration has this syntax:
<Sample Attribute=CDATA>
(Element)
(ChoiceOne) | (ChoiceTwo)
(ComplexElement)
(RequiredRecurringElement)+
(OptionalElement)?
(OptionalRecurringElement)*
</Sample>
The DTDs for the reports can use syntax with the ?, +, or * character inside the
parentheses.
Table 28
Conventions for Element Declarations
Convention
Description
<Sample>
Parent of the subsequent elements.
Attribute=CDATA
Name of the attribute followed by the XML data format for
the attribute.
(Element)
Required element. Must appear only once.
(ChoiceOne) | (ChoiceTwo)
Element <ChoiceOne> or <ChoiceTwo> but not both.
(ComplexElement)
Element with one or more children.
(RequiredRecurringElement)+
Required element. Can appear one or more times.
(OptionalElement)?
Optional element. Can appear once or be omitted.
(OptionalRecurringElement)*
Optional element. Can appear zero or more times.
Data Types and Lengths
In each description, the data length indicates the maximum length for that data type.
Table 29
Data Types for XML Reports
Data Type
Description
Alphanumeric
String containing letters, numbers, and special characters such as @, #, and %.
All text uses UTF-8 character encoding.
Boolean
Single character: T for true or F for false.
Amount
Can include a decimal point.
Date
YYYY-MM-DD where:

YYYY is the four-digit year

MM is the two-digit month

DD is the two-digit day
The hyphens are included in a Date value.
Global Payment Service Developer Guide | March 2015
98
Chapter 8
Table 29
Reports for Boletos Bancários
Data Types for XML Reports (Continued)
Data Type
Description
DateTime
YYYY-MM-DDTHH:MM:SS[+ | -]HH:MM where:

YYYY is the four-digit year

MM is the two-digit month

DD is the two-digit day

T separates the date information from the time information

HH is the two-digit hours

MM is the two-digit minutes

SS is the two-digit seconds

[+ | -]HH:MM is the time zone’s offset from GMT (Greenwich Mean Time)
The hyphens are included in a DateTime value.
Numeric
String containing numbers.
Elements in the Report
<Report>
The <Report> element is the root of the report.
Syntax
<?xml version="1.0" encoding="utf-8" ?>
<Report Name=CDATA
Version=CDATA
xmlns=CDATA
MerchantID=CDATA
ReportDate=CDATA>
(Summary)
(TransactionDetail)?
</Report>
Global Payment Service Developer Guide | March 2015
99
Chapter 8
Reports for Boletos Bancários
Attributes
Table 30
Attributes of <Report> in the Boleto Bancário Unfulfilled Report
Attribute Name
Description
Data Type &
Length
Name
Name of the report. This value is always Boleto
Bancário Unfulfilled Report.
Alphanumeric (100)
Version
Version number of the report.
Numeric (10)
xmlns
XML namespace for the report. This value is
always https://ebc.cybersource.com/
ebc/reports/dtd/bbur.dtd.
Alphanumeric (100)
MerchantID
CyberSource merchant ID.
Alphanumeric (30)
ReportDate
Date the report was generated.
DateTime (25)
Child Elements
Table 31
Child Elements of <Report> in the Boleto Bancário Unfulfilled Report
Element Name
Description
<Summary>
Summary of the transaction information for each range. See
"<Summary>," page 101.
<TransactionDetail>
Information about all of the unfunded transactions that have occurred
during the previous 3 to 180 days. See "<TransactionDetail>,"
page 104.
Example
Example 33
<Report> Element
<?xml version="1.0" encoding="utf-8" ?>
<Report Name="BoletoBancarioUnfulfilledReport"
Version="1.0"
xmlns=https://ebc.cybersource.com/ebc/reports/dtd/bbur.dtd
MerchantID="exampleMerchant"
ReportDate="2008-01-24T08:00:00-08:00">
<Summary>
...
</Summary>
<TransactionDetail>
...
</TransactionDetail>
</Report>
Global Payment Service Developer Guide | March 2015
100
Chapter 8
Reports for Boletos Bancários
<Summary>
The <Summary> element contains a summary of the transaction information for each
range:

3 days outstanding

4 days outstanding

5 to 7 days outstanding

8 to 14 days outstanding

15 to 30 days outstanding

31 to 60 days outstanding

61 to 90 days outstanding

91 to 180 days outstanding

3 to 180 days outstanding
Syntax
<Summary>
(Range)*
</Summary>
Child Element
Table 32
Child Element of <Summary> in the Boleto Bancário Unfulfilled Report
Element Name
Description
<Range>
Summary of the transaction information for one range. See
"<Range>," page 103.
Example
Example 34
<Summary> Element
<Summary>
<Range DaysOutstandingStart="3"
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="3"
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="4"
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="4"
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
DaysOutstandingEnd="3" CurrencyCode="BRL">
DaysOutstandingEnd="3" CurrencyCode="USD">
DaysOutstandingEnd="4" CurrencyCode="BRL">
DaysOutstandingEnd="4" CurrencyCode="USD">
Global Payment Service Developer Guide | March 2015
101
Chapter 8
Example 34
Reports for Boletos Bancários
<Summary> Element (Continued)
<Range DaysOutstandingStart="5" DaysOutstandingEnd=" 7" CurrencyCode="BRL">
<Count>2</Count>
<NetAmount>121.38</NetAmount>
</Range>
<Range DaysOutstandingStart="5" DaysOutstandingEnd=" 7" CurrencyCode="USD">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="8" DaysOutstandingEnd="14" CurrencyCode="BRL">
<Count>8</Count>
<NetAmount>823.40</NetAmount>
</Range>
<Range DaysOutstandingStart="8" DaysOutstandingEnd="14" CurrencyCode="USD">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="15" DaysOutstandingEnd="30" CurrencyCode="BRL">
<Count>21</Count>
<NetAmount>2030.11</NetAmount>
</Range>
<Range DaysOutstandingStart="15" DaysOutstandingEnd="30" CurrencyCode="USD">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="31" DaysOutstandingEnd="60" CurrencyCode="BRL">
<Count>7</Count>
<NetAmount>777.17</NetAmount>
</Range>
<Range DaysOutstandingStart="31" DaysOutstandingEnd="60" CurrencyCode="USD">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="61" DaysOutstandingEnd="90" CurrencyCode="BRL">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="61" DaysOutstandingEnd="90" CurrencyCode="USD">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="91 DaysOutstandingEnd="180" CurrencyCode="BRL">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="91 DaysOutstandingEnd="180" CurrencyCode="USD">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
Global Payment Service Developer Guide | March 2015
102
Chapter 8
Example 34
Reports for Boletos Bancários
<Summary> Element (Continued)
<Range DaysOutstandingStart="3" DaysOutstandingEnd="180" CurrencyCode="BRL">
<Count>38</Count>
<NetAmount>3752.06</NetAmount>
</Range>
<Range DaysOutstandingStart="3" DaysOutstandingEnd="180" CurrencyCode="USD">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
</Summary>
<Range>
The <Range> element contains a summary of the transaction information for one currency
in one range.
Syntax
<Range DaysOutstandingStart=CDATA
DaysOutstandingEnd=CDATA
CurrencyCode=CDATA>
(Count)
(NetAmount)
</Range>
Table 33
Attributes of <Range> in the Boleto Bancário Unfulfilled Report
Attribute Name
Description
Data Type &
Length
DaysOutstandingStart
Start of the range of the number of days
outstanding. For example, for the range of 5
to 7 days outstanding, the start of the range is
5.
Alphanumeric (4)
DaysOutstandingEnd
End of the range of the number of days
outstanding. For example, for the range of 5
to 7 days outstanding, the end of the range is
7.
Alphanumeric (4)
CurrencyCode
Currency code. Possible value:
Alphanumeric (5)

BRL
Global Payment Service Developer Guide | March 2015
103
Chapter 8
Reports for Boletos Bancários
Child Elements
Table 34
Child Elements of <Range> in the Boleto Bancário Unfulfilled Report
Element Name
Description
Count
Number of transactions that await funding in the currency specified
by CurrencyCode and in the range specified by
DaysOutstandingStart and DaysOutstandingEnd.
NetAmount
Sum of transactions that await funding in the currency specified by
CurrencyCode and in the range specified by
DaysOutstandingStart and DaysOutstandingEnd.
Example
Example 35
<Range> Element
<Range DaysOutstandingStart="3" DaysOutstandingEnd="3" CurrencyCode="CNY">
<Count>2</Count>
<NetAmount>121.38</NetAmount>
</Range>
<TransactionDetail>
The <TransactionDetail> element contains information about all of the unfunded
transactions that have occurred during the previous 3 to 180 days.
Syntax
<TransactionDetail>
(Transaction)*
</TransactionDetail>
Child Elements
Table 35
Child Element of <TransactionDetail> in the Boleto Bancário
Unfulfilled Report
Element Name
Description
<Transaction>
Information about an unfunded transaction. See "<Transaction>,"
page 105.
Global Payment Service Developer Guide | March 2015
104
Chapter 8
Reports for Boletos Bancários
Example
Example 36
<TransactionDetail> Element
<TransactionDetail>
<Transaction>
...
</Transaction>
</TransactionDetail>
<Transaction>
The <Transaction> element contains information about an unfunded transaction.
Syntax
<Transaction Processor=CDATA
DaysOutstanding=CDATA
MerchantID=CDATA
OriginalTransactionDate=CDATA
RequestID=CDATA
TransactionReferenceNumber=CDATA
MerchantReferenceNumber=CDATA
Amount=CDATA
CurrencyCode=CDATA
EventType=CDATA
BoletoNumber=CDATA
</Transaction>
Table 36
Attributes of <Transaction> in the Boleto Bancário
Unfulfilled Report
Attribute Name
Description
Data Type &
Length
Processor
Payment processor used for the
transaction. This value is always
Alphanumeric (40)
brazilboleto: braspag.
DaysOutstanding
Number of days since the transaction was
initiated.
Alphanumeric (4)
MerchantID
CyberSource merchant ID.
Alphanumeric (30)
OriginalTransactionDate
Date that the original payment transaction
was initiated.
DateTime (25)
RequestID
Unique identifier generated by
CyberSource for the transaction. For more
information about request IDs, see Getting
Started with CyberSource Advanced for the
Simple Order API or Getting Started with
CyberSource Advanced for the SCMP API.
Numeric (26)
Global Payment Service Developer Guide | March 2015
105
Chapter 8
Table 36
Reports for Boletos Bancários
Attributes of <Transaction> in the Boleto Bancário
Unfulfilled Report (Continued)
Attribute Name
Description
Data Type &
Length
TransactionReference
Number
CyberSource-generated reference or
tracking number for the transaction. You
can use this value to reconcile your
CyberSource reports with your processor
reports. This value corresponds to:
Alphanumeric (60)

<service>_reconciliationID for the
Simple Order API.

<service>_trans_ref_no for the SCMP
API.
For more information about tracking orders,
see Getting Started with CyberSource
Advanced for the Simple Order API or
Getting Started with CyberSource
Advanced for the SCMP API.
MerchantReference
Number
Merchant-generated reference or tracking
number for the transaction. You can use
this value to perform searches in the
CyberSource Business Center. This value
corresponds to:

merchantReferenceCode for the
Simple Order API.

merchant_ref_number for the SCMP
API.
Alphanumeric (50)
See the information about tracking orders,
see Getting Started with CyberSource
Advanced for the Simple Order API or
Getting Started with CyberSource
Advanced for the SCMP API.
Amount
Amount of the transaction. For refunds, the
amount is negative.
Amount (19)
CurrencyCode
Currency code used for the transaction.
Possible value:
Alphanumeric (5)

Global Payment Service Developer Guide | March 2015
BRL
106
Chapter 8
Table 36
Reports for Boletos Bancários
Attributes of <Transaction> in the Boleto Bancário
Unfulfilled Report (Continued)
Attribute Name
Description
Data Type &
Length
EventType
Type of event that occurred for the
transaction. Possible values:
Alphanumeric (20)
BoletoNumber

Expired: The Boleto Bancário has
expired and will not be accepted for
payment by Brazilian financial
institutions.

Fulfilled: The bank issuing the Boleto
Bancário has received funds and
deposited them into your account.

Pending Fulfillment: The Boleto Bancário
was issued, but the customer has not
submitted it yet, or it is still in the
Brazilian clearing system.
The number identifying the Boleto Bancário
payment involved in the transaction.
Alphanumeric (15)
Example
Example 37
<Transaction> Element
<Transaction Processor="brazilboleto"
DaysOutstanding="3"
MerchantID="123456789"
OriginalTransactionDate="2009-01-11T10:45:00-08:00"
RequestID="912342343468"
TransactionReferenceNumber="123456"
MerchantReferenceNumber="2884554"
Amount="75,00"
CurrencyCode="BRL"
EventType="Fulfilled"
BoletoNumber="987654">
</Transaction>
Global Payment Service Developer Guide | March 2015
107
Chapter 8
Reports for Boletos Bancários
DTD
<!ELEMENT Report (Summary, TransactionDetail)>
<!ATTLIST Report Name CDATA #REQUIRED
Version NMTOKEN #REQUIRED
xmlns CDATA #REQUIRED
MerchantID CDATA #REQUIRED
ReportDate CDATA #REQUIRED>
<!ELEMENT Summary (Range*)>
<!ELEMENT Range (Count, NetAmount)>
<!ATTLIST Range DaysOutStandingStart CDATA #REQUIRED
DaysOutStandingEnd CDATA #REQUIRED
CurrencyCode CDATA #REQUIRED>
<!ELEMENT Count (#PCDATA)>
<!ELEMENT NetAmount (#PCDATA)>
<!ELEMENT TransactionDetail (Transaction*)>
<!ELEMENT Transaction EMPTY>
<!ATTLIST Transaction Processor CDATA #REQUIRED
DaysOutstanding CDATA #REQUIRED
MerchantID CDATA #REQUIRED
OriginalTransactionDate CDATA #REQUIRED
RequestID CDATA #REQUIRED
TransactionReferenceNumber CDATA #REQUIRED
MerchantReferenceNumber CDATA #REQUIRED
Amount CDATA #REQUIRED
CurrencyCode CDATA #REQUIRED
EventType CDATA #REQUIRED
BoletoNumber CDATA #REQUIRED>
Global Payment Service Developer Guide | March 2015
108
Chapter 8
Reports for Boletos Bancários
Example
This report example consists of the following unfulfilled transactions:

One payment totalling 1.20 BRL, 3 days outstanding

Five payments totalling 6.00 BRL, 5-7 days outstanding

Six payments totalling 7.20 BRL, 3-180 days outstanding
These transactions are included in the following ranges in the <Summary> section:

3 days outstanding

5 to 7 days outstanding

3 to 14 days outstanding
Example 38
Unfulfilled Transactions
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Report SYSTEM "https://ebctest.cybersource.com/ebctest/reports/
dtd/bbur.dtd">
<Report Name="BoletoBancarioUnfulfilledReport"
Version="1.0"
xmlns="https://ebctest.cybersource.com/ebctest/reports/dtd/bbur.dtd"
MerchantID="examplemerchant"
ReportDate="2008-01-24T08:00:00-08:00">
<Summary>
<Range DaysOutstandingStart="3"
DaysOutstandingEnd="3"
CurrencyCode="BRL">
<Count>1</Count>
<NetAmount>1.20</NetAmount>
</Range>
<Range DaysOutstandingStart="4"
DaysOutstandingEnd="4"
CurrencyCode="BRL">
<Count>0</Count>
<NetAmount>0.00</NetAmount>
</Range>
<Range DaysOutstandingStart="5"
DaysOutstandingEnd="7"
CurrencyCode="BRL">
<Count>5</Count>
<NetAmount>6.00</NetAmount>
</Range>
<Range DaysOutstandingStart="8"
DaysOutstandingEnd="14"
CurrencyCode="BRL">
<Count>6</Count>
<NetAmount>7.20</NetAmount>
Global Payment Service Developer Guide | March 2015
109
Chapter 8
Reports for Boletos Bancários
</Range>
</Summary>
<TransactionDetail>
<Transaction Processor="brazilboleto"
DaysOutstanding="3"
MerchantID="examplemerchant"
OriginalTransactionDate="2008-01-22T00:14:40-08:00"
RequestID="2009608779023232235878"
TransactionReferenceNumber="20080122_1684_608779023232235878"
MerchantReferenceNumber="1234567890"
Amount="1.20"
CurrencyCode="BRL"
EventType="Pending Fulfillment"
BoletoNumber="321654851"/>
<Transaction Processor="brazilboleto"
DaysOutstanding="5"
MerchantID="examplemerchant"
OriginalTransactionDate="2008-01-20T02:38:24-08:00"
RequestID="2007967037043232235878"
TransactionReferenceNumber="20080120_1684_967037043232235878"
MerchantReferenceNumber="1234567891"
Amount="1.20"
CurrencyCode="BRL"
EventType="Pending Fulfillment"
BoletoNumber="321564133"/>
<Transaction Processor="brazilboleto"
DaysOutstanding="5"
MerchantID="examplemerchant"
OriginalTransactionDate="2008-01-20T02:38:24-08:00"
RequestID="2007967037043232235878"
TransactionReferenceNumber="20080120_1684_967037043232235878"
MerchantReferenceNumber="1234567892"
Amount="1.20"
CurrencyCode="BRL"
EventType="Pending Fulfillment"
BoletoNumber="854523221"/>
<Transaction Processor="brazilboleto"
DaysOutstanding="6"
MerchantID="examplemerchant"
OriginalTransactionDate="2008-01-20T02:38:24-08:00"
RequestID="2007967037043232235878"
TransactionReferenceNumber="20080120_1684_967037043232235878"
MerchantReferenceNumber="1234567893"
Amount="1.20"
CurrencyCode="BRL"
EventType="Pending Fulfillment"
BoletoNumber="255587512"/>
<Transaction Processor="brazilboleto"
DaysOutstanding="7"
MerchantID="examplemerchant"
OriginalTransactionDate="2008-01-20T02:38:24-08:00"
RequestID="2007967037043232235878"
TransactionReferenceNumber="20080120_1684_967037043232235878"
Global Payment Service Developer Guide | March 2015
110
Chapter 8
Reports for Boletos Bancários
MerchantReferenceNumber="1234567894"
Amount="1.20"
CurrencyCode="BRL"
EventType="Pending Fulfillment"
BoletoNumber="265845654"/>
<Transaction Processor="brazilboleto"
DaysOutstanding="7"
MerchantID="examplemerchant"
OriginalTransactionDate="2008-01-20T02:38:24-08:00"
RequestID="2007967037043232235878"
TransactionReferenceNumber="20080120_1684_967037043232235878"
MerchantReferenceNumber="1234567895"
Amount="1.20"
CurrencyCode="BRL"
EventType="Pending Fulfillment"
BoletoNumber="652325456"/>
</TransactionDetail>
</Report>
Global Payment Service Developer Guide | March 2015
111
Chapter 8
Reports for Boletos Bancários
Single Transaction Report
Version 1.4 of the Single Transaction Report is supported for Boletos Bancários. It is
described in the Reporting Developer Guide. The On-Demand Single Transaction Report
provides you with the status of the transaction while the transaction is occurring.
Example 39
Query for a Single Transaction
<form action="https://ebc.cybersource.com/ebc/Query" method="POST">
<table>
<tr>
<td>merchantID</td>
<td><input type="text" name="merchantID" value="nwtest1"></td>
</tr>
<tr>
<td>type</td>
<td><input type="text" name="type" value="transaction"></td>
</tr>
<tr>
<td>subtype</td>
<td><input type="text" name="subtype" value="transactionDetail"></td>
</tr>
<tr>
<td>requestID</td>
<td><input type="text" name="requestID" value="1999370597170167905049"></td>
</tr>
<tr>
<td>versionNumber</td>
<td><input type="text" name="versionNumber" value="1.4"></td>
</tr>
<tr>
<td></td>
<td><input type="reset">
<input type="submit" value="Submit"></input></td>
</tr>
</table>
</form>
Global Payment Service Developer Guide | March 2015
112
Chapter 8
Example 40
Reports for Boletos Bancários
Single Transaction Report
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Report (View Source for full doctype...)>
<Report xmlns="https://ebctest.cybersource.com/ebctest/reports/dtd/tdr_1_4.dtd"
Name="Transaction Detail"
Version="1.4"
MerchantID="nwtest1"
ReportStartDate="2008-01-09T19:50:59-08:00"
ReportEndDate="2008-01-09T19:50:59-08:00">
<Requests>
<Request MerchantReferenceNumber="1234567890"
RequestDate="2008-09-10T14:00:08-08:00"
RequestID="1999370597170167905049"
SubscriptionID=""
Source="SCMP API"
TransactionReferenceNumber="0001094522"
PredecessorRequestID=”7904567221330010160804”>
<BillTo>
<FirstName>Jane</FirstName>
<LastName>Smith</LastName>
<Address1>1295 Charleston Road</Address1>
<Address2>Suite 2</Address2>
<City>Mountain View</City>
<State>CA</State>
<Zip>94043</Zip>
<Email />
<Country>US</Country>
</BillTo>
<ShipTo>
<LastName>Smith</LastName>
<Address1>1295 Charleston Road</Address1>
<Address2>Suite 2</Address2>
<City>Mountain View</City>
<State>CA</State>
<Zip>94043</Zip>
<Country>US</Country>
</ShipTo>
<PaymentMethod>
<Card>
<AccountSuffix />
<ExpirationMonth />
<ExpirationYear />
<CardType>Brazil Bank Transfer</CardType>
<BoletoNumber>12345</BoletoNumber>
</Card>
</PaymentMethod>
Global Payment Service Developer Guide | March 2015
113
Chapter 8
Example 40
Reports for Boletos Bancários
Single Transaction Report (Continued)
<LineItems>
<LineItem Number="0">
<FulfillmentType />
<Quantity>1</Quantity>
<UnitPrice>1.56</UnitPrice>
<TaxAmount>0.25</TaxAmount>
<MerchantProductSKU>testdl</MerchantProductSKU>
<ProductName>PName1</ProductName>
<ProductCode>electronic_software</ProductCode>
</LineItem>
</LineItems>
<ApplicationReplies>
<ApplicationReply Name="ics_boleto_payment">
<RCode>1</RCode>
<RFlag>SOK</RFlag>
<RMsg>Request was processed successfully.</RMsg>
</ApplicationReply>
</ApplicationReplies>
<PaymentData>
<PaymentProcessor>payeasecn</PaymentProcessor>
<Amount>1.81</Amount>
<CurrencyCode>BRL</CurrencyCode>
<TotalTaxAmount>0.25</TotalTaxAmount>
<EventType>Fulfilled</EventType>
<NumberOfInstallments>5</NumberOfInstallments>
</PaymentData>
</Request>
</Requests>
</Report>
Global Payment Service Developer Guide | March 2015
114
CHAPTER
Direct Debits and Direct
Debit Refunds Using the
Simple Order API
Important
9
Our processing partner requires us to pre-populate their fields to show that the
mandate has been signed and dated. The MANDATEDATE field is populated
with the system date, the MANDATEPLACE field is populated with the
customer city, and the MANDATESIGNED indicator is set to 1. These fields are
for future use and will support e-mandates.
Requesting Direct Debits
Important
Note
From August 1, 2016, for euro countries and from October 31, 2016, for noneuro countries, the IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN; this conversion process will continue only
until August 1, 2016.
The bank SWIFT code, a unique address of the bank, does not have to be
included in each request; however, CyberSource strongly recommends
including this code in the request when the IBAN is included in the request.
To request a direct debit, set the directDebitService_run field to true. See Table 37,
page 118, for the fields to use when requesting the service. For an example Direct Debit
request, see page 128.
When requesting a direct debit, you may not request any of the other ICS services except
Tax Calculation. For more information about the service, see Tax Calculation Service
Using the Simple Order API.
When you take an order that uses a direct debit, you must gather the customer’s billing
and bank account information. For most countries, CyberSource accepts either the
traditional bank account information or the account’s IBAN. The traditional bank account
information and the corresponding API fields you need to provide vary by country. Contact
CyberSource Customer Support for required country-specific bank account information.
Global Payment Service Developer Guide | March 2015
115
Chapter 9
Direct Debits and Direct Debit Refunds Using the Simple Order API
CyberSource validates the format of the bank account number before processing the
direct debit. If the account number does not pass the validation check, CyberSource
rejects the request with a reasonCode=244. CyberSource recommends that you then
confirm the customer entered the number correctly, and if it was incorrect, request the
refund again with the correct number.
Requesting Direct Debit Refunds
Important
From August 1, 2016, for euro countries and from October 31, 2016, for noneuro countries, the IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN; this conversion process will continue only
until August 1, 2016.
There are two types of direct debit refunds: follow-on refunds and stand-alone refunds. A
follow-on refund uses information from a previous direct debit. A stand-alone refund does
not depend on a previous transaction.
A follow-on refund must occur within 60 of the request for the direct debit. When the time
limit for a follow-on refund expires, the only kind of refund you can perform is a standalone refund.
To request a direct debit refund:

Set the directDebitRefundService_run field to true.

Do not request any other ICS services except Tax Calculation, which is optional. For
more information about this service, see Tax Calculation Service Using the Simple
Order API.

Send the fields required for a direct debit refund request as described in Table 37,
page 118. For a follow-on refund, the fields and values must match the fields and
values you sent in the original direct debit request.

For a stand-alone refund, the directDebitRefundService_directDebitRequestID
field is optional. See page 129.

For a follow-on refund, include the directDebitRefundService_
directDebitRequestID field with the request ID from the direct debit reply is required.
See page 130.

The easiest way to implement direct debit refunds is to always send the request ID
from the original direct debit with every direct debit refund request.

CyberSource recommends that when you request a refund, you use the same value
for merchantReferenceCode that you used for the direct debit. This makes it easier
Global Payment Service Developer Guide | March 2015
116
Chapter 9
Direct Debits and Direct Debit Refunds Using the Simple Order API
for you to link the refund to the original direct debit in your own system as well as in
CyberSource reports and Transaction Search Screens.
CyberSource performs basic checks on the format of the bank account number before
processing the direct debit refund. If the account number does not pass the validation
check, CyberSource rejects the request with a reasonCode=244. CyberSource
recommends that you then confirm the customer entered the number correctly, and if it
was incorrect, request the refund again with the correct number.
You may perform multiple partial refunds against a direct debit. The sum of the refunds
may not exceed the amount of the payment.
You will not receive an error in the reply for any of the following conditions:

The directDebitRefundService_requestID field is invalid.

The customer’s payment has not yet been received.
Instead, CyberSource will not process the refund and the transaction will appear in the
daily Transaction Exception Detail Report. You should monitor this report daily to
determine if any of your transactions have problems. For descriptions of the reason codes
that can appear in the report, see "Reason Codes," page 155. For more information about
the report, see the Global Payment Service Planning Guide. For details about
downloading the report and its format, see the Reporting Developer Guide.
Global Payment Service Developer Guide | March 2015
117
Chapter 9
Direct Debits and Direct Debit Refunds Using the Simple Order API
API Fields
For information about the data types, see Getting Started with CyberSource Advanced for
the Simple Order API.
Request Fields
The following table lists the fields to use in a request for the directDebitService service or
the directDebitRefundService service.
Table 37
Request Fields for Direct Debits and Direct Debit Refunds
for the Simple Order API
Request Field
Description
Required (R)
or Optional
(O)
Data Type &
Length
bankInfo_address
Bank’s address.
Direct Debit (O)
String (255)
Refund (O)
bankInfo_bankCode
bankInfo_branchCode
bankInfo_city
bankInfo_country
bankInfo_name
Bank's code. Used for some countries
when you are not using the IBAN. Contact
CyberSource Customer Support for
required country-specific bank account
information.
Direct Debit (See
description)
Code that identifies the branch of the
customer's bank when you are not using
the IBAN. Contact CyberSource Customer
Support for required country-specific bank
account information.
Direct Debit (See
description)
City in which the bank is located. If you do
not send this field, Global Collect assumes
that the billTo_city field contains the bank
name. Some banks validate the bank
account information, so consider sending
this field if the bank is not located in billTo_
city.
Direct Debit (See
description)
Country in which the bank is located.
Possible values are the two-character ISO
Standard Country Codes.
Direct Debit (R)
Bank's name. Required when using the
Global Collect processor to make one of
the following types of direct debit
transactions:
Direct Debit (See
description)

Direct debit

Stand-alone direct debit refund
String (See
description)
Refund (See
description)
String (15)
Refund (See
description)
String (35)
Refund (See
description)
String (2)
Refund (R)
String (40)
Refund (See
description)
Otherwise it is optional.
Global Payment Service Developer Guide | March 2015
118
Chapter 9
Table 37
Direct Debits and Direct Debit Refunds Using the Simple Order API
Request Fields for Direct Debits and Direct Debit Refunds
for the Simple Order API (Continued)
Request Field
Description
Required (R)
or Optional
(O)
Data Type &
Length
bankInfo_swiftCode
Bank’s SWIFT code. Unique address of the
bank. Also known as the Bank
Identification Code (BIC).
Direct Debit (O)
String (30)
Refund (O)
Note This field is optional; however,
CyberSource strongly recommends
including this code in each request when
the IBAN is included in the request.
billTo_city
City for the billing address.
Direct Debit (R)
String (50)
Refund (R)
billTo_country
billTo_email
billTo_firstName
Country for the billing address. Possible
values are the two-character ISO Standard
Country Codes.
Direct Debit (R)
Customer’s email address, including the
full domain name. For example,
[email protected].
Direct Debit (R)
Customer’s first name.
Direct Debit (R)
String (2)
Refund (R)
String (255)
Refund (R)
String (60)
Refund (R)
billTo_lastName
Customer’s last name.
Direct Debit (R)
String (60)
Refund (R)
billTo_phoneNumber
Customer’s telephone number.
Direct Debit (O)
String (15)
Refund (O)
billTo_postalCode
Postal code for the billing address. The
postal code must consist of 5 to 9 digits.
If the value of billTo_country is US, the 9digit postal code must follow this format:
[5 digits][dash][4 digits]
Example: 12345-6789
Direct Debit (R if
billTo_country
is US or CA)
String (10)
Refund (R if
billTo_country
is US or CA)
If the value of billTo_country is CA, the 6digit postal code must follow this format:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C3
billTo_state
billTo_street1
State for the billing address. Required if
billTo_country is US or CA. Otherwise
optional. Possible values are the State,
Province, and Territory Codes for the
United States and Canada.
Direct Debit (See
description)
Street address for the billing address.
Direct Debit (R)
String (2)
Refund (See
description)
String (60)
Refund (R)
Global Payment Service Developer Guide | March 2015
119
Chapter 9
Table 37
Direct Debits and Direct Debit Refunds Using the Simple Order API
Request Fields for Direct Debits and Direct Debit Refunds
for the Simple Order API (Continued)
Request Field
Description
Required (R)
or Optional
(O)
Data Type &
Length
billTo_street2
Additional street address information for
the billing address.
Direct Debit (O)
String (60)
directDebitRefundService_
directDebitRequestID
The requestID value returned from a
previous request for directDebitService.
Refund (R for
follow-on
refunds. Not
used for standalone refunds.)
String (26)
directDebitRefundService_
reconciliationID
To use this field, contact CyberSource
Customer Support.
Refund (R)
String (60)
directDebitRefundService_run
Flag indicating whether or not to include
the directDebitRefundService service in
your request. Possible values:
Refund (R)
String (5)

true: Include the service in your request

false (default): Do not include the
service in your request
Refund (O)
directDebitService_
dateCollect
Date on which the direct debit should be
debited. This field is only for the Global
Collect processor. Format: YYYYMMDD
Direct Debit (O)
Numeric (8)
directDebitService_
directDebitText
Text describing the reason for the direct
debit. This field is required only for the
Global Collect processor. Appears on the
customer’s bank statement.
Direct Debit (See
description)
String (See
description)
Direct Debit (See
description)
String (3)
Direct Debit (O)
Numeric (8)
Austria: Max 28 characters
Germany: Max 50 characters
Netherlands: Max 32 characters
Spain: Max 40 characters
directDebitService_
directDebitType
directDebitService_mandate
AuthenticationDate
Type of direct debit. This field is required
only for the Global Collect processor. The
possible values are:

001: Austria

003: Netherlands

004: Spain

005: German ELV direct debit
The date the direct debit mandate was
authenticated. Format: YYYYMMDD
Global Payment Service Developer Guide | March 2015
120
Chapter 9
Table 37
Direct Debits and Direct Debit Refunds Using the Simple Order API
Request Fields for Direct Debits and Direct Debit Refunds
for the Simple Order API (Continued)
Request Field
Description
Required (R)
or Optional
(O)
Data Type &
Length
directDebitService_
recurringType
Whether the direct debit is the first or last
direct debit associated with the mandate,
or one in between. This field is only for the
United Kingdom. The possible values are:
Direct Debit (See
description)
String (3)
Direct Debit (R)
String (5)
Direct Debit (See
description)
String (2)
Direct Debit (R)
String (30)
directDebitService_run
directDebitService_
transactionType

001: First direct debit associated with
this mandate. Use this value for a onetime direct debit.

002: Subsequent direct debits
associated with this mandate.

003: Last direct debit associated with
this mandate.
Flag indicating whether or not to include
the directDebitService service in your
request. Possible values:

true: Include the service in your request

false (default): Do not include the
service in your request
Type of direct debit transaction. This field is
required only for the Netherlands when
using the Global Collect processor. The
possible values are:

01: First collection using this account

02: Other
Note For first collections on a Post giro
account called onzuivere posten, the
account number is verified against the
account name and city by the Post bank.
This verification requires one additional
processing day.
fundTransfer_accountName
Name used on the bank account.
Refund (R)
Global Payment Service Developer Guide | March 2015
121
Chapter 9
Table 37
Direct Debits and Direct Debit Refunds Using the Simple Order API
Request Fields for Direct Debits and Direct Debit Refunds
for the Simple Order API (Continued)
Request Field
Description
Required (R)
or Optional
(O)
Data Type &
Length
fundTransfer_accountNumber
Bank account number.
Direct Debit (See
description)
String (See
description)
Note From August 1, 2016, for euro
countries and from October 31, 2016, for
non-euro countries, the IBAN must be
included in each request. If you provide a
BBAN it will be converted to an IBAN, and
this conversion process will continue only
until August 1, 2016.
Refund (See
description)
Note Do not use the IBAN in this field.
include the IBAN in the fundTransfer_
iban field.
fundTransfer_bankCheckDigit
Code used to validate the customer's
account number when you are not using
the IBAN. Contact CyberSource Customer
Support for required country-specific bank
account information.
Direct Debit (See
description)
String (2)
fundTransfer_iban
International Bank Account Number (IBAN)
for the bank account.
Direct Debit (See
description)
Alphanumeric
(50)
Direct Debit (O)
String (30)
Note From August 1, 2016, for euro
countries and from October 31, 2016, for
non-euro countries, the IBAN must be
included in each request. If you provide a
BBAN it will be converted to an IBAN, and
this conversion process will continue only
until August 1, 2016.
item_#_productCode
Type of product. This value is also used to
determine the category that the product
falls under: electronic, handling, physical,
service, or shipping. The default value is
default. See "Product Codes,"
page 154, for a list of valid values.
Refund (O)
For direct debits, if you set this field to a
value other than default, stored_
value, or any of the values related to
shipping or handling, the item_#_quantity,
item_#_productName field and the item_
#_productSKU fields are required.
item_#_productName
Product’s name. For direct debits, required
if item_#_productCode is not default,
stored_value, or one of the values
related to shipping and/or handling.
Global Payment Service Developer Guide | March 2015
Direct Debit (See
description)
String (30)
Refund (O)
122
Chapter 9
Table 37
Direct Debits and Direct Debit Refunds Using the Simple Order API
Request Fields for Direct Debits and Direct Debit Refunds
for the Simple Order API (Continued)
Request Field
Description
Required (R)
or Optional
(O)
Data Type &
Length
item_#_productSKU
Product identifier code. For direct debits,
required if item_#_productCode is not
default, stored_value, or one of
the values related to shipping or handling.
Direct Debit (See
description)
String (30)
Quantity of the product being purchased.
The default is 1. For direct debits, required
if item_#_productCode is not default,
stored_value, or one of the values
related to shipping or handling.
Direct Debit (See
description)
Tax amount associated with this item. The
field is additive. For example, if you send
one item with unitPrice of 10.00 and
taxAmount of 0.80, and you send another
item with unitPrice of 20.00 and
taxAmount of 1.60, the total amount
authorized will be for 32.40, not 30.00 with
2.40 of tax included.
Direct Debit (O)
item_#_quantity
item_#_taxAmount
Refund (O)
Integer (10)
Refund (O)
String (15)
Refund (O)
The item_#_taxAmount and the item_#_
unitPrice fields must use the same
currency.
If you include item_#_taxAmount field,
and you also include taxService service in
your request, the taxService service does
not calculate tax for the item. Instead, it
returns the value in the item_#_
taxAmount field.
item_#_unitPrice
Per-item price of the product. You must
include either this field or
purchaseTotals_grandTotalAmount in
your request. This value cannot be
negative. For more information about items
and grand totals, see Getting Started with
CyberSource Advanced for the Simple
Order API.
Direct Debit (See
description)
String (15)
Refund (See
description)
You can include a decimal point (.) in this
field, but you cannot include any other
special characters. The amount will be
truncated at the request level to the correct
number of decimal places.
Global Payment Service Developer Guide | March 2015
123
Chapter 9
Table 37
Direct Debits and Direct Debit Refunds Using the Simple Order API
Request Fields for Direct Debits and Direct Debit Refunds
for the Simple Order API (Continued)
Request Field
Description
Required (R)
or Optional
(O)
Data Type &
Length
linkToRequest
Value that links the current request to a
previous authorization request for a debit
card or prepaid card. This value is useful
when multiple payment methods are being
used to complete an order. For more
information, see Credit Card Services
Using the Simple Order API.
Direct Debit (O)
String (26)
merchantID
Your CyberSource merchant ID.
Direct Debit (R)
String (30)
Note When opening your account with
CyberSource, make sure that you inform
CyberSource whether you plan to use
multiple CyberSource merchant IDs. For
example, if you have separate business
units within your company, each with a
separate CyberSource merchant ID. You
must have a separate processor merchant
ID for each CyberSource merchant ID. For
more information, contact CyberSource
Customer Support.
Refund (R)
Merchant-generated order reference or
tracking number. For more information, see
Getting Started with CyberSource
Advanced for the Simple Order API.
Direct Debit (R)
Currency used for the order. Possible
values are the ISO Standard Currency
Codes.
Direct Debit (R)
Grand total for the order. You must include
either this field or the item_#_unitPrice
field in your request. For more information,
see, Getting Started with CyberSource
Advanced for the Simple Order API.
Direct Debit (See
description)
shipTo_city
City of the shipping address.
Direct Debit
(Required if any
shipping
information is
included)
String (50)
shipTo_country
Country of the shipping address. Possible
values are the two-character ISO Standard
Country Codes.
Direct Debit (O)
String (2)
shipTo_firstName
First name of the person receiving the
product.
Direct Debit (O)
String (60)
shipTo_lastName
Last name of the person receiving the
product.
Direct Debit (O)
String (60)
merchantReferenceCode
purchaseTotals_currency
purchaseTotals_
grandTotalAmount
Global Payment Service Developer Guide | March 2015
String (50)
Refund (R)
String (5)
Refund (R)
String (15)
Refund (See
description)
124
Chapter 9
Table 37
Direct Debits and Direct Debit Refunds Using the Simple Order API
Request Fields for Direct Debits and Direct Debit Refunds
for the Simple Order API (Continued)
Request Field
Description
Required (R)
or Optional
(O)
Data Type &
Length
shipTo_phoneNumber
Phone number for the shipping address.
Direct Debit (O)
String (15)
shipTo_postalCode
Postal code for the shipping address. The
postal code must consist of 5 to 9 digits.
Direct Debit (R if
shipTo_
country=US or
CA)
String (10)
If the value of shipTo_country is US, the
9-digit postal code must follow these rules:
[5 digits][dash][4 digits]
Example: 12345-6789
If the value of shipTo_country is CA, the
6-digit postal code must follow these rules:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C4
If the postal code for the shipping address
is not included in the request message,
CyberSource uses the postal code from
the billing address. If the postal code for
the billing address is not included in the
request message, the postal code for the
shipping address is required.
shipTo_state
State or province of the shipping address.
Required if shipTo_country=US or
CA.Possible values are the State,
Province, and Territory Codes for the
United States and Canada.
Direct Debit (See
description)
String (2)
shipTo_street1
First line of the shipping address.
Direct Debit
(Required if any
shipping
information is
included)
String (60)
shipTo_street2
Second line of the shipping address.
Direct Debit (O)
String (60)
Global Payment Service Developer Guide | March 2015
125
Chapter 9
Direct Debits and Direct Debit Refunds Using the Simple Order API
Reply Fields
The following table lists the fields returned in a reply from the directDebitService service
or the directDebitRefundService service.
Table 38
Direct Debit and Direct Debit Refund Reply Fields for the Simple Order API
Reply Field
Description
Returned By
Data Type &
Length
decision
Summary of the result for the overall
request. Possible values:
Direct Debit
and Refund
String (6)

ACCEPT

ERROR

REJECT
directDebitRefundReply_
amount
Total amount for the direct debit refund.
Refund
String (15)
directDebitRefundReply_iban
International Bank Account Number (IBAN)
for the bank account.
Refund
Alphanumeric
(50)
directDebitRefundReply_
processorResponse
Response code from the processor.
Refund
String (10)
directDebitRefundReply_
reasonCode
Numeric value that indicates the result of
the direct debit refund request. See
"Reason Codes," page 155, for a list of
possible values.
Refund
Integer (5)
directDebitRefundReply_
reconciliationID
Unique value generated by CyberSource.
For more information, see Getting Started
with CyberSource Advanced for the Simple
Order API.
Refund
String (60)
directDebitRefundReply_
requestDateTime
Time of the direct debit refund request in
UTC.
Format: YYYY-MM-DDThh:mm:ssZ.
Example: 2007-08-11T22:47:57Z,
which is August 11, 2007, at 10:47:57 P.M.
The T separates the date and the time. The
Z indicates UTC.
Refund
String (20)
directDebitReply_amount
Total amount for the direct debit.
Direct Debit
String (15)
directDebitReply_iban
International Bank Account Number (IBAN)
for the bank account.
Direct Debit
Alphanumeric
(50)
directDebitReply_mandateID
The identification reference for the direct
debit mandate.
Direct Debit
Alphanumeric
(16)
directDebitReply_
processorResponse
Response code from the processor.
Direct Debit
String (10)
directDebitReply_reasonCode
Numeric value that indicates the result of
the direct debit request. See "Reason
Codes," page 155, for a list of possible
values.
Direct Debit
Integer (5)
Global Payment Service Developer Guide | March 2015
126
Chapter 9
Table 38
Direct Debits and Direct Debit Refunds Using the Simple Order API
Direct Debit and Direct Debit Refund Reply Fields for the Simple Order API (Continued)
Reply Field
Description
Returned By
Data Type &
Length
directDebitReply_
reconciliationID
Unique value generated by CyberSource.
For more information, see Getting Started
with CyberSource Advanced for the Simple
Order API.
Direct Debit
String (60)
directDebitReply_
requestDateTime
Time of the direct debit request in UTC.
Format: YYYY-MM-DDThh:mm:ssZ.
Example: 2007-08-11T22:47:57Z,
which is August 11, 2007 at 10:47:57 P.M.
The T separates the date and the time.
The Z indicates UTC.
Direct Debit
String (20)
invalidField_0...N
Fields in the request that contained invalid
data. These reply fields are included as an
aid to software developers only. No attempt
should be made to use these fields for end
user interaction. For more information, see
Getting Started with CyberSource
Advanced for the Simple Order API.
Direct Debit
and Refund
String (100)
merchantReferenceCode
Order reference or tracking number that you
provided in the request. If you included
multi-byte characters in this field in the
request, the returned value might contain
corrupted characters.
Direct Debit
and Refund
String (50)
missingField_0...N
Required fields that were missing from the
request. These reply fields are included as
an aid to software developers only. No
attempt should be made to use these fields
for end user interaction. For more
information, see Getting Started with
CyberSource Advanced for the Simple
Order API.
Direct Debit
and Refund
String (100)
purchaseTotals_currency
Currency used for the order. Possible
values are the ISO Standard Currency
Codes.
Direct Debit
and Refund
String (5)
reasonCode
Numeric value that indicates the result of
the overall request. See "Reason Codes,"
page 155, for a list of possible values.
Direct Debit
and Refund
Integer (5)
requestID
Identifier for the request.
Direct Debit
and Refund
String (26)
Global Payment Service Developer Guide | March 2015
127
Chapter 9
Direct Debits and Direct Debit Refunds Using the Simple Order API
Request and Reply Examples
In the direct debit example below the customer includes the BBAN in the
request. The BBAN is converted to an IBAN in the direct debit reply.
Note
Direct Debit Request
Example 41
Direct Debit Request
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.103">
<merchantID>demo123</merchantID>
<merchantReferenceCode>demoRef</merchantReferenceCode>
<billTo>
<firstName>Orlando</firstName>
<lastName>Bloom</lastName>
<street1>Kaerntner Strasse 22</street1>
<city>Vienna</city>
<postalCode>1010</postalCode>
<country>ES</country>
<phoneNumber>431427721010</phoneNumber>
<email>[email protected]</email>
</billTo>
<purchaseTotals>
<currency>EUR</currency>
<grandTotalAmount>41</grandTotalAmount>
</purchaseTotals>
<fundTransfer>
<accountNumber>0001155325</accountNumber>
<bankCheckDigit>90</bankCheckDigit>
</fundTransfer>
<bankInfo>
<bankCode>0081</bankCode>
<name>SloveniaBank_testing</name>
<country>ES</country>
<branchCode>5394</branchCode>
<swiftCode>ABNA NL 2A</swiftCode>
</bankInfo>
<directDebitService run="true">
<directDebitText>abcd</directDebitText>
<directDebitType>004</directDebitType>
<mandateAuthenticationDate>20140610</mandateAuthenticationDate>
</directDebitService>
</requestMessage>
Global Payment Service Developer Guide | March 2015
128
Chapter 9
Direct Debits and Direct Debit Refunds Using the Simple Order API
Direct Debit Reply
Example 42
Direct Debit Reply
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.103">
<c:merchantReferenceCode>demoRef</c:merchantReferenceCode>
<c:requestID>4024443213630181552683</c:requestID>
<c:decision>ACCEPT</c:decision>
<c:reasonCode>100</c:reasonCode>
<c:purchaseTotals>
<c:currency>eur</c:currency>
</c:purchaseTotals>
<c:directDebitReply>
<c:reasonCode>100</c:reasonCode>
<c:amount>41.00</c:amount>
<c:requestDateTime>2014-06-10T23:52:01Z</c:requestDateTime>
<c:reconciliationID>2149564611</c:reconciliationID>
<c:mandateID>159799546111146963</c:mandateID>
<c:iban>IE64BOFI0001155325</c:iban>
</c:directDebitReply>
</c:replyMessage>
Standalone Direct Debit Refund Request
In the direct debit refund example below the customer includes the BBAN in the
request. The BBAN is converted to an IBAN in the direct debit refund reply.
Note
Example 43
Standalone Direct Debit Refund Request
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.103">
<merchantID>demo123</merchantID>
<merchantReferenceCode>demoRef</merchantReferenceCode>
<billTo>
<firstName>Orlando</firstName>
<lastName>Bloom</lastName>
<street1>33, rue Dauphine</street1>
<city>Bergheim</city>
<postalCode>75006</postalCode>
<country>DE</country>
<phoneNumber>33 3 69 20 45 63</phoneNumber>
<email>[email protected]</email>
</billTo>
<purchaseTotals>
<currency>EUR</currency>
<grandTotalAmount>12</grandTotalAmount>
</purchaseTotals>
Global Payment Service Developer Guide | March 2015
129
Chapter 9
Direct Debits and Direct Debit Refunds Using the Simple Order API
<fundTransfer>
<accountNumber>0044497071</accountNumber>
<accountName>BRADFORD NICKLES</accountName>
</fundTransfer>
<bankInfo>
<bankCode>79050000</bankCode>
<name>SloveniaBank_testing</name>
<country>DE</country>
<swiftCode>BSLJSI2X</swiftCode>
</bankInfo>
<directDebitService run="">
<reconciliationID>335556323</reconciliationID>
</directDebitService>
<directDebitRefundService run="true"/>
</requestMessage>
Example 44
Standalone Direct Debit Refund Reply
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.103">
<c:merchantReferenceCode>demoRef</c:merchantReferenceCode>
<c:requestID>4024444278270181551532</c:requestID>
<c:decision>ACCEPT</c:decision>
<c:reasonCode>100</c:reasonCode>
<c:purchaseTotals>
<c:currency>eur</c:currency>
</c:purchaseTotals>
<c:directDebitRefundReply>
<c:reasonCode>100</c:reasonCode>
<c:amount>12.00</c:amount>
<c:requestDateTime>2014-06-10T23:53:50Z</c:requestDateTime>
<c:reconciliationID>335556323</c:reconciliationID>
<c:processorResponse>800</c:processorResponse>
<c:iban>DE58790500000044497071</c:iban>
</c:directDebitRefundReply>
</c:replyMessage>
Follow-On Direct Debit Refund
Example 45
Follow-On Direct Debit Refund Request
<requestMessage xmlns="urn:schemas-cybersource-com:transaction-data-1.103">
<merchantID>demo123</merchantID>
<merchantReferenceCode>demoRef</merchantReferenceCode>
<purchaseTotals>
<grandTotalAmount>41</grandTotalAmount>
</purchaseTotals>
<directDebitRefundService run="true">
<directDebitRequestID>4024443213630181552683</directDebitRequestID>
</directDebitRefundService>
</requestMessage>
Global Payment Service Developer Guide | March 2015
130
Chapter 9
Example 46
Direct Debits and Direct Debit Refunds Using the Simple Order API
Follow-On Direct Debit Refund Reply
<c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.103">
<c:merchantReferenceCode>demoRef</c:merchantReferenceCode>
<c:requestID>4024443591910181552683</c:requestID>
<c:decision>ACCEPT</c:decision>
<c:reasonCode>100</c:reasonCode>
<c:purchaseTotals>
<c:currency>eur</c:currency>
</c:purchaseTotals>
<c:directDebitRefundReply>
<c:reasonCode>100</c:reasonCode>
<c:amount>41.00</c:amount>
<c:requestDateTime>2014-06-10T23:52:39Z</c:requestDateTime>
<c:reconciliationID>2149564611</c:reconciliationID>
<c:iban>IE64BOFI0001155325</c:iban>
</c:directDebitRefundReply>
</c:replyMessage>
Global Payment Service Developer Guide | March 2015
131
CHAPTER
Direct Debits and Direct
Debit Refunds Using the
SCMP API
Important
10
Our processing partner requires us to pre-populate their fields to show that the
mandate has been signed and dated. The MANDATEDATE field is populated
with the system date, the MANDATEPLACE field is populated with the
customer city, and the MANDATESIGNED indicator is set to 1. These fields are
for future use and will support e-mandates.
Requesting Direct Debits
Important
Note
From August 1, 2016, for euro countries and from October 31, 2016, for noneuro countries, the IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN; this conversion process will continue only
until August 1, 2016.
The bank SWIFT code, a unique address of the bank, does not have to be
included in each request; however, CyberSource strongly recommends
including this code in the request when the IBAN is included in the request.
To request a direct debit, set the ics_applications field to ics_direct_debit. See
Table 39, page 135, for a list of the fields to use.
When requesting a direct debit, you may not request any of the other ICS services except
ics_tax. For more information about the service, see Tax Calculation Service Using the
SCMP API.
When you take an order that uses a direct debit, you must gather the customer’s billing
and bank account information. For most countries, CyberSource accepts either the
traditional bank account information or the account’s IBAN. The traditional bank account
information and the corresponding API fields you need to provide vary by country. Contact
CyberSource Customer Support for required country-specific bank account information.
CyberSource validates the format of the bank account number before performing the
direct debit. If the account number does not pass the validation check, CyberSource
Global Payment Service Developer Guide | March 2015
132
Chapter 10
Direct Debits and Direct Debit Refunds Using the SCMP API
rejects the request with a rflag=DINVALIDACCOUNT. CyberSource recommends that you
confirm the customer entered the number correctly, and if it was incorrect, request the
direct debit again with the correct number.
Requesting Direct Debit Refunds
Important
From August 1, 2016, for euro countries and from October 31, 2016, for noneuro countries, the IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN; this conversion process will continue only
until August 1, 2016.
There are two types of direct debit refunds: follow-on refunds and stand-alone refunds. A
follow-on refund uses information from a previous direct debit. A stand-alone refund does
not depend on a previous transaction.
A follow-on refund must occur within 60 of the request for the direct debit. When the time
limit for a follow-on refund expires, the only kind of refund you can perform is a standalone refund.
To request a direct debit refund:

Set the ics_applications field to ics_direct_debit_refund.

Do not request any other ICS services except Tax Calculation, which is optional. For
more information about this service, see Tax Calculation Service Using the SCMP
API.

Send the fields required for a direct debit refund request as described in Table 39,
page 135. For a follow-on refund, the fields and values must match the fields and
values you sent in the original direct debit request.

For a stand-alone refund, the direct_debit_request_id field is optional. See
page 147.

For a follow-on refund, include the direct_debit_request_id field with the request ID
from the direct debit reply. See page 148.

The easiest way to implement direct debit refunds is to always send the request ID
from the original direct debit with every direct debit refund request.

CyberSource recommends that when you request a refund, you use the same value
for the merchant_ref_number field that you used for the direct debit. This makes it
easier for you to link the refund to the original direct debit in your own system as well
as in CyberSource reports and Transaction Search Screens.
Global Payment Service Developer Guide | March 2015
133
Chapter 10
Direct Debits and Direct Debit Refunds Using the SCMP API
CyberSource validates the format of the bank account number before processing the
direct debit refund. If the account number does not pass the validation check,
CyberSource rejects the request with a rflag=DINVALIDACCOUNT. CyberSource
recommends that you then confirm the customer entered the number correctly, and if it
was incorrect, request the refund again with the correct number.
You can perform multiple partial refunds against a direct debit. The sum of the refunds
must not exceed the amount of the payment.
You will not receive an error in the reply for either of the following conditions:

The direct_debit_request_id field is invalid.

The customer’s payment has not yet been received.
Instead, CyberSource does not process the refund, and the transaction appears in the
daily Transaction Exception Detail Report. You should monitor this report daily to
determine whether any of your transactions have problems. For descriptions of the reason
codes that can appear in the report, see Appendix B, "Reason Codes," on page 155. For
information about the report and how to use it, see the Global Payment Service Planning
Guide. For details about downloading the report and its format, see the Reporting
Developer Guide.
Global Payment Service Developer Guide | March 2015
134
Chapter 10
Direct Debits and Direct Debit Refunds Using the SCMP API
API Fields
In the “Used By” column, the services are referred to by shortened names: Direct Debit
and Refund. For information about the data types, see Getting Started with CyberSource
Advanced for the SCMP API.
Request Fields
The following table lists the fields to use in a request for the ics_direct_debit service or
the ics_direct_debit_refund service.
Table 39
Request-Level Fields for Direct Debits and Direct Debit Refunds
for the SCMP API
Request-Level
Field
Description
Required (R)
or Optional
(O)
Data Type
& Length
bank_account_
name
Name used on the bank account.
Direct Debit (O)
String (30)
bank_account_
number
Bank account number.
Refund (O)
Important From August 1, 2016, for euro countries
and from October 31, 2016, for non-euro countries, the
IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN, and this
conversion process will continue only until August 1,
2016.
Direct Debit
(See
description)
String (See
description)
Refund (See
description)
Note Do not use the IBAN in this field. include the
IBAN in the fundTransfer_iban field.
bank_address
Bank’s address.
Direct Debit (O)
String (255)
Refund (O)
bank_check_digit
Code used to validate the customer's account number
when you are not using the IBAN. Contact CyberSource
Customer Support for required country-specific bank
account information.
Direct Debit
(See
description)
String (2)
bank_city
City in which the bank is located. If you do not send this
field, Global Collect assumes the bank is located in the
bill_city field. Some banks validate the bank account
information, so include this field if the bank is not
included in the bill_city field.
Direct Debit (O)
String (35)
Bank's code. Used for some countries when you are not
using the IBAN. Contact CyberSource Customer
Support for required country-specific bank account
information.
Direct Debit
(See
description)
bank_code
Global Payment Service Developer Guide | March 2015
Refund (O)
String (See
description)
Refund (See
description)
135
Chapter 10
Table 39
Direct Debits and Direct Debit Refunds Using the SCMP API
Request-Level Fields for Direct Debits and Direct Debit Refunds
for the SCMP API (Continued)
Request-Level
Field
Description
Required (R)
or Optional
(O)
Data Type
& Length
bank_country
Country in which the bank is located. Possible values
are the two-character ISO Standard Country Codes.
Direct Debit (R)
String (2)
International Bank Account Number (IBAN) for the bank
account.
Direct Debit
(See
description)
Alphanumeric
(50)
Direct Debit
(See
description)
String (40)
bank_iban
Important From August 1, 2016, for euro countries
Refund (R)
and from October 31, 2016, for non-euro countries, the
IBAN must be included in each request. If you provide a
BBAN it will be converted to an IBAN, and this
conversion process will continue only until August 1,
2016.
bank_name
Bank's name. Required when using the Global Collect
processor to make one of the following types of direct
debit transactions:

Direct debit

Stand-alone direct debit refund
Refund (See
description)
Otherwise optional.
bank_swiftcode
Bank’s SWIFT code. Unique address of the bank. Also
known as the Bank Identification Code (BIC).
Direct Debit (O)
String (30)
Refund (O)
Note This field is optional; however, CyberSource
strongly recommends including this code in each
request when the IBAN is included in the request.
bill_address1
Billing street address.
Direct Debit (R)
String (60)
Refund (R)
bill_address2
Additional billing address information.
Direct Debit (O)
String (60)
Refund (O)
bill_city
Billing address city.
Direct Debit (R)
String (50)
Refund (R)
bill_country
bill_state
Billing address country. Possible values are the twocharacter ISO Standard Country Codes.
Direct Debit (R)
Billing address state. Required if bill_country=US or
CA. Possible values are the State, Province, and
Territory Codes for the United States and Canada.
Direct Debit
(See
Description)
String (2)
Refund (R)
String (2)
Refund (See
Description)
Global Payment Service Developer Guide | March 2015
136
Chapter 10
Table 39
Direct Debits and Direct Debit Refunds Using the SCMP API
Request-Level Fields for Direct Debits and Direct Debit Refunds
for the SCMP API (Continued)
Request-Level
Field
Description
Required (R)
or Optional
(O)
Data Type
& Length
bill_zip
Zip code for the shipping address. The zip code must
consist of 5 to 9 digits.
Direct Debit (R if
bill_
country=US or
CA)
String (10)
If the value of bill_country is US, the 9-digit zip code
must follow this format:
[5 digits][dash][4 digits]
Example:12345-6789
If the value of bill_country is CA, the 6-digit zip code
must follow this format:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C3
Refund (R if
bill_
country=US or
CA)
Code that identifies the branch of the customer's bank
when you are not using the IBAN. Contact CyberSource
Customer Support for required country-specific bank
account information.
Direct Debit
(See
description)
Currency used for the order. Possible values are the
ISO Standard Currency Codes.
Direct Debit (R)
Customer’s email address, including the full domain
name. For example, [email protected].
Direct Debit (R)
customer_
firstname
Customer’s first name.
Direct Debit (R)
customer_
lastname
Customer’s last name.
customer_phone
Customer’s telephone number.
branch_code
currency
customer_email
String (15)
Refund (See
description)
String (5)
Refund (R)
String (255)
Refund (R)
String (60)
Refund (R)
Direct Debit (R)
String (60)
Refund (R)
Direct Debit (O)
String (15)
Refund (O)
date_collect
Date the direct debit should be debited.
Format: YYYYMMDD
Direct Debit (O)
String (8)
direct_debit_
mandate_
authentication_
date
The date the direct debit mandate was authenticated.
Format: YYYYMMDD
Direct Debit (O)
Numeric (8)
Global Payment Service Developer Guide | March 2015
137
Chapter 10
Table 39
Direct Debits and Direct Debit Refunds Using the SCMP API
Request-Level Fields for Direct Debits and Direct Debit Refunds
for the SCMP API (Continued)
Request-Level
Field
Description
Required (R)
or Optional
(O)
Data Type
& Length
direct_debit_
recurring_type
Whether the direct debit is the first or last direct debit
associated with the mandate, or one in between.
Required only for the United Kingdom. Possible values:
Direct Debit
(See
description)
String (3)

001: First direct debit associated with this mandate.
Use this value if a one-time direct debit).

002: Subsequent direct debits associated with this
mandate.

003: Last direct debit associated with this mandate.
direct_debit_
request_id
The request_id value returned from a previous request
for ics_direct_debit.
Refund (R)
String (26)
direct_debit_text
Text describing reason for the direct debit. Required
only for the Global Collect processor. Appears on the
customer’s bank statement.
Direct Debit (R)
String (See
description)
Austria: Max 28 characters
Germany: Max 50 characters
Netherlands: Max 32 characters
Spain: Max 40 characters
direct_debit_
trans_ref_no
To use this field, contact CyberSource Customer
Support.
Refund (R)
String (60)
direct_debit_type
Type of direct debit. Required only for the Global Collect
processor. Possible values:
Direct Debit
(See
description)
String (3)
Grand total for the order. You must include either this
field or the offer0 field and the offer-level field amount.
For more information about offers and grand totals, see
Getting Started with CyberSource Advanced for the
SCMP API.
Direct Debit
(See
description)
Decimal (15)
ICS services to process for the request.
Direct Debit (R)
grand_total_
amount
ics_applications

001: Austria

003: Netherlands

004: Spain

005: German ELV direct debit
Refund (See
description)
String (255)
Refund (R)
link_to_request
Value that links the current request to a previous
authorization request for a debit card or prepaid card.
This value is useful when using multiple payment
methods to complete an order. For more information,
see Credit Card Services Using the SCMP API.
Global Payment Service Developer Guide | March 2015
Direct Debit (O)
String (26)
138
Chapter 10
Table 39
Direct Debits and Direct Debit Refunds Using the SCMP API
Request-Level Fields for Direct Debits and Direct Debit Refunds
for the SCMP API (Continued)
Request-Level
Field
Description
Required (R)
or Optional
(O)
Data Type
& Length
mandate_id
The mandate ID. Required only for the United Kingdom.
Direct Debit
(See
description)
String (16)
merchant_id
Your CyberSource merchant ID.
Direct Debit (R)
String (30)
Note When opening your account with CyberSource,
tell CyberSource whether you plan to use multiple
CyberSource merchant IDs. For example, if you have
separate business units within your company, each with
a separate CyberSource merchant ID. You must have a
separate processor merchant ID for each CyberSource
merchant ID. For more information, contact
CyberSource Customer Support.
Refund (R)
merchant_ref_
number
Merchant-generated order reference or tracking
number. For more information, see Getting Started with
CyberSource Advanced for the SCMP API.
Direct Debit (R)
offer0...N
Offers for the request. An offer is a line item for the
order.
Direct Debit (O)
ship_to_address1
First line of the shipping address. Required if any
shipping information is included.
Direct Debit
(See
description)
String (60)
ship_to_address2
Second line of the shipping address.
Direct Debit (O)
String (60)
ship_to_city
City of the shipping address. Required if any shipping
information is included.
Direct Debit
(See
description)
String (50)
ship_to_country
Country of the shipping address. Possible values are
the two-character ISO Standard Country Codes.
Direct Debit (O)
String (2)
ship_to_firstname
First name of person receiving the product.
Direct Debit (O)
String (60)
ship_to_lastname
Last name of person receiving the product.
Direct Debit (O)
String (60)
ship_to_phone
Phone number for the shipping address.
Direct Debit (O)
String (15)
ship_to_state
State or province of the shipping address. Required if
ship_to_country=US or CA. Possible values are the
State, Province, and Territory Codes for the United
States and Canada.
Direct Debit
(See
description)
String (2)
Global Payment Service Developer Guide | March 2015
String (50)
Refund (R)
String (50)
Refund (O)
139
Chapter 10
Table 39
Direct Debits and Direct Debit Refunds Using the SCMP API
Request-Level Fields for Direct Debits and Direct Debit Refunds
for the SCMP API (Continued)
Request-Level
Field
Description
Required (R)
or Optional
(O)
Data Type
& Length
ship_to_zip
Zip code for the shipping address.
Direct Debit (R if
ship_to_
country=US or
CA)
String (10)
Number of seconds until the transaction times out. The
default is 110 seconds.
Direct Debit (O)
Positive
integer (3)
Type of direct debit transaction. Required only for the
Netherlands when using the Global Collect processor.
Possible values:
Direct Debit
(See
description)
If the value of ship_to_country is US, the 9-digit zip
code must follow this format:
[5 digits][dash][4 digits]
Example: 12345-6789
If the value of ship_to_country is CA, the 6-digit zip
code must follow this format:
[alpha][numeric][alpha]
[numeric][alpha][numeric]
Example: A1B 2C3
If the postal code for the shipping address is not
included in the request message, CyberSource uses
the postal code from the billing address. If the postal
code for the billing address is not included in the
request message, the postal code for the shipping
address is required.
timeout
transaction_type

01: First collection using this account

02: Other
Refund (O)
String (2)
Note For first collections on a Post giro account called
onzuivere posten, the account number is verified
against the account name and city by the Post bank.
This verification requires one additional processing day.
Global Payment Service Developer Guide | March 2015
140
Chapter 10
Direct Debits and Direct Debit Refunds Using the SCMP API
Offer-Level Fields
The following table lists the fields to use in a request for the ics_direct_debit service or
the ics_direct_debit_refund service.
Table 40
Offer-Level Fields for Direct Debits and Direct Debit Refunds
for the SCMP API
Offer-Level Field
Description
Required (R)
or Optional (O)
Data
Type &
Length
amount
Per-item price of the product. You must include
either this field and the offer0 field, or the
request-level field grand_total_amount in your
request. This value cannot be negative. For more
information about offers and grand totals, see
Getting Started with CyberSource Advanced for
the SCMP API.
Direct Debit (See
description)
Decimal
(15)
Refund (See
description)
You can include a decimal point (.) in this field,
but you cannot include any other special
characters. The amount will be truncated at the
request level to the correct number of decimal
places.
merchant_product_sku
product_code
Product identifier code. For direct debits,
required if product_code is not default,
stored_value, or one of the values related to
shipping or handling.
Direct Debit (See
description)
Type of product. This value is also used to
determine the product category: electronic,
handling, physical, service, or shipping.The
default value is default. See "Product
Codes," page 154, for a list of valid values.
Direct Debit (O)
String (30)
Refund (O)
String (30)
Refund (O)
For direct debits, if you set this to a value other
than default, stored_value, or any of the
values related to shipping or handling, the
quantity, product_name, and merchant_
product_sku fields are required.
product_name
quantity
Product’s name. For direct debits, required if
product_code is not default, stored_
value, or one of the values related to shipping
or handling.
Direct Debit (See
description)
Quantity of the product being purchased.The
default is 1. For direct debits, required if
product_code is not default, stored_
value, or one of the values related to shipping
or handling.
Direct Debit (See
description)
Global Payment Service Developer Guide | March 2015
String (30)
Refund (O)
Refund (O)
Nonnegative
integer
(10)
141
Chapter 10
Table 40
Direct Debits and Direct Debit Refunds Using the SCMP API
Offer-Level Fields for Direct Debits and Direct Debit Refunds
for the SCMP API (Continued)
Offer-Level Field
Description
Required (R)
or Optional (O)
Data
Type &
Length
tax_amount
Tax amount associated with this item.The field is
additive. For example, if you send the following
offer lines:
Direct Debit (O)
Decimal
(15)
Refund (O)
offer0=amount:10.00^
quantity:1^tax_amount:0.80
offer1=amount:20.00^
quantity:1^tax_amount:1.60
the total amount authorized will be for 32.40, not
30.00 with 2.40 of tax included.
The tax_amount and amount values must be in
the same currency.
If you include tax_amount, and you request the
ics_tax service, ics_tax will not calculate tax for
the offer. Instead, it will return the value in the
tax_amount field.
Reply Fields
The following table lists the fields returned in a reply from ics_direct_debit service
request or the ics_direct_debit_refund service request.
Table 41
Reply Fields for Direct Debits and Direct Debit Refunds for the SCMP API
Reply Field
Description
Returned
By
Data Type &
Length
client_lib_version
Information about the client library used to request
the transaction.
Direct Debit
String (50)
Currency used for the order. Possible values are
the ISO Standard Currency Codes.
Direct Debit
direct_debit_amount
Amount of the direct debit.
Direct Debit
Decimal (15)
direct_debit_iban
International Bank Account Number (IBAN) for the
bank account.
Direct Debit
Alphanumeric
(50)
direct_debit_mandate_id
The identification reference for the direct debit
mandate.
Direct Debit
Alphanumeric
(16)
direct_debit_rcode
One-digit code that indicates if the ics_direct_
debit request was successful.
Direct Debit
Integer (1)
direct_debit_refund_
amount
Amount of the direct debit refund.
Refund
Decimal (15)
currency
Global Payment Service Developer Guide | March 2015
Refund
String (5)
Refund
142
Chapter 10
Table 41
Direct Debits and Direct Debit Refunds Using the SCMP API
Reply Fields for Direct Debits and Direct Debit Refunds for the SCMP API (Continued)
Reply Field
Description
Returned
By
Data Type &
Length
direct_debit_refund_
iban
International Bank Account Number (IBAN) for the
bank account.
Refund
Alphanumeric
(50)
direct_debit_refund_
rcode
One-digit code that indicates if the ics_direct_
debit_refund request was successful.
Refund
Integer (1)
direct_debit_refund_
request_time
Time of direct debit refund request in UTC. For
more information, see Getting Started with
CyberSource Advanced for the SCMP API.
Refund
Date and time
(20)
direct_debit_refund_
response_code
Response code from the processor.
Refund
String (10)
direct_debit_refund_
rflag
One-word description of the result of the ics_
direct_debit_refund request.
Refund
String (50)
direct_debit_refund_
rmsg
Message that explains the reply flag direct_debit_
refund_rflag.
Refund
String (255)
direct_debit_refund_
trans_ref_no
Reference number for the transaction. For more
information, see Getting Started with CyberSource
Advanced for the SCMP API.
Refund
String (60)
direct_debit_request_
time
Time of direct debit request in UTC. For more
information, see Getting Started with CyberSource
Advanced for the SCMP API.
Refund
Date and time
(20)
direct_debit_response_
code
Response code from the processor.
Direct Debit
String (10)
direct_debit_rflag
One-word description of the result for the ics_
direct_debit request.
Direct Debit
String (50)
direct_debit_rmsg
Message that explains the reply flag direct_debit_
rflag.
Direct Debit
String (255)
direct_debit_trans_ref_
no
Reference number for the transaction. For more
information, see Getting Started with CyberSource
Advanced for the SCMP API.
Refund
String (60)
ics_rcode
One-digit code that indicates whether the entire
request was successful.
Direct Debit
and Refund
Integer (1)
ics_rflag
One-word description of the result for the entire
request.
Direct Debit
and Refund
String (50)
ics_rmsg
Message that explains the reply flag ics_rflag.
Direct Debit
and Refund
String (255)
merchant_ref_number
Order reference or tracking number that you
provided in the request. If you included multi-byte
characters in this field in the request, the returned
value might contain corrupted characters.
Direct Debit
and Refund
String (50)
request_id
Identifier for the request generated by the client.
Direct Debit
and Refund
String (26)
Global Payment Service Developer Guide | March 2015
143
Chapter 10
Direct Debits and Direct Debit Refunds Using the SCMP API
Reply Flags
The following table lists the reply flags for the ics_direct_debit service request and the
ics_direct_debit_refund service request.
Table 42
Reply Flags for Direct Debits and Direct Debit Refunds for the SCMP API
Reply Flag
Description
Returned By
DINVALIDACCOUNT
The bank account number did not pass the validation. Verify with the
customer that the account number is correct; if it was incorrect, request
the service again with the correct information.
Direct Debit
and Refund
DINVALIDDATA
Data provided is not consistent with the request.
Direct Debit
and Refund
DMISSINGFIELD
The request is missing a required field.
Direct Debit
and Refund
ESYSTEM
System error. Wait a few minutes before re-sending your request. You
must design your transaction management system to correctly handle
CyberSource system errors. Depending on the payment processor
handling the transaction, the error may indicate a valid CyberSource
system error or a processor rejection caused by invalid data. In either
case, CyberSource recommends that you do not design your system to
endlessly retry sending a transaction. See the documentation for your
CyberSource client for information on handling system errors and
retries.
Direct Debit
and Refund
ETIMEOUT
The request timed out.
Direct Debit
and Refund
SOK
The transaction was successful.
Direct Debit
and Refund
Global Payment Service Developer Guide | March 2015
144
Chapter 10
Direct Debits and Direct Debit Refunds Using the SCMP API
Request and Reply Examples
In the direct debit example below the customer includes the BBAN in the
request. The BBAN is converted to an IBAN in the direct debit reply.
Note
Direct Debit Request
Example 47
Direct Debit Request
ics_applications=ics_direct_debit
bank_account_name=Direct_Debit Testing
bank_account_number=55500643635
bank_address=Vienna Central Branch
bank_city=Hinterbruhl
bank_code=31000
bank_country=AT
bank_swiftcode=ABNA NL 2A
bill_address1=Parkstrasse 4
bill_city=Hinterbruhl
bill_country=AT
bill_zip=2371
currency=eur
[email protected]
customer_firstname=John
customer_lastname=Smith
customer_phone=999-999-9999
direct_debit_mandate_authentication_date=20140610
direct_debit_text=Direct Debit Text
direct_debit_type=001
grand_total_amount=21.11
merchant_id=mercid123
merchant_ref_number=merRef123
Global Payment Service Developer Guide | March 2015
145
Chapter 10
Example 48
Direct Debits and Direct Debit Refunds Using the SCMP API
Direct Debit Reply
currency=eur
direct_debit_amount=21.11
direct_debit_iban=IE64BOFI55500643635
direct_debit_mandate_id=697458823683278238
direct_debit_rcode=1
direct_debit_rflag=SOK
direct_debit_rmsg=Request was processed successfully.
direct_debit_time=2014-06-10T211943Z
direct_debit_trans_ref_no=2149562887
ics_decision_reason_code=100
ics_rcode=1
ics_rflag=SOK
ics_rmsg=Request was processed successfully.
merchant_ref_number=merRef123
request_id=4024351829300172492137
Global Payment Service Developer Guide | March 2015
146
Chapter 10
Direct Debits and Direct Debit Refunds Using the SCMP API
Direct Debit Refund—Standalone
In the direct debit refund example below the customer includes the BBAN in the
request. The BBAN is converted to an IBAN in the direct debit refund reply.
Note
Example 49
Standalone Direct Debit Refund Request
ics_applications=ics_direct_debit_refund
bank_account_name=Direct_Debit Testing
bank_account_number=55500643635
bank_address=Vienna Central Branch
bank_check_digit=77
bank_code=31000
bank_country=AT
bank_name=Raiffeisen Zentral
bank_swiftcode=BNPA FR PP PLZ
bill_address1=PARK
bill_city=HINTERBRUHL
bill_country=AT
branch_code=99999
currency=EUR
[email protected]
customer_firstname=John
customer_lastname=Smith
customer_phone=999-999-9999
date_collect=20120821
direct_debit_text=Direct Debit Text
direct_debit_type=001
grand_total_amount=100.00
mandate_id=1
merchant_id=mercid123
merchant_ref_number=merRef123
Example 50
Standalone Direct Debit Refund Reply
currency=eur
direct_debit_refund_amount=100.00
direct_debit_refund_iban=IE64BOFI55500643635
direct_debit_refund_rcode=1
direct_debit_refund_rflag=SOK
direct_debit_refund_rmsg=Request was processed successfully.
direct_debit_refund_time=2014-06-10T211934Z
direct_debit_refund_trans_ref_no=Reference No
ics_rcode=1
ics_rflag=SOK
ics_rmsg=Request was processed successfully.
merchant_ref_number=merRef123
request_id=4024351740870172492137
Global Payment Service Developer Guide | March 2015
147
Chapter 10
Direct Debits and Direct Debit Refunds Using the SCMP API
Direct Debit Refund—Follow-On
Example 51
Follow-On Direct Debit Refund Request
ics_applications=ics_direct_debit_refund
direct_debit_request_id=4024351829300172492137
grand_total_amount=21.11
merchant_id=mercid123
merchant_ref_number=merRef123
Example 52
Follow-On Direct Debit Refund Reply
currency=eur
direct_debit_refund_amount=21.11
direct_debit_refund_iban=IE64BOFI55500643635
direct_debit_refund_rcode=1
direct_debit_refund_rflag=SOK
direct_debit_refund_rmsg=Request was processed successfully.
direct_debit_refund_time=2014-06-10T211943Z
direct_debit_refund_trans_ref_no=2149562887
ics_rcode=1
ics_rflag=SOK
ics_rmsg=Request was processed successfully.
merchant_ref_number=merRef123
request_id=4024351832340172492137
Global Payment Service Developer Guide | March 2015
148
CHAPTER
Testing
11
Sending Test Requests
You can send test requests for bank transfers, real-time bank transfers, direct debits,
refunds, and mandates to the CyberSource test server. CyberSource performs the same
basic validations that are performed for production transactions. For bank transfer replies,
you receive fake bank account information. Test transactions are not forwarded to the
payment processor.
The requirements for test transactions are:

Use your regular CyberSource merchant ID.

Match the country and currency information. For example, if testing a bank transfer in
Germany, make sure that you specify Germany as the bank country and the country of
the customer’s address, and specify EUR as the currency.

When testing the Simple Order API, use the test URL:
https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor

When testing the SCMP API, use the CyberSource test server:
https://ics2test.ic3.com
Testing Bank Transfers, Direct
Debits, and Refunds
You use specific amounts in your test transactions to trigger specific responses. This
process enables you to easily generate the various responses that your system needs to
handle.
The following table shows the amounts and decline or error responses that are returned
by the simulator. The tables include responses for both the Simple Order API (reason
code) and the SCMP API (rflag and rmsg description).
Global Payment Service Developer Guide | March 2015
149
Chapter 11
Testing
See Appendix B, "Reason Codes," on page 155 for descriptions of the Simple Order API
reason codes.
The rmsg you actually receive contains all capital letters with underscores between the
words.
Table 43
Test Data for Global Payment Service
Amount
Simple
Order API
Reason
Code
SCMP API
rflag
SCMP API rmsg Description
Used with
These Payment
Types
2013
233
DINVALIDDATA
No bank found for this country
Bank Transfer
2014
233
DINVALIDDATA
Invalid bank account number
Bank Transfer
Direct Debit
2015
233
DINVALIDDATA
Invalid Post giro account number
Bank Transfer
Direct Debit
2020
233
DINVALIDDATA
Authorization ID is required for country.
Direct Debit
2024
233
DINVALIDDATA
Bank code is required for country
Direct Debit
2025
233
DINVALIDDATA
Account name is required for country
Direct Debit
2026
233
DINVALIDDATA
Account number is required for country
Direct Debit
2027
233
DINVALIDDATA
Direct debit text is required for country
Direct Debit
2028
233
DINVALIDDATA
Date collect is required for country
Direct Debit
2029
233
DINVALIDDATA
Bank check digit is required for country
Direct Debit
2030
233
DINVALIDDATA
Branch code is required for country
Direct Debit
2031
233
DINVALIDDATA
Bank name is required for country
Direct Debit
2032
233
DINVALIDDATA
Date collected.
Direct Debit
2033
233
DINVALIDDATA
Account number has invalid length
Direct Debit
2034
233
DINVALIDDATA
Invalid bank code for payment type and
country combination
Direct Debit
2035
233
DINVALIDDATA
Bank code does not match bank name
Direct Debit
2036
233
DINVALIDDATA
Invalid bank account number
Bank Transfer
Direct Debit
2037
233
DINVALIDDATA
Invalid Post giro account number
Bank Transfer
Direct Debit
2038
2039
233
233
DINVALIDDATA
DINVALIDDATA
Amount not between minimum and
maximum amounts
Bank Transfer
Payment type invalid for country code
Bank Transfer
Direct Debit
Direct Debit
Global Payment Service Developer Guide | March 2015
150
Chapter 11
Table 43
Testing
Test Data for Global Payment Service (Continued)
Amount
Simple
Order API
Reason
Code
SCMP API
rflag
SCMP API rmsg Description
Used with
These Payment
Types
2042
237
DINVALIDDATA
Already refunded; no multiple refunds
allowed
Bank Transfer
Refund
Direct Debit
Refund
2044
239
DINVALIDDATA
Refund amount too large
Bank Transfer
Refund
Direct Debit
Refund
2045
150
ESYSTEM
The request refers to an unknown order.
Bank Transfer
Refund
Direct Debit
Refund
9999.98
250
ETIMEOUT
Time-out connecting to processor
All
9999.99
150
ESYSTEM
Unexpected error
All
Testing Real-Time Bank Transfers
Testing Your CyberSource Interface
This stage of testing is available for all real-time bank transfer networks.
Note
Use the CyberSource simulator to test your interface with the CyberSource services. Send
a real-time bank transfer request to CyberSource and make sure that you receive a realtime bank transfer reply from CyberSource.
Do not use the URL that CyberSource returns to you in the reply message
during this stage of testing. It is not a valid URL.
Important
Global Payment Service Developer Guide | March 2015
151
Chapter 11
Testing
Testing Your Network Interface
This stage of testing is available only for the real-time bank transfer networks in
the following table.
Note
The purpose of network testing is to verify that you can redirect your customer’s browser
to the network.
Table 44
Network Testing for Real-Time Bank Transfers
Network
Description
eNets
It is not necessary to use special test account details for testing.
The test payment pages are identical to the production version.
Only DBS provides a valid test link; the other test links are
down most of the time.
GiroPay (Germany)
The test page is available only in German. Special test cases
are available. The test payment page is not identical to the
production version. The test payment page provides a way to
test the different flows.
iDEAL (Netherlands)
Special test cases are available. The test payment pages are
not identical to the production version. Only a subset of the
different flows can be tested.
Nordea e-betaling (Denmark)
Payment pages are available only in Danish. The test payment
pages are not identical to the production version. Only a subset
of the various flows can be tested.
Nordea e-betalning (Sweden)
Payment pages are available only in Swedish. The test
payment pages are not identical to the production version. Only
a subset of the various flows can be tested.
Nordea e-maksu (Finland)
Payment pages are available only in Finnish. The test payment
pages are not identical to the production version. Only a subset
of the various flows can be tested.
To test your network interface:
Step 1
Contact Customer Support to have your connection switched to the network’s simulator.
Step 2
Set up a test customer that consists of a browser that interfaces with your shopping cart.
Step 3
Simulate the customer experience by having your test customer initiate a real-time bank
transfer payment.
Step 4
When you receive this customer message, send a real-time bank transfer request to
CyberSource.
Step 5
When you receive the real-time bank transfer reply from CyberSource, redirect the test
customer to the network by using the URL in the reply message.
Global Payment Service Developer Guide | March 2015
152
Chapter 11
Step 6
Testing
Using the test customer browser, verify that you have received a page from the network.
Going Live
After successfully testing your account, you must go live with CyberSource before you
begin accepting payments. When you go live, your CyberSource account is updated so
that you can send transactions to the CyberSource production server. If you have not
already done so, you will need to provide your payment processor and banking
information to CyberSource so that your processor can deposit funds to your merchant
bank account. For more information, see Getting Started with CyberSource Advanced for
the Simple Order API or Getting Started with CyberSource Advanced for the SCMP API.
Your production transactions will be available for you to view in the production version of
the Business Center:
https://ebc.cybersource.com
Global Payment Service Developer Guide | March 2015
153
APPENDIX
Product Codes
A
The following table lists the values that you can use for the product code. For the Simple
Order API, use the item_#_productCode request field to specify the product code. For
the SCMP API, use the product_code offer-level field.
Table 45
Product Code Values
Product Code
Definition
adult_content
Adult content.
coupon
Coupon applied to the entire order.
default
Default value for the product code. CyberSource uses default when a request
provides no value for the product code.
electronic_good
Electronic product other than software.
electronic_software
Software distributed electronically rather than on tapes, disks, or other media.
gift_certificate
Gift certificate not issued with CyberSource Stored Value Services.
handling_only
Separate charge that is generally a fee imposed by the seller on the customer.
The fee pays the seller’s administrative selling costs.
service
Service that you perform for the customer.
shipping_and_handling
Shipping is a separate charge for shipping the product to the purchaser. Handling
is generally a fee imposed by the seller to pay administrative selling costs.
shipping_only
Charge for transporting tangible personal property from the seller to the
purchaser. Documentation must be maintained that clearly establishes where title
to the tangible personal property passed from the seller to the purchaser.
subscription
Subscription to a web site or other content.
Global Payment Service Developer Guide | March 2015
154
APPENDIX
Reason Codes
B
Reason Codes for the Simple
Order API
These reason codes apply only if you use the Simple Order API. The reason code
appears in the reply that you receive immediately after you request the service. See
Getting Started with CyberSource Advanced for the Simple Order API for a discussion of
replies, decisions, and reason codes.
Note
Table 46
CyberSource reserves the right to add new reason codes at any time. If your
error handler receives a reason code that it does not recognize, it should use
the decision field to obtain the result.
Reason Codes for the Simple Order API
Reason
Code
Description
100
Successful transaction.
101
The request is missing one or more required fields.
See the reply fields missingField_0...N. Resend the request with the complete
information. For more information about missing and invalid fields, see Getting
Started with CyberSource Advanced for the Simple Order API.
102
One or more fields in the request contain invalid data.
See the reply fields invalidField_0...N. Resend the request with the correct
information. For more information about missing and invalid fields, see Getting
Started with CyberSource Advanced for the Simple Order API.
150
General system failure.
See the documentation for your CyberSource client for information on handling
retries in the case of system errors.
Global Payment Service Developer Guide | March 2015
155
Appendix B
Table 46
Reason Codes
Reason Codes for the Simple Order API (Continued)
Reason
Code
Description
151
The request was received but a server time-out occurred. This error does not
include time-outs between the client and the server.
To avoid duplicating the transaction, do not resend the request until you have
reviewed the transaction status in the Business Center. See the documentation for
your CyberSource client for information on handling retries in the case of system
errors.
152
The request was received, but a service timed out.
To avoid duplicating the transaction, do not resend the request until you have
reviewed the transaction status in the Business Center. See the documentation for
your CyberSource client for information on handling retries in the case of system
errors.
231
Invalid account number.
Request a different form of payment.
233
General decline by the processor.
Request a different form of payment.
234
A problem exists with your CyberSource merchant configuration.
Do not resend the request. Contact Customer Support to correct the configuration
problem.
236
Processor failure.
Wait a few minutes and resend the request.
239
The requested transaction amount must match the previous transaction amount.
Correct the amount and resend the request.
241
The request ID is invalid.
Verify the request ID is correct.
244
The bank account number failed the validation check.
Verify with the customer that the account number is correct; if it was incorrect,
request the service again with the corrected information.
248
When CyberSource sent a Boleto Bancário request to CyberSource Latin American
Processing, the processor returned an error to CyberSource.
250
The request was received, but a time-out occurred with the payment processor.
To avoid duplicating the transaction, do not resend the request until you have
reviewed the transaction status in the Business Center.
254
Your CyberSource account is prohibited from processing stand-alone refunds.
In the refund request, provide the requestID of the payment to create a follow-on
refund. If you want to process stand-alone refunds, contact your CyberSource
account representative.
Global Payment Service Developer Guide | March 2015
156
Appendix B
Table 46
Reason Codes
Reason Codes for the Simple Order API (Continued)
Reason
Code
Description
255
Your CyberSource account is not configured to process the service in the country
you specified.
If this is a bank transfer or bank transfer refund, check the billTo_country value and
bankInfo_country value to make sure they are set to the correct country (if it is a
direct debit, check bankInfo_country). If you want to process the service in a
country for which you are not configured, contact your CyberSource account
representative.
Global Payment Service Developer Guide | March 2015
157
APPENDIX
Researching a Missing Bank
Transfer Payment
C
This appendix explains how to submit an inquiry in the Business Center to research a
missing bank transfer payment. For additional information, see:

Simple Order API—"Researching a Missing Payment," page 17

SCMP API—"Researching a Missing Payment," page 35
Note
Wait at least five days after funds are debited from a customer’s account before
initiating an inquiry because it can take that long for funds to appear in your
account and in CyberSource’s reports. CyberSource does not allow you to
perform an inquiry within five days of submitting the initial bank transfer
request.
If your user permissions in the Business Center are limited to only read
access for the Support Screens, you cannot research a missing payment. You
must have additional access permissions. Contact your Business Center
administrator to change your access level.
Before making the inquiry, you must obtain the following items:

Information about the bank account that the customer used to make the payment,
including the name of the bank, the name on the customer’s account, and the account
number.

The date that the funds were debited from the customer’s account.

A digital copy of a document that shows that the customer initiated the bank transfer
(for example, a scanned bank statement or a screen shot of an online banking
statement showing the payment).
Global Payment Service Developer Guide | March 2015
158
Appendix C
Researching a Missing Bank Transfer Payment
To research a missing payment:
Step 1
Log in to the Business Center and search for the bank transfer transaction.
Step 2
View the transaction’s details.
If at least three days have passed since you sent the bank transfer request, Research
Lost Payment appears as an available action.
Step 3
Click Research Lost Payment.
The Research Lost Payment page opens. Part of the form is already filled out with the
original transaction information that CyberSource has.
Global Payment Service Developer Guide | March 2015
159
Appendix C
Researching a Missing Bank Transfer Payment
Step 4
In the Merchant Information section, enter your contact information. CyberSource uses
this information to contact you if more information is needed.
Step 5
In the Customer’s Bank Information section, enter the customer’s bank’s information and
the payment date (the date that the funds were debited from the customer’s account). The
required fields are in bold.
Step 6
In the Attachment field, attach the scanned copy of the customer’s bank statement or
whatever proof the customer has to show that they made the payment.
Step 7
In the Other Information field, include any other information that might help CyberSource
research the missing payment.
Step 8
Click Submit to submit the information to CyberSource.
A confirmation page opens, and the transaction details are updated to show that you have
made a payment inquiry.
Customer Support receives the inquiry information and contacts the processor to
determine whether the processor received the payment. One of two things happens within
several business days:

The processor uses the inquiry information to match the payment to the original bank
transfer request. Confirmation of the bank transfer payment then automatically
appears in the Payment Events Report. The transaction details screen in the Business
Center is also updated to show that the bank transfer has been paid. CyberSource
does not contact you by email or phone to give you the results, so you should monitor
the Payment Events Report or the transaction’s details in the Business Center.

If the processor is unable to find or match the funds to the original bank transfer
request, CyberSource contacts you by email or phone.
Global Payment Service Developer Guide | March 2015
160
INDEX
Index
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B
bank account validation
bank transfer refunds
SCMP API 35
Simple Order API 17
direct debit refunds
SCMP API 134
Simple Order API 117
direct debits
SCMP API 132
Simple Order API 116
bank transfer refunds
SCMP API 34
Simple Order API 16
bank transfers
and bank transfer refunds
SCMP API 33
Simple Order API 15
examples
SCMP API 46
Simple Order API 28
requesting
SCMP API 33
Simple Order API 15
unpaid 158
SCMP API 90
Simple Order API 84
reports
Boleto Bancário Unfulfilled Report 96
Single Transaction Report 112
requesting
SCMP API 90
Simple Order API 84
C
check reference numbers 13
coupons 154
D
date and time format
Simple Order API 27
direct debit refunds
SCMP API 133
Simple Order API 116
bankTransferRefundService 16
direct debits
and direct debit refunds
SCMP API 132
Simple Order API 115
examples
SCMP API 95
Simple Order API 88, 128, 145
requesting
SCMP API 132
Simple Order API 115
bankTransferService 15
directDebitRefundService 116
boletoPaymentService 84
directDebitService 115
bank transfers, real-time. See real-time bank
transfers
bankTransferRealTimeService 54
Boletos Bancários
description of
Global Payment Service Developer Guide | March 2015
161
Index
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
E
examples
bank transfers
SCMP API 46
Simple Order API 28
direct debits
SCMP API 95
Simple Order API 88, 128, 145
on-demand queries for failed payments
SCMP API 70
Simple Order API 54
on-demand queries for successful payments
SCMP API 69
Simple Order API 53
on-demand queries for transaction status
SCMP API 68
Simple Order API 52
real-time bank transfers
SCMP API 81
Simple Order API 64
F
follow-on refunds
for bank transfers
SCMP API 34
Simple Order API 16
for direct debits
SCMP API 133
Simple Order API 116
G
GMT format
Simple Order API 27
I
ics_bank_transfer 33
ics_bank_transfer_real_time 70
ics_bank_transfer_refund 34
ics_boleto_payment 90
ics_direct_debit 132
Global Payment Service Developer Guide | March 2015
ics_direct_debit_refund 133
M
missing payments, researching 17
O
on-demand queries
real-time bank transfers
SCMP API 67
Simple Order API 51
order tracking 13
P
POST requests
transaction statuses for
SCMP API 67
Simple Order API 51
processor transaction identifiers 13
product codes
listed 154
R
real-time bank transfers
examples
SCMP API 81
Simple Order API 64
examples of on-demand queries for failed
payments
SCMP API 70
Simple Order API 54
examples of on-demand queries for
successful payments
SCMP API 69
Simple Order API 53
examples of on-demand queries for
transaction status
SCMP API 68
Simple Order API 52
refunds
SCMP API 71
Simple Order API 55
162
Index
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
requesting
SCMP API 70
Simple Order API 54
transaction statuses
SCMP API 67
Simple Order API 51
reason codes
listed 155
SCMP API 134
Simple Order API 117
transaction reference numbers 13
U
UTC format
Simple Order API 27
reconciliation IDs 13
refunds
bank transfers
SCMP API 34
Simple Order API 16
direct debits
SCMP API 133
Simple Order API 116
real-time bank transfers
SCMP API 71
Simple Order API 55
reports
Transaction Exception Detail Report
for bank transfers, SCMP API 35
for bank transfers, Simple Order API 17
for direct debits, SCMP API 134
for direct debits, Simple Order API 117
request IDs 13
S
statuses of real-time bank transfers
SCMP API 67
Simple Order API 51
T
test server 149
time format
Simple Order API 27
Transaction Exception Detail Report
for bank transfers
SCMP API 35
Simple Order API 17
for direct debits
Global Payment Service Developer Guide | March 2015
163