Contents

GET /aml/$OFFICER_PUB/transfers-credit#
GET /aml/$OFFICER_PUB/transfers-debit#
GET /aml/$OFFICER_PUB/transfers-kycauth#

Obtain exchange’s bank account wire transfer history data. Shows effective incoming wire transfers (credit), incoming wire transfers for KYC authorization (kycauth), or effective outgoing (aggregated, closed) wire transfers (debit). Note that bounced incoming wire transfers and drain outgoing wire transfers requests are excluded (as they are not relevant for AML processes and would just distract). The wire transfer subject is also not given as in all cases it will just be some cryptographic data that is meaningless for humans.

The first two endpoints were introduced in protocol v25. transfers-kycauth was added in protocol v29.

Request:

Taler-AML-Officer-Signature:

The client must provide Base-32 encoded EdDSA signature with $OFFICER_PRIV, affirming the desire to obtain AML data. Note that this is merely a simple authentication mechanism, the details of the request are not protected by the signature.

Query Parameters:
  • thresholdOptional. minimum amount (“CURRENCY:VAL.FRAC”) to return. All amounts below the given threshold will be filtered.

  • limitOptional. takes value of the form N (-N), so that at most N values strictly older (younger) than start are returned. Defaults to -20 to return the last 20 entries (before start).

  • offsetOptional. Row number threshold, see delta for its interpretation. Defaults to INT64_MAX, namely the biggest row id possible in the database.

  • h_paytoOptional. Account selector using the normalized payto URI. Information for all accounts is returned if this filter is absent, otherwise only transactions for this account. @since protocol v29.

Response:

200 OK:

The responds will be an ExchangeTransferList message.

204 No content:

There are no matching transactions.

403 Forbidden:

The signature is invalid.

404 Not found:

The designated AML account is not known.

409 Conflict:

The designated AML account is not enabled.

interface ExchangeTransferList {

  // Matching transaction of the exchange
  transfers: ExchangeTransferListEntry[];

}
interface ExchangeTransferListEntry {

  // Row ID of the record.  Used to filter by offset.
  rowid: Integer;

  // payto://-URI of the other account.
  payto_uri: string;

  // The amount involved.
  amount: Amount;

  // Time when the transfer was made
  execution_time: Timestamp;

}